Search in sources :

Example 1 with XMLStreamBufferSource

use of com.sun.xml.stream.buffer.XMLStreamBufferSource in project metro-jax-ws by eclipse-ee4j.

the class StreamHeader method writeTo.

public void writeTo(SOAPMessage saaj) throws SOAPException {
    try {
        // TODO what about in-scope namespaces
        // Not very efficient consider implementing a stream buffer
        // processor that produces a DOM node from the buffer.
        TransformerFactory tf = XmlUtil.newTransformerFactory(true);
        Transformer t = tf.newTransformer();
        XMLStreamBufferSource source = new XMLStreamBufferSource(_mark);
        DOMResult result = new DOMResult();
        t.transform(source, result);
        Node d = result.getNode();
        if (d.getNodeType() == Node.DOCUMENT_NODE)
            d = d.getFirstChild();
        SOAPHeader header = saaj.getSOAPHeader();
        if (header == null)
            header = saaj.getSOAPPart().getEnvelope().addHeader();
        Node node = header.getOwnerDocument().importNode(d, true);
        header.appendChild(node);
    } catch (Exception e) {
        throw new SOAPException(e);
    }
}
Also used : XMLStreamBufferSource(com.sun.xml.stream.buffer.XMLStreamBufferSource) TransformerFactory(javax.xml.transform.TransformerFactory) Transformer(javax.xml.transform.Transformer) DOMResult(javax.xml.transform.dom.DOMResult) Node(org.w3c.dom.Node) SOAPException(jakarta.xml.soap.SOAPException) SOAPHeader(jakarta.xml.soap.SOAPHeader) SOAPException(jakarta.xml.soap.SOAPException) XMLStreamException(javax.xml.stream.XMLStreamException) SAXException(org.xml.sax.SAXException)

Example 2 with XMLStreamBufferSource

use of com.sun.xml.stream.buffer.XMLStreamBufferSource in project metro-jax-ws by eclipse-ee4j.

the class EndpointReferenceUtil method toW3CEpr.

