List of usage examples for javax.xml.stream XMLStreamReader getPrefix
public String getPrefix();
From source file:com.prowidesoftware.swift.io.parser.MxParser.java
/** * Convenient API to get structure information from an MX message. * <br ><br>/*from ww w.j a va 2 s . com*/ * This can be helpful when the actual content of an XML is unknown and * some preprocessing of the XML must be done in order to parse or * validate its content properly. * <br > * The implementation is intended to be lightweight and efficient, based on {@link javax.xml.stream.XMLStreamReader} * * @since 7.8.4 */ public MxStructureInfo analizeMessage() { if (this.info != null) { return this.info; } this.info = new MxStructureInfo(); if (StringUtils.isBlank(this.buffer)) { log.log(Level.WARNING, "cannot analize message from null or empty content"); return this.info; } final javax.xml.stream.XMLInputFactory xif = javax.xml.stream.XMLInputFactory.newInstance(); try { final javax.xml.stream.XMLStreamReader reader = xif .createXMLStreamReader(new StringReader(this.buffer)); boolean first = true; while (reader.hasNext()) { int event = reader.next(); if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event) { if (reader.getLocalName().equals(DOCUMENT_LOCALNAME)) { this.info.containsDocument = true; this.info.documentNamespace = readNamespace(reader); this.info.documentPrefix = StringUtils.trimToNull(reader.getPrefix()); } else if (reader.getLocalName().equals(HEADER_LOCALNAME)) { this.info.containsHeader = true; this.info.headerNamespace = readNamespace(reader); this.info.headerPrefix = StringUtils.trimToNull(reader.getPrefix()); } else if (first) { this.info.containsWrapper = true; } first = false; } } } catch (final Exception e) { log.log(Level.SEVERE, "error while analizing message: " + e.getMessage()); info.exception = e; } return this.info; }
From source file:de.uzk.hki.da.model.ObjectPremisXmlWriter.java
/** * Integrate jhove data.//w ww. j a v a2 s . c om * * @param jhoveFilePath the jhove file path * @param tab the tab * @throws XMLStreamException the xML stream exception * @author Thomas Kleinke * @throws FileNotFoundException */ private void integrateJhoveData(String jhoveFilePath, int tab) throws XMLStreamException, FileNotFoundException { File jhoveFile = new File(jhoveFilePath); if (!jhoveFile.exists()) throw new FileNotFoundException("file does not exist. " + jhoveFile); FileInputStream inputStream = null; inputStream = new FileInputStream(jhoveFile); XMLInputFactory inputFactory = XMLInputFactory.newInstance(); XMLStreamReader streamReader = inputFactory.createXMLStreamReader(inputStream); boolean textElement = false; while (streamReader.hasNext()) { int event = streamReader.next(); switch (event) { case XMLStreamConstants.START_ELEMENT: writer.writeDTD("\n"); indent(tab); tab++; String prefix = streamReader.getPrefix(); if (prefix != null && !prefix.equals("")) { writer.setPrefix(prefix, streamReader.getNamespaceURI()); writer.writeStartElement(streamReader.getNamespaceURI(), streamReader.getLocalName()); } else writer.writeStartElement(streamReader.getLocalName()); for (int i = 0; i < streamReader.getNamespaceCount(); i++) writer.writeNamespace(streamReader.getNamespacePrefix(i), streamReader.getNamespaceURI(i)); for (int i = 0; i < streamReader.getAttributeCount(); i++) { QName qname = streamReader.getAttributeName(i); String attributeName = qname.getLocalPart(); String attributePrefix = qname.getPrefix(); if (attributePrefix != null && !attributePrefix.equals("")) attributeName = attributePrefix + ":" + attributeName; writer.writeAttribute(attributeName, streamReader.getAttributeValue(i)); } break; case XMLStreamConstants.CHARACTERS: if (!streamReader.isWhiteSpace()) { writer.writeCharacters(streamReader.getText()); textElement = true; } break; case XMLStreamConstants.END_ELEMENT: tab--; if (!textElement) { writer.writeDTD("\n"); indent(tab); } writer.writeEndElement(); textElement = false; break; default: break; } } streamReader.close(); try { inputStream.close(); } catch (IOException e) { throw new RuntimeException("Failed to close input stream", e); } }
From source file:com.prowidesoftware.swift.io.parser.MxParser.java
/** * Takes an xml with an MX message and detects the specific message type * parsing just the namespace from the Document element. If the Document * element is not present, or without the namespace or if the namespace url * contains invalid content it will return null. * <br><br>//ww w . java 2 s . co m * Example of a recognizable Document element:<br> * <Doc:Document xmlns:Doc="urn:swift:xsd:camt.003.001.04" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> * <br> * The implementation is intended to be lightweight and efficient, based on {@link javax.xml.stream.XMLStreamReader} * * @return id with the detected MX message type or null if it cannot be determined. * @since 7.7 */ public MxId detectMessage() { if (StringUtils.isBlank(this.buffer)) { log.log(Level.SEVERE, "cannot detect message from null or empty content"); return null; } final javax.xml.stream.XMLInputFactory xif = javax.xml.stream.XMLInputFactory.newInstance(); try { final javax.xml.stream.XMLStreamReader reader = xif .createXMLStreamReader(new StringReader(this.buffer)); while (reader.hasNext()) { int event = reader.next(); if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event && reader.getLocalName().equals(DOCUMENT_LOCALNAME)) { if (reader.getNamespaceCount() > 0) { //log.finest("ELEMENT START: " + reader.getLocalName() + " , namespace count is: " + reader.getNamespaceCount()); for (int nsIndex = 0; nsIndex < reader.getNamespaceCount(); nsIndex++) { final String nsPrefix = StringUtils.trimToNull(reader.getNamespacePrefix(nsIndex)); final String elementPrefix = StringUtils.trimToNull(reader.getPrefix()); if (StringUtils.equals(nsPrefix, elementPrefix)) { String nsId = reader.getNamespaceURI(nsIndex); //log.finest("\tNamepsace prefix: " + nsPrefix + " associated with URI " + nsId); return new MxId(nsId); } } } } } } catch (final Exception e) { log.log(Level.SEVERE, "error while detecting message", e); } return null; }
From source file:de.uzk.hki.da.cb.CreatePremisAction.java
/** * Accepts a premis.xml file and creates a new xml file for each jhove section * //from ww w . j a v a 2 s . c o m * @author Thomas Kleinke * Extract jhove data. * * @param premisFilePath the premis file path * @param outputFolder the output folder * @throws XMLStreamException the xML stream exception */ public void extractJhoveData(String premisFilePath, String outputFolder) throws XMLStreamException { outputFolder += "/premis_output/"; FileInputStream inputStream = null; try { inputStream = new FileInputStream(premisFilePath); } catch (FileNotFoundException e) { throw new RuntimeException("Couldn't find file " + premisFilePath, e); } XMLInputFactory inputFactory = XMLInputFactory.newInstance(); XMLStreamReader streamReader = inputFactory.createXMLStreamReader(inputStream); boolean textElement = false; boolean jhoveSection = false; boolean objectIdentifierValue = false; int tab = 0; String fileId = ""; while (streamReader.hasNext()) { int event = streamReader.next(); switch (event) { case XMLStreamConstants.START_ELEMENT: if (streamReader.getLocalName().equals("jhove")) { jhoveSection = true; String outputFilePath = outputFolder + fileId.replace('/', '_').replace('.', '_') + ".xml"; if (!new File(outputFolder).exists()) new File(outputFolder).mkdirs(); writer = startNewDocument(outputFilePath); } if (streamReader.getLocalName().equals("objectIdentifierValue")) objectIdentifierValue = true; if (jhoveSection) { writer.writeDTD("\n"); indent(tab); tab++; String prefix = streamReader.getPrefix(); if (prefix != null && !prefix.equals("")) { writer.setPrefix(prefix, streamReader.getNamespaceURI()); writer.writeStartElement(streamReader.getNamespaceURI(), streamReader.getLocalName()); } else writer.writeStartElement(streamReader.getLocalName()); for (int i = 0; i < streamReader.getNamespaceCount(); i++) writer.writeNamespace(streamReader.getNamespacePrefix(i), streamReader.getNamespaceURI(i)); for (int i = 0; i < streamReader.getAttributeCount(); i++) { QName qname = streamReader.getAttributeName(i); String attributeName = qname.getLocalPart(); String attributePrefix = qname.getPrefix(); if (attributePrefix != null && !attributePrefix.equals("")) attributeName = attributePrefix + ":" + attributeName; writer.writeAttribute(attributeName, streamReader.getAttributeValue(i)); } } break; case XMLStreamConstants.CHARACTERS: if (objectIdentifierValue) { fileId = streamReader.getText(); objectIdentifierValue = false; } if (jhoveSection && !streamReader.isWhiteSpace()) { writer.writeCharacters(streamReader.getText()); textElement = true; } break; case XMLStreamConstants.END_ELEMENT: if (jhoveSection) { tab--; if (!textElement) { writer.writeDTD("\n"); indent(tab); } writer.writeEndElement(); textElement = false; if (streamReader.getLocalName().equals("jhove")) { jhoveSection = false; finalizeDocument(); } } break; case XMLStreamConstants.END_DOCUMENT: streamReader.close(); try { inputStream.close(); } catch (IOException e) { throw new RuntimeException("Failed to close input stream", e); } break; default: break; } } }
From source file:org.activiti.bpmn.converter.BaseBpmnXMLConverter.java
@SuppressWarnings("unchecked") protected ExtensionElement parseExtensionElement(XMLStreamReader xtr) throws Exception { ExtensionElement extensionElement = new ExtensionElement(); extensionElement.setName(xtr.getLocalName()); if (StringUtils.isNotEmpty(xtr.getNamespaceURI())) { extensionElement.setNamespace(xtr.getNamespaceURI()); }//from w w w .j av a 2 s. c om if (StringUtils.isNotEmpty(xtr.getPrefix())) { extensionElement.setNamespacePrefix(xtr.getPrefix()); } BpmnXMLUtil.addCustomAttributes(xtr, extensionElement, defaultElementAttributes); boolean readyWithExtensionElement = false; while (readyWithExtensionElement == false && xtr.hasNext()) { xtr.next(); if (xtr.isCharacters()) { if (StringUtils.isNotEmpty(xtr.getText().trim())) { extensionElement.setElementText(xtr.getText().trim()); } } else if (xtr.isStartElement()) { ExtensionElement childExtensionElement = parseExtensionElement(xtr); extensionElement.addChildElement(childExtensionElement); } else if (xtr.isEndElement() && extensionElement.getName().equalsIgnoreCase(xtr.getLocalName())) { readyWithExtensionElement = true; } } return extensionElement; }
From source file:org.activiti.dmn.converter.util.DmnXMLUtil.java
public static DmnExtensionElement parseExtensionElement(XMLStreamReader xtr) throws Exception { DmnExtensionElement extensionElement = new DmnExtensionElement(); extensionElement.setName(xtr.getLocalName()); if (StringUtils.isNotEmpty(xtr.getNamespaceURI())) { extensionElement.setNamespace(xtr.getNamespaceURI()); }//from w w w . ja v a 2 s .c o m if (StringUtils.isNotEmpty(xtr.getPrefix())) { extensionElement.setNamespacePrefix(xtr.getPrefix()); } for (int i = 0; i < xtr.getAttributeCount(); i++) { DmnExtensionAttribute extensionAttribute = new DmnExtensionAttribute(); extensionAttribute.setName(xtr.getAttributeLocalName(i)); extensionAttribute.setValue(xtr.getAttributeValue(i)); if (StringUtils.isNotEmpty(xtr.getAttributeNamespace(i))) { extensionAttribute.setNamespace(xtr.getAttributeNamespace(i)); } if (StringUtils.isNotEmpty(xtr.getAttributePrefix(i))) { extensionAttribute.setNamespacePrefix(xtr.getAttributePrefix(i)); } extensionElement.addAttribute(extensionAttribute); } boolean readyWithExtensionElement = false; while (readyWithExtensionElement == false && xtr.hasNext()) { xtr.next(); if (xtr.isCharacters() || XMLStreamReader.CDATA == xtr.getEventType()) { if (StringUtils.isNotEmpty(xtr.getText().trim())) { extensionElement.setElementText(xtr.getText().trim()); } } else if (xtr.isStartElement()) { DmnExtensionElement childExtensionElement = parseExtensionElement(xtr); extensionElement.addChildElement(childExtensionElement); } else if (xtr.isEndElement() && extensionElement.getName().equalsIgnoreCase(xtr.getLocalName())) { readyWithExtensionElement = true; } } return extensionElement; }
From source file:org.apache.axiom.om.impl.serialize.StreamingOMSerializer.java
/** * @param reader/*from w ww .j ava 2 s. co m*/ * @param writer * @throws XMLStreamException */ protected void serializeElement(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { // Note: To serialize the start tag, we must follow the order dictated by the JSR-173 (StAX) specification. // Please keep this code in sync with the code in OMSerializerUtil.serializeStartpart // The algorithm is: // ... generate writeStartElement // // ... generate setPrefix/setDefaultNamespace for each namespace declaration if the prefix is unassociated. // ... generate setPrefix/setDefaultNamespace if the prefix of the element is unassociated // ... generate setPrefix/setDefaultNamespace for each unassociated prefix of the attributes. // // ... generate writeNamespace/writerDefaultNamespace for the new namespace declarations determine during the "set" processing // ... generate writeAttribute for each attribute ArrayList writePrefixList = null; ArrayList writeNSList = null; // Get the prefix and namespace of the element. "" and null are identical. String ePrefix = reader.getPrefix(); ePrefix = (ePrefix != null && ePrefix.length() == 0) ? null : ePrefix; String eNamespace = reader.getNamespaceURI(); eNamespace = (eNamespace != null && eNamespace.length() == 0) ? null : eNamespace; // Write the startElement if required if (eNamespace != null) { if (ePrefix == null) { if (!OMSerializerUtil.isAssociated("", eNamespace, writer)) { if (writePrefixList == null) { writePrefixList = new ArrayList(); writeNSList = new ArrayList(); } writePrefixList.add(""); writeNSList.add(eNamespace); } writer.writeStartElement("", reader.getLocalName(), eNamespace); } else { if (!OMSerializerUtil.isAssociated(ePrefix, eNamespace, writer)) { if (writePrefixList == null) { writePrefixList = new ArrayList(); writeNSList = new ArrayList(); } writePrefixList.add(ePrefix); writeNSList.add(eNamespace); } writer.writeStartElement(ePrefix, reader.getLocalName(), eNamespace); } } else { writer.writeStartElement(reader.getLocalName()); } // Generate setPrefix for the namespace declarations int count = reader.getNamespaceCount(); for (int i = 0; i < count; i++) { String prefix = reader.getNamespacePrefix(i); prefix = (prefix != null && prefix.length() == 0) ? null : prefix; String namespace = reader.getNamespaceURI(i); namespace = (namespace != null && namespace.length() == 0) ? null : namespace; String newPrefix = OMSerializerUtil.generateSetPrefix(prefix, namespace, writer, false); // If this is a new association, remember it so that it can written out later if (newPrefix != null) { if (writePrefixList == null) { writePrefixList = new ArrayList(); writeNSList = new ArrayList(); } if (!writePrefixList.contains(newPrefix)) { writePrefixList.add(newPrefix); writeNSList.add(namespace); } } } // Generate setPrefix for the element // If the prefix is not associated with a namespace yet, remember it so that we can // write out a namespace declaration String newPrefix = OMSerializerUtil.generateSetPrefix(ePrefix, eNamespace, writer, false); // If this is a new association, remember it so that it can written out later if (newPrefix != null) { if (writePrefixList == null) { writePrefixList = new ArrayList(); writeNSList = new ArrayList(); } if (!writePrefixList.contains(newPrefix)) { writePrefixList.add(newPrefix); writeNSList.add(eNamespace); } } // Now Generate setPrefix for each attribute count = reader.getAttributeCount(); for (int i = 0; i < count; i++) { String prefix = reader.getAttributePrefix(i); prefix = (prefix != null && prefix.length() == 0) ? null : prefix; String namespace = reader.getAttributeNamespace(i); namespace = (namespace != null && namespace.length() == 0) ? null : namespace; // Default prefix referencing is not allowed on an attribute if (prefix == null && namespace != null) { String writerPrefix = writer.getPrefix(namespace); writerPrefix = (writerPrefix != null && writerPrefix.length() == 0) ? null : writerPrefix; prefix = (writerPrefix != null) ? writerPrefix : generateUniquePrefix(writer.getNamespaceContext()); } newPrefix = OMSerializerUtil.generateSetPrefix(prefix, namespace, writer, true); // If the prefix is not associated with a namespace yet, remember it so that we can // write out a namespace declaration if (newPrefix != null) { if (writePrefixList == null) { writePrefixList = new ArrayList(); writeNSList = new ArrayList(); } if (!writePrefixList.contains(newPrefix)) { writePrefixList.add(newPrefix); writeNSList.add(namespace); } } } // Now Generate setPrefix for each prefix referenced in an xsi:type // For example xsi:type="p:dataType" // The following code will make sure that setPrefix is called for "p". count = reader.getAttributeCount(); for (int i = 0; i < count; i++) { String prefix = reader.getAttributePrefix(i); prefix = (prefix != null && prefix.length() == 0) ? null : prefix; String namespace = reader.getAttributeNamespace(i); namespace = (namespace != null && namespace.length() == 0) ? null : namespace; String localName = reader.getAttributeLocalName(i); if (XSI_URI.equals(namespace) && XSI_LOCAL_NAME.equals(localName)) { String value = reader.getAttributeValue(i); if (DEBUG_ENABLED) { log.debug("The value of xsi:type is " + value); } if (value != null) { value = value.trim(); if (value.indexOf(":") > 0) { String refPrefix = value.substring(0, value.indexOf(":")); String refNamespace = reader.getNamespaceURI(refPrefix); if (refNamespace != null && refNamespace.length() > 0) { newPrefix = OMSerializerUtil.generateSetPrefix(refPrefix, refNamespace, writer, true); // If the prefix is not associated with a namespace yet, remember it so that we can // write out a namespace declaration if (newPrefix != null) { if (DEBUG_ENABLED) { log.debug( "An xmlns:" + newPrefix + "=\"" + refNamespace + "\" will be written"); } if (writePrefixList == null) { writePrefixList = new ArrayList(); writeNSList = new ArrayList(); } if (!writePrefixList.contains(newPrefix)) { writePrefixList.add(newPrefix); writeNSList.add(refNamespace); } } } } } } } // Now write out the list of namespace declarations in this list that we constructed // while doing the "set" processing. if (writePrefixList != null) { for (int i = 0; i < writePrefixList.size(); i++) { String prefix = (String) writePrefixList.get(i); String namespace = (String) writeNSList.get(i); if (prefix != null) { if (namespace == null) { writer.writeNamespace(prefix, ""); } else { writer.writeNamespace(prefix, namespace); } } else { writer.writeDefaultNamespace(namespace); } } } // Now write the attributes count = reader.getAttributeCount(); for (int i = 0; i < count; i++) { String prefix = reader.getAttributePrefix(i); prefix = (prefix != null && prefix.length() == 0) ? null : prefix; String namespace = reader.getAttributeNamespace(i); namespace = (namespace != null && namespace.length() == 0) ? null : namespace; if (prefix == null && namespace != null) { // Default namespaces are not allowed on an attribute reference. // Earlier in this code, a unique prefix was added for this case...now obtain and use it prefix = writer.getPrefix(namespace); //XMLStreamWriter doesn't allow for getPrefix to know whether you're asking for the prefix //for an attribute or an element. So if the namespace matches the default namespace getPrefix will return //the empty string, as if it were an element, in all cases (even for attributes, and even if //there was a prefix specifically set up for this), which is not the desired behavior. //Since the interface is base java, we can't fix it where we need to (by adding an attr boolean to //XMLStreamWriter.getPrefix), so we hack it in here... if (prefix == null || "".equals(prefix)) { for (int j = 0; j < writePrefixList.size(); j++) { if (namespace.equals((String) writeNSList.get(j))) { prefix = (String) writePrefixList.get(j); } } } } else if (namespace != null && !prefix.equals("xml")) { // Use the writer's prefix if it is different, but if the writers // prefix is empty then do not replace because attributes do not // default to the default namespace like elements do. String writerPrefix = writer.getPrefix(namespace); if (!prefix.equals(writerPrefix) && !"".equals(writerPrefix)) { prefix = writerPrefix; } } if (namespace != null) { // Qualified attribute writer.writeAttribute(prefix, namespace, reader.getAttributeLocalName(i), reader.getAttributeValue(i)); } else { // Unqualified attribute writer.writeAttribute(reader.getAttributeLocalName(i), reader.getAttributeValue(i)); } } }
From source file:org.apache.axis2.datasource.jaxb.JAXBCustomBuilder.java
public OMElement create(String namespace, String localPart, OMContainer parent, XMLStreamReader reader, OMFactory factory) throws OMException { if (log.isDebugEnabled()) { log.debug("create namespace = " + namespace); log.debug(" localPart = " + localPart); log.debug(" reader = " + reader.getClass()); }// w ww.java 2 s .c om // There are some situations where we want to use normal // unmarshalling, so return null if (!shouldUnmarshal(namespace, localPart)) { JAXBCustomBuilderMonitor.updateTotalFailedCreates(); return null; } try { // Create an OMSourcedElement backed by an unmarshalled JAXB object OMNamespace ns = factory.createOMNamespace(namespace, reader.getPrefix()); Object jaxb = jdsContext.unmarshal(reader); if (log.isDebugEnabled()) { log.debug("Successfully unmarshalled jaxb object " + jaxb); } OMDataSource ds = new JAXBDataSource(jaxb, jdsContext); if (log.isDebugEnabled()) { log.debug("The JAXBDataSource is " + ds); } OMSourcedElement omse = factory.createOMElement(ds, localPart, ns); parent.addChild(omse); JAXBCustomBuilderMonitor.updateTotalCreates(); return omse; } catch (JAXBException e) { JAXBCustomBuilderMonitor.updateTotalFailedCreates(); throw new OMException(e); } }
From source file:org.apache.axis2.jaxws.context.listener.ParserInputStreamCustomBuilder.java
public OMElement create(String namespace, String localPart, OMContainer parent, XMLStreamReader reader, OMFactory factory) throws OMException { if (log.isDebugEnabled()) { log.debug("create namespace = " + namespace); log.debug(" localPart = " + localPart); log.debug(" reader = " + reader.getClass()); }/*from www . j av a2 s .c o m*/ if (!shouldUnmarshal(namespace, localPart)) { if (log.isDebugEnabled()) { log.debug("This element won't be unmarshalled with the custom builder"); } return null; } /* * 1) Use the the parser to fetch the inputStream * 2) Use the inputStream to create a DataSource, delay reading of content as much as you can. * 3) Use the OMFactory to create OMSourcedElement, OMSourcedElement is backed by ParsedEntityDataSource. */ try { ParsedEntityReaderFactory perf = (ParsedEntityReaderFactory) FactoryRegistry .getFactory(ParsedEntityReaderFactory.class); ParsedEntityReader entityReader = perf.getParsedEntityReader(); if (log.isDebugEnabled()) { log.debug("ParsedEntityReader = " + entityReader); } //Do not user custom builder if Parser does not have ability to read sub content. if (!entityReader.isParsedEntityStreamAvailable()) { if (log.isDebugEnabled()) { log.debug("ParsedEntityStream is not available, defaulting to normal build"); } return null; } // Create an OMSourcedElement backed by the ParsedData InputStream parsedStream = getPayloadContent(reader, entityReader); if (parsedStream == null) { //cant read content from EntityReader, returning null. if (log.isDebugEnabled()) { log.debug("Unable to read content from the entity reader, defaulting to normal build"); } return null; } HashMap<String, String> nsElementDecls = getElementNamespaceDeclarations(reader); HashMap<String, String> attrElementDecls = getElementAttributeDeclarations(reader); //read the payload. Lets move the parser forward. if (reader.hasNext()) { reader.next(); } if (namespace == null) { //lets look for ns in reader namespace = reader.getNamespaceURI(); if (namespace == null) { //still cant find the namespace, just set it to ""; namespace = ""; } } OMNamespace ns = factory.createOMNamespace(namespace, reader.getPrefix()); InputStream payload = ContextListenerUtils.createPayloadElement(parsedStream, ns, localPart, parent, nsElementDecls, attrElementDecls); ParserInputStreamDataSource ds = new ParserInputStreamDataSource(payload, encoding); OMSourcedElement om = null; if (parent instanceof SOAPHeader && factory instanceof SOAPFactory) { om = ((SOAPFactory) factory).createSOAPHeaderBlock(localPart, ns, ds); } else { om = factory.createOMElement(ds, localPart, ns); } //Add the new OMSourcedElement ot the parent parent.addChild(om); /* //Lets Mark the body as complete so Serialize calls dont fetch data from parser for body content. if(parent instanceof SOAPBodyImpl){ ((SOAPBodyImpl)parent).setComplete(true); } */ return om; } catch (OMException e) { throw e; } catch (Throwable t) { throw new OMException(t); } }
From source file:org.apache.axis2.jaxws.context.listener.ParserInputStreamCustomBuilder.java
public OMElement create(String namespace, String localPart, OMContainer parent, XMLStreamReader reader, OMFactory factory, InputStream payload) throws OMException { if (log.isDebugEnabled()) { log.debug("create namespace = " + namespace); log.debug(" localPart = " + localPart); log.debug(" reader = " + reader.getClass()); }//from w w w .j a va 2 s.c o m /* * 1) Use the the parser to fetch the inputStream * 2) Use the inputStream to create a DataSource, delay reading of content as much as you can. * 3) Use the OMFactory to create OMSourcedElement, OMSourcedElement is backed by ParsedEntityDataSource. */ try { if (namespace == null) { //lets look for ns in reader namespace = reader.getNamespaceURI(); if (namespace == null) { //still cant find the namespace, just set it to ""; namespace = ""; } } if (!shouldUnmarshal(namespace, localPart)) { if (log.isDebugEnabled()) { log.debug("This element won't be unmarshalled with the custom builder"); } return null; } OMNamespace ns = factory.createOMNamespace(namespace, reader.getPrefix()); ParserInputStreamDataSource ds = new ParserInputStreamDataSource(payload, encoding); OMSourcedElement om = null; if (parent instanceof SOAPHeader && factory instanceof SOAPFactory) { om = ((SOAPFactory) factory).createSOAPHeaderBlock(localPart, ns, ds); } else { om = factory.createOMElement(ds, localPart, ns); } //Add the new OMSourcedElement ot the parent parent.addChild(om); return om; } catch (OMException e) { throw e; } catch (Throwable t) { throw new OMException(t); } }