/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.axis2.jaxws.addressing.util; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMXMLBuilderFactory; import org.apache.axiom.om.OMXMLParserWrapper; import org.apache.axis2.addressing.AddressingConstants.Final; import org.apache.axis2.addressing.AddressingConstants.Submission; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.addressing.EndpointReferenceHelper; import org.apache.axis2.jaxws.addressing.SubmissionEndpointReference; import org.custommonkey.xmlunit.XMLTestCase; import org.w3c.dom.Document; import org.xml.sax.InputSource; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamReader; import javax.xml.transform.Source; import javax.xml.transform.dom.DOMSource; import javax.xml.ws.wsaddressing.W3CEndpointReference; import java.io.StringReader; /** * This class tests the enpoint reference classes used in the JAX-WS 2.1 API. */ public class EndpointReferenceUtilsTests extends XMLTestCase { private static final OMFactory OMF = OMAbstractFactory.getOMFactory(); private static final QName ELEMENT200508 = new QName(Final.WSA_NAMESPACE, "EndpointReference", "wsa"); private static final QName ELEMENT200408 = new QName(Submission.WSA_NAMESPACE, "EndpointReference", "wsa"); private static final String EPR200508 = "<wsa:EndpointReference xmlns:axis2=\"http://ws.apache.org/namespaces/axis2\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\" axis2:AttrExt=\"123456789\">"+ "<wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>"+ "<wsa:ReferenceParameters xmlns:fabrikam=\"http://example.com/fabrikam\">"+ "<fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>"+ "<fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>"+ "</wsa:ReferenceParameters>"+ "<wsa:Metadata>"+ "<axis2:MetaExt axis2:AttrExt=\"123456789\">123456789</axis2:MetaExt>"+ "</wsa:Metadata>"+ "<axis2:EPRExt axis2:AttrExt=\"123456789\">123456789</axis2:EPRExt>"+ "</wsa:EndpointReference>"; private static final String EPR200408 = "<wsa:EndpointReference xmlns:axis2=\"http://ws.apache.org/namespaces/axis2\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\" axis2:AttrExt=\"123456789\">"+ "<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/anonymous</wsa:Address>"+ "<wsa:ReferenceParameters xmlns:fabrikam=\"http://example.com/fabrikam\">"+ "<fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>"+ "<fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>"+ "</wsa:ReferenceParameters>"+ "<wsa:PortType>axis2:Jane</wsa:PortType>"+ "<wsa:ServiceName PortName=\"Fred\">axis2:John</wsa:ServiceName>"+ "<axis2:EPRExt axis2:AttrExt=\"123456789\">123456789</axis2:EPRExt>"+ "</wsa:EndpointReference>"; public EndpointReferenceUtilsTests(String name) { super(name); } public void test200508ConversionStartingFromAxis2() throws Exception { XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(EPR200508)); OMXMLParserWrapper builder = OMXMLBuilderFactory.createStAXOMBuilder(parser); OMElement omElement = builder.getDocumentElement(); EndpointReference axis2EPR = EndpointReferenceHelper.fromOM(omElement); W3CEndpointReference jaxwsEPR = (W3CEndpointReference) EndpointReferenceUtils.convertFromAxis2(axis2EPR, Final.WSA_NAMESPACE); assertXMLEqual(EPR200508, jaxwsEPR.toString()); EndpointReference axis2Result = EndpointReferenceUtils.createAxis2EndpointReference(""); String addressingNamespace = EndpointReferenceUtils.convertToAxis2(axis2Result, jaxwsEPR); OMElement eprElement = EndpointReferenceHelper.toOM(OMF, axis2Result, ELEMENT200508, addressingNamespace); assertXMLEqual(EPR200508, eprElement.toString()); } // FIXME: Breaks in JDK1.6 as it picks up W3CEndpointReference class from the JDK // public void test200508ConversionStartingFromJAXWS() throws Exception { // DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance(); // dbfac.setNamespaceAware(true); // DocumentBuilder docBuilder = dbfac.newDocumentBuilder(); // Document jaxwsDoc = docBuilder.parse(new InputSource(new StringReader(EPR200508))); // Source source = new DOMSource(jaxwsDoc); // // W3CEndpointReference jaxwsEPR = new W3CEndpointReference(source); // EndpointReference axis2EPR = // EndpointReferenceUtils.createAxis2EndpointReference(""); // String addressingNamespace = EndpointReferenceUtils.convertToAxis2(axis2EPR, jaxwsEPR); // OMElement eprElement = // EndpointReferenceHelper.toOM(OMF, axis2EPR, ELEMENT200508, addressingNamespace); // assertXMLEqual(EPR200508, eprElement.toString()); // // W3CEndpointReference jaxwsResult = // (W3CEndpointReference) EndpointReferenceUtils.convertFromAxis2(axis2EPR, Final.WSA_NAMESPACE); // assertXMLEqual(EPR200508, jaxwsResult.toString()); // } public void test200408ConversionStartingFromAxis2() throws Exception { XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(EPR200408)); OMXMLParserWrapper builder = OMXMLBuilderFactory.createStAXOMBuilder(parser); OMElement omElement = builder.getDocumentElement(); EndpointReference axis2EPR = EndpointReferenceHelper.fromOM(omElement); SubmissionEndpointReference jaxwsEPR = (SubmissionEndpointReference) EndpointReferenceUtils.convertFromAxis2(axis2EPR, Submission.WSA_NAMESPACE); assertXMLEqual(EPR200408, jaxwsEPR.toString()); EndpointReference axis2Result = EndpointReferenceUtils.createAxis2EndpointReference(""); String addressingNamespace = EndpointReferenceUtils.convertToAxis2(axis2Result, jaxwsEPR); OMElement eprElement = EndpointReferenceHelper.toOM(OMF, axis2Result, ELEMENT200408, addressingNamespace); assertXMLEqual(EPR200408, eprElement.toString()); } public void test200408ConversionStartingFromJAXWS() throws Exception { DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance(); dbfac.setNamespaceAware(true); DocumentBuilder docBuilder = dbfac.newDocumentBuilder(); Document jaxwsDoc = docBuilder.parse(new InputSource(new StringReader(EPR200408))); Source source = new DOMSource(jaxwsDoc); SubmissionEndpointReference jaxwsEPR = new SubmissionEndpointReference(source); EndpointReference axis2EPR = EndpointReferenceUtils.createAxis2EndpointReference(""); String addressingNamespace = EndpointReferenceUtils.convertToAxis2(axis2EPR, jaxwsEPR); OMElement eprElement = EndpointReferenceHelper.toOM(OMF, axis2EPR, ELEMENT200408, addressingNamespace); assertXMLEqual(EPR200408, eprElement.toString()); SubmissionEndpointReference jaxwsResult = (SubmissionEndpointReference) EndpointReferenceUtils.convertFromAxis2(axis2EPR, Submission.WSA_NAMESPACE); assertXMLEqual(EPR200408, jaxwsResult.toString()); } public void testFailures() throws Exception { try { EndpointReferenceUtils.convertFromAxis2((EndpointReference) null, Final.WSA_NAMESPACE); fail("Expected a failure."); } catch (Exception e) { //pass } try { EndpointReferenceUtils.convertFromAxis2((EndpointReference) null, Submission.WSA_NAMESPACE); fail("Expected a failure."); } catch (Exception e) { //pass } try { EndpointReferenceUtils.convertFromAxis2((EndpointReference) null, null); fail("Expected a failure."); } catch (Exception e) { //pass } try { EndpointReference axis2EPR = EndpointReferenceUtils.createAxis2EndpointReference(""); EndpointReferenceUtils.convertToAxis2(axis2EPR, null); fail("Expected a failure."); } catch (Exception e) { //pass } } }