// TODO: bit of redundency on writes of w3c epr, should modularize it
private static W3CEndpointReference toW3CEpr(MemberSubmissionEndpointReference msEpr) {
    StreamWriterBufferCreator writer = new StreamWriterBufferCreator();
    w3cMetadataWritten = false;
    try {
        writer.writeStartDocument();
        writer.writeStartElement(AddressingVersion.W3C.getPrefix(), "EndpointReference", AddressingVersion.W3C.nsUri);
        writer.writeNamespace(AddressingVersion.W3C.getPrefix(), AddressingVersion.W3C.nsUri);
        // write wsa:Address
        writer.writeStartElement(AddressingVersion.W3C.getPrefix(), AddressingVersion.W3C.eprType.address, AddressingVersion.W3C.nsUri);
        writer.writeCharacters(msEpr.addr.uri);
        writer.writeEndElement();
        // TODO: write extension attributes on wsa:Address
        if ((msEpr.referenceProperties != null && msEpr.referenceProperties.elements.size() > 0) || (msEpr.referenceParameters != null && msEpr.referenceParameters.elements.size() > 0)) {
            writer.writeStartElement(AddressingVersion.W3C.getPrefix(), "ReferenceParameters", AddressingVersion.W3C.nsUri);
            // write ReferenceProperties
            if (msEpr.referenceProperties != null) {
                for (Element e : msEpr.referenceProperties.elements) {
                    DOMUtil.serializeNode(e, writer);
                }
            }
            // write referenceParameters
            if (msEpr.referenceParameters != null) {
                for (Element e : msEpr.referenceParameters.elements) {
                    DOMUtil.serializeNode(e, writer);
                }
            }
            writer.writeEndElement();
        }
        // Supress writing ServiceName and EndpointName in W3CEPR,
        // Until the ns for those metadata elements is resolved.
        /*
            //Write Interface info
            if (msEpr.portTypeName != null) {
                writeW3CMetadata(writer);
                writer.writeStartElement(AddressingVersion.W3C.getWsdlPrefix(),
                        AddressingVersion.W3C.eprType.portTypeName ,
                        AddressingVersion.W3C.wsdlNsUri);
                writer.writeNamespace(AddressingVersion.W3C.getWsdlPrefix(),
                        AddressingVersion.W3C.wsdlNsUri);
                String portTypePrefix = fixNull(msEpr.portTypeName.name.getPrefix());
                writer.writeNamespace(portTypePrefix, msEpr.portTypeName.name.getNamespaceURI());
                if (portTypePrefix.equals(""))
                    writer.writeCharacters(msEpr.portTypeName.name.getLocalPart());
                else
                    writer.writeCharacters(portTypePrefix + ":" + msEpr.portTypeName.name.getLocalPart());
                writer.writeEndElement();
            }
            if (msEpr.serviceName != null) {
                writeW3CMetadata(writer);
                //Write service and Port info
                writer.writeStartElement(AddressingVersion.W3C.getWsdlPrefix(),
                        AddressingVersion.W3C.eprType.serviceName ,
                        AddressingVersion.W3C.wsdlNsUri);
                writer.writeNamespace(AddressingVersion.W3C.getWsdlPrefix(),
                        AddressingVersion.W3C.wsdlNsUri);

                String servicePrefix = fixNull(msEpr.serviceName.name.getPrefix());
                if (msEpr.serviceName.portName != null)
                    writer.writeAttribute(AddressingVersion.W3C.eprType.portName,
                            msEpr.serviceName.portName);

                writer.writeNamespace(servicePrefix, msEpr.serviceName.name.getNamespaceURI());
                if (servicePrefix.length() > 0)
                    writer.writeCharacters(servicePrefix + ":" + msEpr.serviceName.name.getLocalPart());
                else
                    writer.writeCharacters(msEpr.serviceName.name.getLocalPart());
                writer.writeEndElement();
            }
            */
        // TODO: revisit this
        Element wsdlElement = null;
        // Check for wsdl in extension elements
        if ((msEpr.elements != null) && (msEpr.elements.size() > 0)) {
            for (Element e : msEpr.elements) {
                if (e.getNamespaceURI().equals(MemberSubmissionAddressingConstants.MEX_METADATA.getNamespaceURI()) && e.getLocalName().equals(MemberSubmissionAddressingConstants.MEX_METADATA.getLocalPart())) {
                    NodeList nl = e.getElementsByTagNameNS(WSDLConstants.NS_WSDL, WSDLConstants.QNAME_DEFINITIONS.getLocalPart());
                    if (nl != null) {
                        wsdlElement = (Element) nl.item(0);
                    }
                }
            }
        }
        // write WSDL
        if (wsdlElement != null) {
            DOMUtil.serializeNode(wsdlElement, writer);
        }
        if (w3cMetadataWritten) {
            writer.writeEndElement();
        }
        // write extension elements
        if ((msEpr.elements != null) && (msEpr.elements.size() > 0)) {
            for (Element e : msEpr.elements) {
                if (e.getNamespaceURI().equals(WSDLConstants.NS_WSDL) && e.getLocalName().equals(WSDLConstants.QNAME_DEFINITIONS.getLocalPart())) {
                // Don't write it as this is written already in Metadata
                }
                DOMUtil.serializeNode(e, writer);
            }
        }
        // TODO:write extension attributes
        // </EndpointReference>
        writer.writeEndElement();
        writer.writeEndDocument();
        writer.flush();
    } catch (XMLStreamException e) {
        throw new WebServiceException(e);
    }
    return new W3CEndpointReference(new XMLStreamBufferSource(writer.getXMLStreamBuffer()));
}
Also used : XMLStreamBufferSource(com.sun.xml.stream.buffer.XMLStreamBufferSource) XMLStreamException(javax.xml.stream.XMLStreamException) WebServiceException(jakarta.xml.ws.WebServiceException) W3CEndpointReference(jakarta.xml.ws.wsaddressing.W3CEndpointReference) StreamWriterBufferCreator(com.sun.xml.stream.buffer.stax.StreamWriterBufferCreator)

Aggregations

XMLStreamBufferSource (com.sun.xml.stream.buffer.XMLStreamBufferSource)2 XMLStreamException (javax.xml.stream.XMLStreamException)2 StreamWriterBufferCreator (com.sun.xml.stream.buffer.stax.StreamWriterBufferCreator)1 SOAPException (jakarta.xml.soap.SOAPException)1 SOAPHeader (jakarta.xml.soap.SOAPHeader)1 WebServiceException (jakarta.xml.ws.WebServiceException)1 W3CEndpointReference (jakarta.xml.ws.wsaddressing.W3CEndpointReference)1 Transformer (javax.xml.transform.Transformer)1 TransformerFactory (javax.xml.transform.TransformerFactory)1 DOMResult (javax.xml.transform.dom.DOMResult)1 Node (org.w3c.dom.Node)1 SAXException (org.xml.sax.SAXException)1