private SAXConnector getUnmarshallerHandler( boolean intern, JaxBeanInfo expectedType ) { XmlVisitor h = createUnmarshallerHandler(null, false, expectedType); if (intern) { h = new InterningXmlVisitor(h); } return new SAXConnector(h,null); }
@Override public final void ignorableWhitespace( char[] buf, int start, int len ) { if (logger.isLoggable(Level.FINEST)) { logger.log(Level.FINEST, "SAXConnector.characters{0}", buf); } characters(buf,start,len); }
Object result = connector.getResult();
@Override public void endElement(String uri, String localName, String qName) throws SAXException { if (logger.isLoggable(Level.FINER)) { logger.log(Level.FINER, "SAXConnector.startElement: {0}:{1}:{2}", new Object[]{uri, localName, qName}); } processText(false); tagName.uri = uri; tagName.local = localName; tagName.qname = qName; next.endElement(tagName); }
@Override public void startElement(String uri, String local, String qname, Attributes atts) throws SAXException { if (logger.isLoggable(Level.FINER)) { logger.log(Level.FINER, "SAXConnector.startElement: {0}:{1}:{2}, attrs: {3}", new Object[]{uri, local, qname, atts}); } // work gracefully with misconfigured parsers that don't support namespaces if( uri==null || uri.length()==0 ) uri=""; if( local==null || local.length()==0 ) local=qname; if( qname==null || qname.length()==0 ) qname=local; processText(!context.getCurrentState().isMixed()); tagName.uri = uri; tagName.local = local; tagName.qname = qname; tagName.atts = atts; next.startElement(tagName); }
public final Object unmarshal0( Node node, JaxBeanInfo expectedType ) throws JAXBException { try { final DOMScanner scanner = new DOMScanner(); InterningXmlVisitor handler = new InterningXmlVisitor(createUnmarshallerHandler(null,false,expectedType)); scanner.setContentHandler(new SAXConnector(handler,scanner)); if(node.getNodeType() == Node.ELEMENT_NODE) { scanner.scan((Element)node); } else if(node.getNodeType() == Node.DOCUMENT_NODE) { scanner.scan((Document)node); } else { throw new IllegalArgumentException("Unexpected node type: "+node); } Object retVal = handler.getContext().getResult(); handler.getContext().clearResult(); return retVal; } catch( SAXException e ) { throw createUnmarshalException(e); } }
@Override public void endElement(String uri, String localName, String qName) throws SAXException { if (logger.isLoggable(Level.FINER)) { logger.log(Level.FINER, "SAXConnector.startElement: {0}:{1}:{2}", new Object[]{uri, localName, qName}); } processText(false); tagName.uri = uri; tagName.local = localName; tagName.qname = qName; next.endElement(tagName); }
@Override public final void ignorableWhitespace( char[] buf, int start, int len ) { if (logger.isLoggable(Level.FINEST)) { logger.log(Level.FINEST, "SAXConnector.characters{0}", buf); } characters(buf,start,len); }
Object result = connector.getResult();
private Object associativeUnmarshal(XmlNode xmlNode, boolean inplace, Class expectedType) throws JAXBException { if (xmlNode == null) throw new IllegalArgumentException(); JaxBeanInfo bi = null; if(expectedType!=null) bi = context.getBeanInfo(expectedType, true); InterningXmlVisitor handler = new InterningXmlVisitor( getUnmarshaller().createUnmarshallerHandler(scanner,inplace,bi)); scanner.setContentHandler(new SAXConnector(handler,scanner.getLocator())); try { scanner.scan(xmlNode); } catch( SAXException e ) { throw unmarshaller.createUnmarshalException(e); } return handler.getContext().getResult(); }
@Override public void startElement(String uri, String local, String qname, Attributes atts) throws SAXException { if (logger.isLoggable(Level.FINER)) { logger.log(Level.FINER, "SAXConnector.startElement: {0}:{1}:{2}, attrs: {3}", new Object[]{uri, local, qname, atts}); } // work gracefully with misconfigured parsers that don't support namespaces if( uri==null || uri.length()==0 ) uri=""; if( local==null || local.length()==0 ) local=qname; if( qname==null || qname.length()==0 ) qname=local; processText(!context.getCurrentState().isMixed()); tagName.uri = uri; tagName.local = local; tagName.qname = qname; tagName.atts = atts; next.startElement(tagName); }
@Override public final void ignorableWhitespace( char[] buf, int start, int len ) { if (logger.isLoggable(Level.FINEST)) { logger.log(Level.FINEST, "SAXConnector.characters{0}", buf); } characters(buf,start,len); }
Object result = connector.getResult();
private SAXConnector getUnmarshallerHandler( boolean intern, JaxBeanInfo expectedType ) { XmlVisitor h = createUnmarshallerHandler(null, false, expectedType); if (intern) { h = new InterningXmlVisitor(h); } return new SAXConnector(h,null); }
@Override public void endElement(String uri, String localName, String qName) throws SAXException { if (logger.isLoggable(Level.FINER)) { logger.log(Level.FINER, "SAXConnector.startElement: {0}:{1}:{2}", new Object[]{uri, localName, qName}); } processText(false); tagName.uri = uri; tagName.local = localName; tagName.qname = qName; next.endElement(tagName); }
@Override public final void ignorableWhitespace( char[] buf, int start, int len ) { if (logger.isLoggable(Level.FINEST)) { logger.log(Level.FINEST, "SAXConnector.characters{0}", buf); } characters(buf,start,len); }
Object result = connector.getResult();
public final Object unmarshal0( Node node, JaxBeanInfo expectedType ) throws JAXBException { try { final DOMScanner scanner = new DOMScanner(); InterningXmlVisitor handler = new InterningXmlVisitor(createUnmarshallerHandler(null,false,expectedType)); scanner.setContentHandler(new SAXConnector(handler,scanner)); if(node.getNodeType() == Node.ELEMENT_NODE) { scanner.scan((Element)node); } else if(node.getNodeType() == Node.DOCUMENT_NODE) { scanner.scan((Document)node); } else { throw new IllegalArgumentException("Unexpected node type: "+node); } Object retVal = handler.getContext().getResult(); handler.getContext().clearResult(); return retVal; } catch( SAXException e ) { throw createUnmarshalException(e); } }
@Override public void endElement(String uri, String localName, String qName) throws SAXException { if (logger.isLoggable(Level.FINER)) { logger.log(Level.FINER, "SAXConnector.startElement: {0}:{1}:{2}", new Object[]{uri, localName, qName}); } processText(false); tagName.uri = uri; tagName.local = localName; tagName.qname = qName; next.endElement(tagName); }
private Object associativeUnmarshal(XmlNode xmlNode, boolean inplace, Class expectedType) throws JAXBException { if (xmlNode == null) throw new IllegalArgumentException(); JaxBeanInfo bi = null; if(expectedType!=null) bi = context.getBeanInfo(expectedType, true); InterningXmlVisitor handler = new InterningXmlVisitor( getUnmarshaller().createUnmarshallerHandler(scanner,inplace,bi)); scanner.setContentHandler(new SAXConnector(handler,scanner.getLocator())); try { scanner.scan(xmlNode); } catch( SAXException e ) { throw unmarshaller.createUnmarshalException(e); } return handler.getContext().getResult(); }