You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2017/12/17 22:34:13 UTC

svn commit: r1818518 [15/30] - in /axis/axis2/java/core/branches/AXIS2-4091: ./ apidocs/ databinding-tests/ etc/ legal/ modules/adb-codegen/ modules/adb-codegen/src/org/apache/axis2/schema/ modules/adb-codegen/src/org/apache/axis2/schema/template/ modu...

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/src/org/apache/axis2/json/gson/factory/XmlNodeGenerator.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/src/org/apache/axis2/json/gson/factory/XmlNodeGenerator.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/src/org/apache/axis2/json/gson/factory/XmlNodeGenerator.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/src/org/apache/axis2/json/gson/factory/XmlNodeGenerator.java Sun Dec 17 22:34:08 2017
@@ -19,6 +19,8 @@
 
 package org.apache.axis2.json.gson.factory;
 
+import org.apache.axis2.AxisFault;
+import org.apache.ws.commons.schema.utils.XmlSchemaRef;
 
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaComplexType;
@@ -52,7 +54,7 @@ public class XmlNodeGenerator {
     public XmlNodeGenerator() {
     }
 
-    private void processSchemaList() {
+    private void processSchemaList() throws AxisFault {
         // get the operation schema and process.
         XmlSchema operationSchema = getXmlSchema(elementQname);
         XmlSchemaElement messageElement = operationSchema.getElementByName(elementQname.getLocalPart());
@@ -81,7 +83,7 @@ public class XmlNodeGenerator {
         }
     }
 
-    private void processElement(XmlSchemaElement element, XmlNode parentNode , XmlSchema schema) {
+    private void processElement(XmlSchemaElement element, XmlNode parentNode , XmlSchema schema) throws AxisFault {
         String targetNamespace = schema.getTargetNamespace();
         XmlNode xmlNode;
         QName schemaTypeName = element.getSchemaTypeName();
@@ -106,11 +108,34 @@ public class XmlNodeGenerator {
             xmlNode = new XmlNode(element.getName(), targetNamespace, false, (element.getMaxOccurs() == 1 ? false : true), schemaType.getQName().getLocalPart());
             parentNode.addChildToList(xmlNode);
             processSchemaType(schemaType, xmlNode, schema);
+        }else if (element.getRef() != null) {
+            // Handle ref element
+            XmlSchemaRef xmlSchemaRef = element.getRef();
+            QName targetQname = xmlSchemaRef.getTargetQName();
+            if (targetQname == null) {
+                throw new AxisFault("target QName is null while processing ref:" + element.getName());
+            }
+            getXmlSchema(targetQname);
+            xmlNode = new XmlNode(targetQname.getLocalPart(), targetNamespace, false, (element.getMaxOccurs() != 1), targetQname.getLocalPart());
+            parentNode.addChildToList(xmlNode);
+            if (("http://www.w3.org/2001/XMLSchema").equals(targetQname.getNamespaceURI())) {
+            } else {
+                XmlSchema schemaOfType;
+                // see whether Schema type is in the same schema
+                XmlSchemaType childSchemaType = schema.getTypeByName(targetQname.getLocalPart());
+                if (childSchemaType == null) {
+                    schemaOfType = getXmlSchema(targetQname);
+                    childSchemaType = schemaOfType.getTypeByName(targetQname.getLocalPart());
+                } else {
+                    schemaOfType = schema;
+                }
+                processSchemaType(childSchemaType, xmlNode, schemaOfType);
+            }
         }
     }
 
 
-    private void processSchemaType(XmlSchemaType xmlSchemaType , XmlNode parentNode , XmlSchema schema) {
+    private void processSchemaType(XmlSchemaType xmlSchemaType , XmlNode parentNode , XmlSchema schema) throws AxisFault {
         if (xmlSchemaType instanceof XmlSchemaComplexType) {
             XmlSchemaComplexType complexType = (XmlSchemaComplexType)xmlSchemaType;
             XmlSchemaParticle particle = complexType.getParticle();
@@ -162,9 +187,13 @@ public class XmlNodeGenerator {
     }
 
 
-    public XmlNode getMainXmlNode() {
+    public XmlNode getMainXmlNode() throws AxisFault {
         if (mainXmlNode == null) {
-            processSchemaList();
+            try {
+                processSchemaList();
+            } catch (AxisFault axisFault) {
+                throw new AxisFault("Error while creating intermeidate xml structure ", axisFault);
+            }
         }
         return mainXmlNode;
     }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-repository/gson/axis2.xml
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-repository/gson/axis2.xml?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-repository/gson/axis2.xml (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-repository/gson/axis2.xml Sun Dec 17 22:34:08 2017
@@ -239,7 +239,7 @@
     <transportSender name="local"
                      class="org.apache.axis2.transport.local.LocalTransportSender"/>
     <transportSender name="http"
-                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+                     class="org.apache.axis2.transport.http.impl.httpclient4.HTTPClient4TransportSender">
         <parameter name="PROTOCOL">HTTP/1.1</parameter>
         <parameter name="Transfer-Encoding">chunked</parameter>
 
@@ -248,7 +248,7 @@
     </transportSender>
 
     <transportSender name="https"
-                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+                     class="org.apache.axis2.transport.http.impl.httpclient4.HTTPClient4TransportSender">
         <parameter name="PROTOCOL">HTTP/1.1</parameter>
         <parameter name="Transfer-Encoding">chunked</parameter>
     </transportSender>

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-repository/json/axis2.xml
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-repository/json/axis2.xml?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-repository/json/axis2.xml (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-repository/json/axis2.xml Sun Dec 17 22:34:08 2017
@@ -126,7 +126,7 @@
                          class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
         <messageFormatter contentType="application/json"
                          class="org.apache.axis2.json.JSONMessageFormatter"/>
-        <messageFormatter contentType="application/json/badgerfish"
+        <messageFormatter contentType="application/json+badgerfish"
                          class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>
         <messageFormatter contentType="text/javascript"
                          class="org.apache.axis2.json.JSONMessageFormatter"/>
@@ -140,7 +140,7 @@
     <messageBuilders>
         <messageBuilder contentType="application/json"
                          class="org.apache.axis2.json.JSONOMBuilder"/>
-        <messageBuilder contentType="application/json/badgerfish"
+        <messageBuilder contentType="application/json+badgerfish"
                          class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/>
         <messageBuilder contentType="text/javascript"
                          class="org.apache.axis2.json.JSONOMBuilder"/>
@@ -183,12 +183,12 @@
     <transportSender name="local"
                      class="org.apache.axis2.transport.local.LocalTransportSender"/>
     <transportSender name="http"
-                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+                     class="org.apache.axis2.transport.http.impl.httpclient4.HTTPClient4TransportSender">
         <parameter name="PROTOCOL">HTTP/1.1</parameter>
         <parameter name="Transfer-Encoding">chunked</parameter>
     </transportSender>
     <transportSender name="https"
-                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+                     class="org.apache.axis2.transport.http.impl.httpclient4.HTTPClient4TransportSender">
         <parameter name="PROTOCOL">HTTP/1.1</parameter>
         <parameter name="Transfer-Encoding">chunked</parameter>
     </transportSender>

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-resources/custom_schema/testSchema_2.xsd
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-resources/custom_schema/testSchema_2.xsd?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-resources/custom_schema/testSchema_2.xsd (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test-resources/custom_schema/testSchema_2.xsd Sun Dec 17 22:34:08 2017
@@ -20,10 +20,10 @@
   -->
 
 
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-targetNamespace="http://test.json.axis2.apache.org"
-xmlns="http://test.json.axis2.apache.org"
-elementFormDefault="qualified">
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test.json.axis2.apache.org"
+xmlns="http://test.json.axis2.apache.org" xmlns:ns1="http://test.json.axis2.apache.org/employee"
+xmlns:tns="http://test.json.axis2.apache.org" elementFormDefault="qualified">
+    <xs:import namespace="http://test.json.axis2.apache.org/employee" schemaLocation="test-resources/custom_schema/testSchema_3.xsd"></xs:import>
 
     <xs:element name="echoPerson">
         <xs:complexType>
@@ -49,4 +49,23 @@ elementFormDefault="qualified">
         </xs:sequence>
     </xs:complexType>
 
+    <xs:element name="Offices" type="tns:Offices"></xs:element>
+
+    <xs:complexType name="Offices">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="Office" type="tns:Office"></xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="Office">
+        <xs:sequence>
+            <xs:element name="phone" nillable="true" type="xs:string"></xs:element>
+            <xs:element name="officeCode" nillable="true" type="xs:integer"></xs:element>
+            <xs:element ref="ns1:Employees"></xs:element>
+            <xs:element name="country" nillable="true" type="xs:string"></xs:element>
+            <xs:element name="city" nillable="true" type="xs:string"></xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+
 </xs:schema>
\ No newline at end of file

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/Echo.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/Echo.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/Echo.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/Echo.java Sun Dec 17 22:34:08 2017
@@ -19,9 +19,7 @@
 
 package org.apache.axis2.json;
 
-import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMSourcedElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.MessageContext;
@@ -35,8 +33,7 @@ public class Echo {
 
     public OMElement echoOM(OMElement omEle) throws AxisFault {
         MessageContext outMsgCtx = MessageContext.getCurrentMessageContext().getOperationContext().getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
-        Object object = outMsgCtx.getProperty(Constants.Configuration.MESSAGE_TYPE);
-        String messageType = (String) object;
+        String messageType = (String)outMsgCtx.getProperty(Constants.Configuration.MESSAGE_TYPE);
 
         //if the request is through GET, the message type is application/xml. otherwise don't allow
         //any non json specific message types
@@ -45,9 +42,6 @@ public class Echo {
         } else if (messageType.indexOf("json") < 0) {
             throw new AxisFault("Type of the Received Message is not JSON");
         }
-        OMDataSource omdataOSuce = ((OMSourcedElement) omEle).getDataSource();
-        OMElement newOmEle = (OMElement) omEle.detach();
-        ((OMSourcedElement) newOmEle).setDataSource(omdataOSuce);
         return omEle;
     }
 }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONDataSourceTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONDataSourceTest.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONDataSourceTest.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONDataSourceTest.java Sun Dec 17 22:34:08 2017
@@ -19,102 +19,43 @@
 
 package org.apache.axis2.json;
 
-import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisService;
-import org.codehaus.jettison.json.JSONException;
 import org.custommonkey.xmlunit.XMLTestCase;
-import org.xml.sax.SAXException;
 
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
+import static com.google.common.truth.Truth.assertAbout;
+import static org.apache.axiom.truth.xml.XMLTruth.xml;
+
 import java.io.StringReader;
 
 public class JSONDataSourceTest extends XMLTestCase {
 
-    public void testMappedSerialize1() throws Exception {
-        String jsonString = getMappedJSONString();
-        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-        JSONDataSource source = getMappedDataSource(jsonString);
-        source.serialize(outStream, new OMOutputFormat());
-        assertXMLEqual("<mapping><inner><first>test string one</first></inner><inner>test string two</inner><name>foo</name></mapping>",
-                outStream.toString("utf-8"));
-    }
-
-    public void testMappedSerialize2() throws Exception {
-        String jsonString = getMappedJSONString();
-        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-        OutputStreamWriter writer = new OutputStreamWriter(outStream);
-        JSONDataSource source = getMappedDataSource(jsonString);
-        source.serialize(writer, new OMOutputFormat());
-        writer.flush();
-        assertXMLEqual("<mapping><inner><first>test string one</first></inner><inner>test string two</inner><name>foo</name></mapping>",
-                outStream.toString("utf-8"));
-    }
-
-    public void testMappedSerialize3() throws Exception {
-        String jsonString = getMappedJSONString();
-        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-        XMLStreamWriter writer = StAXUtils.createXMLStreamWriter(outStream);
-        JSONDataSource source = getMappedDataSource(jsonString);
-        source.serialize(writer);
-        writer.flush();
-        assertXMLEqual("<mapping><inner><first>test string one</first></inner><inner>test string two</inner><name>foo</name></mapping>",
-                outStream.toString("utf-8"));
-    }
-
-    public void testBadgerfishSerialize1() throws Exception {
-        String jsonString = getBadgerfishJSONString();
-        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-        JSONBadgerfishDataSource source = getBadgerfishDataSource(jsonString);
-        source.serialize(outStream, new OMOutputFormat());
-        assertXMLEqual("<p xmlns=\"http://def.ns\" xmlns:bb=\"http://other.nsb\" xmlns:aa=\"http://other.ns\"><sam att=\"lets\">555</sam></p>",
-                outStream.toString("utf-8"));
-    }
-
-    public void testBadgerfishSerialize2() throws Exception {
-        String jsonString = getBadgerfishJSONString();
-        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-        OutputStreamWriter writer = new OutputStreamWriter(outStream);
-        JSONBadgerfishDataSource source = getBadgerfishDataSource(jsonString);
-        source.serialize(writer, new OMOutputFormat());
-        writer.flush();
-        assertXMLEqual("<p xmlns=\"http://def.ns\" xmlns:bb=\"http://other.nsb\" xmlns:aa=\"http://other.ns\"><sam att=\"lets\">555</sam></p>",
-                outStream.toString("utf-8"));
-    }
-
-    public void testBadgerfishSerialize3() throws XMLStreamException, JSONException, IOException,
-            ParserConfigurationException, SAXException {
-        String jsonString = getBadgerfishJSONString();
-        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-        XMLStreamWriter writer = StAXUtils.createXMLStreamWriter(outStream);
-        JSONBadgerfishDataSource source = getBadgerfishDataSource(jsonString);
-        source.serialize(writer);
-        writer.flush();
-        assertXMLEqual("<p xmlns=\"http://def.ns\" xmlns:bb=\"http://other.nsb\" xmlns:aa=\"http://other.ns\"><sam att=\"lets\">555</sam></p>",
-                outStream.toString("utf-8"));
+    public void testMappedSerialize() throws Exception {
+        JSONDataSource source = getMappedDataSource(
+                "{\"mapping\":{\"inner\":[{\"first\":\"test string one\"},\"test string two\"],\"name\":\"foo\"}}");
+        assertAbout(xml())
+                .that(OMAbstractFactory.getOMFactory().createOMElement(source))
+                .hasSameContentAs(
+                        "<mapping><inner><first>test string one</first></inner><inner>test string two</inner><name>foo</name></mapping>");
+    }
+
+    public void testBadgerfishSerialize() throws Exception {
+        JSONBadgerfishDataSource source = getBadgerfishDataSource(
+                "{\"p\":{\"@xmlns\":{\"bb\":\"http://other.nsb\",\"aa\":\"http://other.ns\",\"$\":\"http://def.ns\"},\"sam\":{\"$\":\"555\", \"@att\":\"lets\"}}}");
+        assertAbout(xml())
+                .that(OMAbstractFactory.getOMFactory().createOMElement(source))
+                .hasSameContentAs(
+                        "<p xmlns=\"http://def.ns\" xmlns:bb=\"http://other.nsb\" xmlns:aa=\"http://other.ns\"><sam att=\"lets\">555</sam></p>");
     }
 
     private JSONBadgerfishDataSource getBadgerfishDataSource(String jsonString) {
         return new JSONBadgerfishDataSource(new StringReader(jsonString));
     }
 
-    private String getBadgerfishJSONString() {
-        return "{\"p\":{\"@xmlns\":{\"bb\":\"http://other.nsb\",\"aa\":\"http://other.ns\",\"$\":\"http://def.ns\"},\"sam\":{\"$\":\"555\", \"@att\":\"lets\"}}}";
-    }
-
     private JSONDataSource getMappedDataSource(String jsonString) {
         MessageContext messageContext = new MessageContext();
         messageContext.setAxisService(new AxisService());
         return new JSONDataSource(new StringReader(jsonString), messageContext);
     }
-
-    private String getMappedJSONString() {
-        return "{\"mapping\":{\"inner\":[{\"first\":\"test string one\"},\"test string two\"],\"name\":\"foo\"}}";
-    }
 }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONIntegrationTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONIntegrationTest.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONIntegrationTest.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONIntegrationTest.java Sun Dec 17 22:34:08 2017
@@ -27,12 +27,11 @@ import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axis2.Constants;
-import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.testutils.UtilServer;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.apache.axis2.testutils.Axis2Server;
+import org.apache.axis2.testutils.ClientHelper;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import java.io.BufferedReader;
@@ -46,22 +45,11 @@ public class JSONIntegrationTest impleme
 
     private String expectedString;
 
-    private static EndpointReference echoTargetEPR;
-    private static String pojoUri;
+    @ClassRule
+    public static Axis2Server server = new Axis2Server("target/repo/json");
 
-    @BeforeClass
-    public static void startServer() throws Exception {
-        UtilServer.start("test-repository/json", "test-repository/json/axis2.xml");
-        echoTargetEPR = new EndpointReference(
-                "http://127.0.0.1:" + UtilServer.TESTING_PORT
-                        + "/axis2/services/EchoXMLService/echoOM");
-        pojoUri = "http://127.0.0.1:" + UtilServer.TESTING_PORT + "/axis2/services/POJOService";
-    }
-
-    @AfterClass
-    public static void stopServer() throws Exception {
-		UtilServer.stop();
-    }
+    @ClassRule
+    public static ClientHelper clientHelper = new ClientHelper(server);
 
     protected OMElement createEnvelope() throws Exception {
         OMFactory fac = OMAbstractFactory.getOMFactory();
@@ -80,16 +68,12 @@ public class JSONIntegrationTest impleme
 
     private void doEchoOM(String messageType, String httpMethod) throws Exception{
     	OMElement payload = createEnvelope();
-        Options options = new Options();
-        options.setTo(echoTargetEPR);
+        ServiceClient sender = clientHelper.createServiceClient("EchoXMLService");
+        Options options = sender.getOptions();
         options.setProperty(Constants.Configuration.MESSAGE_TYPE, messageType);
         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
         options.setProperty(Constants.Configuration.HTTP_METHOD, httpMethod);
-//        ConfigurationContext clientConfigurationContext = ConfigurationContextFactory.createDefaultConfigurationContext();
-        ServiceClient sender = new ServiceClient(UtilServer.getConfigurationContext(), null);
         options.setAction(null);
-        sender.setOptions(options);
-        options.setTo(echoTargetEPR);
         OMElement result = sender.sendReceive(payload);
         OMElement ele = (OMElement)result.getFirstOMChild();
         compareWithCreatedOMText(ele.getText());
@@ -97,7 +81,7 @@ public class JSONIntegrationTest impleme
 
     @Test
     public void testEchoOMWithJSONBadgerfish() throws Exception{
-    	doEchoOM("application/json/badgerfish", Constants.Configuration.HTTP_METHOD_POST);
+    	doEchoOM("application/json+badgerfish", Constants.Configuration.HTTP_METHOD_POST);
     }
 
     @Test
@@ -112,9 +96,9 @@ public class JSONIntegrationTest impleme
 
     @Test
     public void testPOJOServiceWithJSONBadgerfish() throws Exception {
-        HttpURLConnection conn = (HttpURLConnection)new URL(pojoUri).openConnection();
+        HttpURLConnection conn = (HttpURLConnection)new URL(server.getEndpoint("POJOService")).openConnection();
         conn.setDoOutput(true);
-        conn.addRequestProperty("Content-Type", "application/json/badgerfish");
+        conn.addRequestProperty("Content-Type", "application/json+badgerfish");
         Writer out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
         // XML is: <sayHello xmlns="http://example.org"><myName>Joe</myName></sayHello>
         out.write("{ \"sayHello\" : { \"@xmlns\" : { \"$\" : \"http://example.org\" }, \"myName\" : { \"$\" : \"Joe\" } } }");
@@ -128,7 +112,7 @@ public class JSONIntegrationTest impleme
 
     @Test
     public void testPOJOServiceWithJSONMapped() throws Exception {
-        HttpURLConnection conn = (HttpURLConnection)new URL(pojoUri).openConnection();
+        HttpURLConnection conn = (HttpURLConnection)new URL(server.getEndpoint("POJOService")).openConnection();
         conn.setDoOutput(true);
         conn.addRequestProperty("Content-Type", "application/json");
         Writer out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONTestConstants.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONTestConstants.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONTestConstants.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/JSONTestConstants.java Sun Dec 17 22:34:08 2017
@@ -21,7 +21,7 @@ package org.apache.axis2.json;
 
 public interface JSONTestConstants {
 
-    public static final String CONTENT_TYPE_BADGERFISH = "application/json/badgerfish";
+    public static final String CONTENT_TYPE_BADGERFISH = "application/json+badgerfish";
     
     public static final String CONTENT_TYPE_MAPPED = "application/json";
     

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/GsonXMLStreamReaderTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/GsonXMLStreamReaderTest.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/GsonXMLStreamReaderTest.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/GsonXMLStreamReaderTest.java Sun Dec 17 22:34:08 2017
@@ -21,7 +21,8 @@ package org.apache.axis2.json.gson;
 
 import com.google.gson.stream.JsonReader;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.OMXMLBuilderFactory;
+import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.ws.commons.schema.XmlSchema;
@@ -57,7 +58,7 @@ public class GsonXMLStreamReaderTest {
         ConfigurationContext configCtxt = new ConfigurationContext(new AxisConfiguration());
         GsonXMLStreamReader gsonXMLStreamReader = new GsonXMLStreamReader(jsonReader);
         gsonXMLStreamReader.initXmlStreamReader(elementQName , schemaList , configCtxt);
-        StAXOMBuilder stAXOMBuilder = new StAXOMBuilder(gsonXMLStreamReader);
+        OMXMLParserWrapper stAXOMBuilder = OMXMLBuilderFactory.createStAXOMBuilder(gsonXMLStreamReader);
         OMElement omElement = stAXOMBuilder.getDocumentElement();
         String actual = omElement.toString();
         inputStream.close();

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/JSONXMLStreamAPITest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/JSONXMLStreamAPITest.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/JSONXMLStreamAPITest.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/JSONXMLStreamAPITest.java Sun Dec 17 22:34:08 2017
@@ -19,37 +19,19 @@
 
 package org.apache.axis2.json.gson;
 
-import org.apache.axis2.testutils.UtilServer;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.methods.RequestEntity;
-import org.apache.commons.httpclient.methods.StringRequestEntity;
-import org.junit.After;
+import org.apache.axis2.testutils.Axis2Server;
 import org.junit.Assert;
-import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
-import java.io.IOException;
-
-
 public class JSONXMLStreamAPITest {
-
-    @Before
-    public void setUp()throws Exception {
-        UtilServer.start("target/repo", "test-repository/gson/axis2.xml");
-
-    }
-
-    @After
-    public void tearDown()throws Exception {
-        UtilServer.stop();
-
-    }
+    @ClassRule
+    public static Axis2Server server = new Axis2Server("target/repo/gson");
 
     @Test
     public void xmlStreamAPITest()throws Exception{
-        String getLibURL = "http://localhost:" + UtilServer.TESTING_PORT +"/axis2/services/LibraryService/getLibrary";
-        String echoLibURL = "http://localhost:" + UtilServer.TESTING_PORT +"/axis2/services/LibraryService/echoLibrary";
+        String getLibURL = server.getEndpoint("LibraryService") + "getLibrary";
+        String echoLibURL = server.getEndpoint("LibraryService") + "echoLibrary";
         String contentType = "application/json";
         String charSet = "UTF-8";
 

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/factory/XmlNodeGeneratorTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/factory/XmlNodeGeneratorTest.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/factory/XmlNodeGeneratorTest.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/factory/XmlNodeGeneratorTest.java Sun Dec 17 22:34:08 2017
@@ -22,6 +22,7 @@ package org.apache.axis2.json.gson.facto
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import javax.xml.namespace.QName;
@@ -34,21 +35,11 @@ import java.util.List;
 
 public class XmlNodeGeneratorTest {
 
+    static List<XmlSchema> schemaList = null;
     @Test
     public void testMainXMLNode() throws Exception {
-
         QName elementQName = new QName("http://test.json.axis2.apache.org" ,"echoPerson");
-
-        String fileName = "test-resources/custom_schema/testSchema_2.xsd";
-        InputStream is = new FileInputStream(fileName);
-        XmlSchemaCollection schemaCol = new XmlSchemaCollection();
-        XmlSchema schema = schemaCol.read(new StreamSource(is));
-
-        List<XmlSchema> schemaList = new ArrayList<XmlSchema>();
-        schemaList.add(schema);
-
         XmlNodeGenerator xmlNodeGenerator = new XmlNodeGenerator(schemaList, elementQName);
-
         XmlNode mainXmlNode = xmlNodeGenerator.getMainXmlNode();
 
         Assert.assertNotNull(mainXmlNode);
@@ -67,7 +58,50 @@ public class XmlNodeGeneratorTest {
 
         Assert.assertEquals("gender", mainXmlNode.getChildrenList().get(0).getChildrenList().get(2).getName());
         Assert.assertEquals(0, mainXmlNode.getChildrenList().get(0).getChildrenList().get(2).getChildrenList().size());
+    }
+
+    @Test
+    public void testXMLNodeGenWithRefElement() throws Exception {
+        QName eleQName = new QName("http://test.json.axis2.apache.org", "Offices");
+        XmlNodeGenerator xmlNodeGenerator = new XmlNodeGenerator(schemaList, eleQName);
+        XmlNode mainXmlNode = xmlNodeGenerator.getMainXmlNode();
 
+        Assert.assertNotNull(mainXmlNode);
+        Assert.assertEquals(true, mainXmlNode.getChildrenList().get(0).isArray());
+        Assert.assertEquals(5, mainXmlNode.getChildrenList().get(0).getChildrenList().size());
+        Assert.assertEquals("Employees", mainXmlNode.getChildrenList().get(0).getChildrenList().get(2).getName());
+        Assert.assertEquals(false, mainXmlNode.getChildrenList().get(0).getChildrenList().get(2).isArray());
+        Assert.assertEquals("Employee", mainXmlNode.getChildrenList().get(0).getChildrenList().get(2).getChildrenList().get(0).getName());
+        Assert.assertEquals(true, mainXmlNode.getChildrenList().get(0).getChildrenList().get(2).getChildrenList().get(0).isArray());
+        Assert.assertEquals(3, mainXmlNode.getChildrenList().get(0).getChildrenList().get(2).getChildrenList().get(0).getChildrenList().size());
 
     }
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        InputStream is2 = null;
+        InputStream is3 = null;
+        try {
+            String testSchema2 = "test-resources/custom_schema/testSchema_2.xsd";
+            String testSchema3 = "test-resources/custom_schema/testSchema_3.xsd";
+            is2 = new FileInputStream(testSchema2);
+            is3 = new FileInputStream(testSchema3);
+            XmlSchemaCollection schemaCol = new XmlSchemaCollection();
+            XmlSchema schema2 = schemaCol.read(new StreamSource(is2));
+            XmlSchema schema3 = schemaCol.read(new StreamSource(is3));
+
+            schemaList = new ArrayList<XmlSchema>();
+            schemaList.add(schema2);
+            schemaList.add(schema3);
+        } finally {
+            if (is2 != null) {
+                is2.close();
+            }
+            if (is3 != null) {
+                is3.close();
+            }
+        }
+
+    }
+
 }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/rpc/JSONRPCIntegrationTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/rpc/JSONRPCIntegrationTest.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/rpc/JSONRPCIntegrationTest.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/json/test/org/apache/axis2/json/gson/rpc/JSONRPCIntegrationTest.java Sun Dec 17 22:34:08 2017
@@ -19,31 +19,23 @@
 
 package org.apache.axis2.json.gson.rpc;
 
-import junit.framework.Assert;
 import org.apache.axis2.json.gson.UtilTest;
-import org.apache.axis2.testutils.UtilServer;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.apache.axis2.testutils.Axis2Server;
+import org.junit.Assert;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 public class JSONRPCIntegrationTest {
+    @ClassRule
+    public static Axis2Server server = new Axis2Server("target/repo/gson");
+    
     String contentType = "application/json";
     String charSet = "UTF-8";
 
-    @BeforeClass
-    public static void startTestServer() throws Exception {
-        UtilServer.start("test-repository/gson", "test-repository/gson/axis2.xml");
-    }
-
-    @AfterClass
-    public static void stopTestServer() throws Exception {
-        UtilServer.stop();
-    }
-
     @Test
     public void testJsonRpcMessageReceiver() throws Exception {
         String jsonRequest = "{\"echoPerson\":[{\"arg0\":{\"name\":\"Simon\",\"age\":\"35\",\"gender\":\"male\"}}]}";
-        String echoPersonUrl = "http://localhost:" + UtilServer.TESTING_PORT +"/axis2/services/JSONPOJOService/echoPerson";
+        String echoPersonUrl = server.getEndpoint("JSONPOJOService") + "echoPerson";
         String expectedResponse = "{\"response\":{\"name\":\"Simon\",\"age\":\"35\",\"gender\":\"male\"}}";
         String response = UtilTest.post(jsonRequest, echoPersonUrl, contentType, charSet);
         Assert.assertNotNull(response);
@@ -53,7 +45,7 @@ public class JSONRPCIntegrationTest {
     @Test
     public void testJsonInOnlyRPCMessageReceiver() throws Exception {
         String jsonRequest = "{\"ping\":[{\"arg0\":{\"name\":\"Simon\",\"age\":\"35\",\"gender\":\"male\"}}]}";
-        String echoPersonUrl = "http://localhost:" + UtilServer.TESTING_PORT +"/axis2/services/JSONPOJOService/ping";
+        String echoPersonUrl = server.getEndpoint("JSONPOJOService") + "ping";
         String response = UtilTest.post(jsonRequest, echoPersonUrl, contentType, charSet);
         Assert.assertEquals("", response);
     }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/conf/axis2.xml
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/conf/axis2.xml?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/conf/axis2.xml (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/conf/axis2.xml Sun Dec 17 22:34:08 2017
@@ -232,7 +232,7 @@
     <transportSender name="local"
                      class="org.apache.axis2.transport.local.LocalTransportSender"/>
     <transportSender name="http"
-                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+                     class="org.apache.axis2.transport.http.impl.httpclient4.HTTPClient4TransportSender">
         <parameter name="PROTOCOL">HTTP/1.1</parameter>
         <parameter name="Transfer-Encoding">chunked</parameter>
 
@@ -241,7 +241,7 @@
     </transportSender>
 
     <transportSender name="https"
-                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+                     class="org.apache.axis2.transport.http.impl.httpclient4.HTTPClient4TransportSender">
         <parameter name="PROTOCOL">HTTP/1.1</parameter>
         <parameter name="Transfer-Encoding">chunked</parameter>
     </transportSender>

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/conf/log4j.properties
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/conf/log4j.properties?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/conf/log4j.properties (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/conf/log4j.properties Sun Dec 17 22:34:08 2017
@@ -23,7 +23,6 @@ log4j.rootCategory=INFO, CONSOLE
 
 # Set the enterprise logger priority to FATAL
 log4j.logger.org.apache.axis2.enterprise=FATAL
-log4j.logger.de.hunsicker.jalopy.io=FATAL
 log4j.logger.httpclient.wire.header=FATAL
 log4j.logger.org.apache.commons.httpclient=FATAL
 
@@ -37,4 +36,4 @@ log4j.appender.LOGFILE=org.apache.log4j.
 log4j.appender.LOGFILE.File=axis2.log
 log4j.appender.LOGFILE.Append=true
 log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
-log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
\ No newline at end of file
+log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/pom.xml
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/pom.xml?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/pom.xml (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/pom.xml Sun Dec 17 22:34:08 2017
@@ -23,9 +23,9 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.axis2</groupId>
-        <artifactId>axis2-parent</artifactId>
-        <version>1.7.0-SNAPSHOT</version>
-        <relativePath>../parent/pom.xml</relativePath>
+        <artifactId>axis2</artifactId>
+        <version>1.8.0-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>axis2-kernel</artifactId>
     <name>Apache Axis2 - Kernel</name>
@@ -71,11 +71,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.woden</groupId>
-            <artifactId>woden-impl-commons</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.woden</groupId>
-            <artifactId>woden-impl-dom</artifactId>
+            <artifactId>woden-core</artifactId>
         </dependency>
         <dependency>
             <groupId>commons-logging</groupId>
@@ -100,8 +96,18 @@
             <scope>test</scope>
 	    </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-javamail_1.4_spec</artifactId>
+            <groupId>com.google.truth</groupId>
+            <artifactId>truth</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.mail</groupId>
+            <artifactId>javax.mail</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
@@ -236,6 +242,7 @@
                             </descriptors>
                             <finalName>test-zip</finalName>
                             <appendAssemblyId>false</appendAssemblyId>
+                            <attach>false</attach>
                         </configuration>
                     </execution>
                 </executions>

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/AxisFault.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/AxisFault.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/AxisFault.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/AxisFault.java Sun Dec 17 22:34:08 2017
@@ -40,6 +40,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.Locale;
 
 /**
  * An exception which maps cleanly to a SOAP fault.
@@ -230,18 +231,18 @@ public class AxisFault extends RemoteExc
         }
 
         if (soapFaultReason != null) {
-            message = soapFaultReason.getText();
+            message = soapFaultReason.getFaultReasonText(Locale.ENGLISH);
         }
 
         if (soapFaultCode != null) {
             // This works the same regardless of SOAP version
-            faultCode = soapFaultCode.getTextAsQName();
+            faultCode = soapFaultCode.getValueAsQName();
 
             SOAPFaultSubCode subCode = soapFaultCode.getSubCode();
             if (subCode != null) {
                 faultSubCodes = new ArrayList<QName>();
                 while (subCode != null) {
-                    faultSubCodes.add(subCode.getValue().getTextAsQName());
+                    faultSubCodes.add(subCode.getValueAsQName());
                     subCode = subCode.getSubCode();
                 }
             }
@@ -380,7 +381,7 @@ public class AxisFault extends RemoteExc
         if (faultReasonList.size() >= 1) {
             return faultReasonList.get(0).getText();
         } else if (soapFaultReason != null) {
-            return soapFaultReason.getText();
+            return soapFaultReason.getFaultReasonText(Locale.ENGLISH);
         }
 
         return null;

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/Constants.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/Constants.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/Constants.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/Constants.java Sun Dec 17 22:34:08 2017
@@ -20,6 +20,10 @@
 
 package org.apache.axis2;
 
+import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.TransportUtils;
+
 /**
  * Class Constants
  */
@@ -160,7 +164,6 @@ public class Constants extends org.apach
      */
     public static final String SINGLE_SERVICE = "singleservice";
 
-    public static final String SERVICE_MAP = "servicemap";
     public static final String SERVICE_ROOT = "serviceRoot";
     public static final String SERVICE_PATH = "servicePath";
     public static final String SERVICE_HANDLERS = "serviceHandlers";
@@ -194,7 +197,9 @@ public class Constants extends org.apach
     public static final String VALUE_TRUE = "true";
     public static final String VALUE_FALSE = "false";
     public static final String VALUE_OPTIONAL = "optional";
+    @Deprecated
     public static final String TESTING_PATH = "target/test-resources/";
+    @Deprecated
     public static final String TESTING_REPOSITORY = TESTING_PATH + "samples";
     public static final char SERVICE_NAME_SPLIT_CHAR = ':';
     public static final String SERVICE_GROUP_ID = "ServiceGroupId";
@@ -258,12 +263,11 @@ public class Constants extends org.apach
     
     
     /**
-     * On inbound requests, the detachable input stream can be queried to get
-     * the inbound length.  It can also be "detached" from the inbound http stream
-     * to allow resources to be freed.
+     * The {@link OMXMLParserWrapper Axiom builder} of the message in a message context.
+     * 
+     * @see TransportUtils#detachInputStream(MessageContext)
      */
-    public static final String DETACHABLE_INPUT_STREAM = 
-        "org.apache.axiom.om.util.DetachableInputStream";
+    public static final String BUILDER = OMXMLParserWrapper.class.getName();
 
     /** SOAP Role Configuration */
     public static final String SOAP_ROLE_CONFIGURATION_ELEMENT = "SOAPRoleConfiguration";

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java Sun Dec 17 22:34:08 2017
@@ -116,6 +116,12 @@ public interface AddressingConstants {
     static final String REFERENCE_PARAMETER_PARAMETER = "referenceParameters";
 
     /**
+     * Used to attach any &lt;wsid:Identity> OMElement found in an EPR embedded in a WSDL to an
+     * AxisEndpoint object.
+     */
+    static final String ADDRESSING_IDENTITY_PARAMETER = "addressingIdentity";
+    
+    /**
      * This parameter is used to decide whether the reference parameters in an inbound request
      * message are to be processed or not.
      */
@@ -145,6 +151,8 @@ public interface AddressingConstants {
     static final String IDENTITY_KEY_INFO = "KeyInfo";
     static final String IDENTITY_X509_DATA = "X509Data";
     static final String IDENTITY_X509_CERT = "X509Certificate";
+    static final String IDENTITY_SPN = "Spn";
+    static final String IDENTITY_UPN = "Upn";
     
     static final String IDENTITY_PARAMETER = "WSAddressingAndIdentity";
     
@@ -152,6 +160,8 @@ public interface AddressingConstants {
     static final QName QNAME_IDENTITY_KEY_INFO = new QName(XML_SIG_NS,IDENTITY_KEY_INFO,XML_SIG_PREFIX);
     static final QName QNAME_IDENTITY_X509_DATA = new QName(XML_SIG_NS,IDENTITY_X509_DATA,XML_SIG_PREFIX);
     static final QName QNAME_IDENTITY_X509_CERT = new QName(XML_SIG_NS,IDENTITY_X509_CERT,XML_SIG_PREFIX);
+    static final QName QNAME_IDENTITY_SPN = new QName(ADDRESSING_IDENTITY_NS, IDENTITY_SPN, ADDRESSING_IDENTITY_PREFIX);
+    static final QName QNAME_IDENTITY_UPN = new QName(ADDRESSING_IDENTITY_NS, IDENTITY_UPN, ADDRESSING_IDENTITY_PREFIX);
     
     interface Final {
 

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java Sun Dec 17 22:34:08 2017
@@ -19,10 +19,14 @@
 
 package org.apache.axis2.addressing;
 
+import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.deployment.DeploymentConstants;
+import org.apache.axis2.description.AxisBinding;
 import org.apache.axis2.description.AxisDescription;
+import org.apache.axis2.description.AxisEndpoint;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.util.LoggingControl;
@@ -328,5 +332,52 @@ public class AddressingHelper {
                 }
             }
         }
-	}
+    }
+    
+    /**
+     * @param endpoint
+     *            The endpoint to check for a
+     *            {@link AddressingConstants#ADDRESSING_IDENTITY_PARAMETER}. Must not be
+     *            <code>null</code>
+     * @return The Addressing identity OMElement ({@link AddressingConstants#QNAME_IDENTITY}) if
+     *         such is configured on the specified <code>endpoint</code> or its <code>binding</code>
+     *         , or <code>null</code> if not available. This will normally be available if the
+     *         service was created from a WSDL which contains a WS-Addressing endpoint reference
+     *         with an &lt;wsid:Identity&gt; extension either on the port or corresponding binding.
+     */
+    public static OMElement getAddressingIdentityParameterValue(AxisEndpoint endpoint) {
+        OMElement identityElement = (OMElement) endpoint.getParameterValue(AddressingConstants.ADDRESSING_IDENTITY_PARAMETER);
+        
+        //unwrap identity element if wrapped in a parameter element
+        //NB: in revision 1371373 wrapping of parameter value when parsing parameters from services.xml has been removed
+        if (identityElement != null && identityElement.getLocalName().equals(DeploymentConstants.TAG_PARAMETER)) {
+            identityElement = identityElement.getFirstElement();
+        }
+        
+        if (identityElement != null) {
+            if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
+                log.debug(String.format("getAddressingIdentityParameterValue: %s parameter from AxisEndpoint '%s': %s", AddressingConstants.ADDRESSING_IDENTITY_PARAMETER,
+                    endpoint.getName(), identityElement.toString()));
+            }
+            
+            return identityElement;
+        }
+        
+        AxisBinding binding = endpoint.getBinding();
+        if (binding != null) {
+            identityElement = (OMElement) binding.getParameterValue(AddressingConstants.ADDRESSING_IDENTITY_PARAMETER);
+        }
+        
+        //unwrap identity element if wrapped in a parameter element
+        if (identityElement != null && identityElement.getLocalName().equals(DeploymentConstants.TAG_PARAMETER)) {
+            identityElement = identityElement.getFirstElement();
+        }
+        
+        if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
+            log.debug(String.format("getAddressingIdentityParameterValue: %s parameter from AxisBinding '%s': %s", AddressingConstants.ADDRESSING_IDENTITY_PARAMETER,
+                binding.getName(), identityElement == null ? "N/A" : identityElement.toString()));
+        }
+        
+        return identityElement;
+    }
 }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/ApplicationXMLBuilder.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/ApplicationXMLBuilder.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/ApplicationXMLBuilder.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/ApplicationXMLBuilder.java Sun Dec 17 22:34:08 2017
@@ -22,7 +22,6 @@ package org.apache.axis2.builder;
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.util.DetachableInputStream;
 import org.apache.axiom.soap.SOAPBody;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
@@ -49,13 +48,8 @@ public class ApplicationXMLBuilder imple
         SOAPEnvelope soapEnvelope = soapFactory.getDefaultEnvelope();
         if (inputStream != null) {
             try {
-                // Apply a detachable inputstream.  This can be used later
-                // to (a) get the length of the incoming message or (b)
-                // free transport resources.
-                DetachableInputStream is = new DetachableInputStream(inputStream);
-                messageContext.setProperty(Constants.DETACHABLE_INPUT_STREAM, is);
                 
-                PushbackInputStream pushbackInputStream = new PushbackInputStream(is);
+                PushbackInputStream pushbackInputStream = new PushbackInputStream(inputStream);
                 int b;
                 if ((b = pushbackInputStream.read()) > 0) {
                     pushbackInputStream.unread(b);
@@ -63,6 +57,7 @@ public class ApplicationXMLBuilder imple
                             BuilderUtil.createPOXBuilder(pushbackInputStream,
                                     (String) messageContext.getProperty(
                                             Constants.Configuration.CHARACTER_SET_ENCODING));
+                    messageContext.setProperty(Constants.BUILDER, builder);
                     OMElement documentElement = builder.getDocumentElement(true);
                     SOAPBody body = soapEnvelope.getBody();
                     body.addChild(documentElement);

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/Builder.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/Builder.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/Builder.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/Builder.java Sun Dec 17 22:34:08 2017
@@ -22,6 +22,7 @@ package org.apache.axis2.builder;
 import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.util.MessageProcessorSelector;
 
 import java.io.InputStream;
 
@@ -30,7 +31,7 @@ import java.io.InputStream;
  * Message builders are used by {@link org.apache.axis2.transport.TransportListener}
  * implementations to process the raw payload of the message and turn it into SOAP.
  * Transports should use
- * {@link org.apache.axis2.builder.BuilderUtil#getBuilderFromSelector(String, MessageContext)}
+ * {@link MessageProcessorSelector#getMessageBuilder(String, MessageContext)}
  * to select the message builder appropriate for the content type of the message.
  */
 public interface Builder {

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java Sun Dec 17 22:34:08 2017
@@ -29,10 +29,7 @@ import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMText;
 import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.impl.builder.StAXBuilder;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.om.util.StAXParserConfiguration;
-import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPBody;
@@ -41,7 +38,6 @@ import org.apache.axiom.soap.SOAPEnvelop
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPModelBuilder;
 import org.apache.axiom.soap.SOAPProcessingException;
-import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.MessageContext;
@@ -59,19 +55,10 @@ import org.apache.axis2.wsdl.WSDLConstan
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.ws.commons.schema.XmlSchemaAll;
-import org.apache.ws.commons.schema.XmlSchemaComplexType;
-import org.apache.ws.commons.schema.XmlSchemaElement;
-import org.apache.ws.commons.schema.XmlSchemaParticle;
-import org.apache.ws.commons.schema.XmlSchemaSequence;
-import org.apache.ws.commons.schema.XmlSchemaSequenceMember;
-import org.apache.ws.commons.schema.XmlSchemaType;
+import org.apache.ws.commons.schema.*;
 
 import javax.activation.DataHandler;
 import javax.xml.namespace.QName;
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -161,7 +148,7 @@ public class BuilderUtil {
                             XmlSchemaAll sequence = (XmlSchemaAll) particle;
                             // now we need to know some information from the binding operation.
 
-                            for (XmlSchemaSequenceMember sequenceMember : sequence.getItems()) {
+                            for (XmlSchemaAllMember sequenceMember : sequence.getItems()) {
 
                                 XmlSchemaElement innerElement = (XmlSchemaElement) sequenceMember;
                                 QName qName = innerElement.getQName();
@@ -267,22 +254,6 @@ public class BuilderUtil {
     }
 
     /**
-     * @deprecated Please use {@link #createPOXBuilder(InputStream, String)} to enable usage of non
-     *             standard Axiom implementations.
-     */
-    public static StAXBuilder getPOXBuilder(InputStream inStream, String charSetEnc)
-            throws XMLStreamException {
-        StAXBuilder builder;
-        // We use the StAXParserConfiguration.SOAP here as well because we don't want to allow
-        // document type declarations (that potentially reference external entities), even
-        // in plain XML messages.
-        XMLStreamReader xmlreader =
-                StAXUtils.createXMLStreamReader(StAXParserConfiguration.SOAP, inStream, charSetEnc);
-        builder = new StAXOMBuilder(xmlreader);
-        return builder;
-    }
-
-    /**
      * Create a builder suitable for an XML message. This method uses
      * {@link StAXParserConfiguration#SOAP} to disallow document type declarations (that potentially
      * reference external entities).
@@ -464,35 +435,7 @@ public class BuilderUtil {
         return value;
     }
 
-    public static StAXBuilder getAttachmentsBuilder(MessageContext msgContext,
-                                                    InputStream inStream, String contentTypeString,
-                                                    boolean isSOAP)
-            throws OMException, XMLStreamException, FactoryConfigurationError {
-        StAXBuilder builder = null;
-        XMLStreamReader streamReader;
-
-        Attachments attachments = createAttachmentsMap(msgContext, inStream, contentTypeString);
-        String charSetEncoding = getCharSetEncoding(attachments.getRootPartContentType());
-
-        if ((charSetEncoding == null)
-            || "null".equalsIgnoreCase(charSetEncoding)) {
-            charSetEncoding = MessageContext.UTF_8;
-        }
-        msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
-                               charSetEncoding);
-
-        streamReader = StAXUtils.createXMLStreamReader(attachments.getRootPartInputStream(), charSetEncoding);
-
-        // Setting the Attachments map to new SwA API
-        msgContext.setAttachmentMap(attachments);
-
-        String soapEnvelopeNamespaceURI = getEnvelopeNamespace(contentTypeString);
-
-        return MessageProcessorSelector.getAttachmentBuilder(msgContext, attachments, streamReader, soapEnvelopeNamespaceURI, isSOAP);
-
-    }
-
-    protected static Attachments createAttachmentsMap(MessageContext msgContext,
+    public static Attachments createAttachmentsMap(MessageContext msgContext,
                                                       InputStream inStream,
                                                       String contentTypeString) {
         boolean fileCacheForAttachments = isAttachmentsCacheEnabled(msgContext);
@@ -611,27 +554,6 @@ public class BuilderUtil {
     }
 
     /**
-     * Utility method to get a StAXBuilder
-     *
-     * @param in an InputStream
-     * @return a StAXSOAPModelBuilder for the given InputStream
-     * @throws XMLStreamException
-     * @deprecated If some one really need this method, please shout.
-     */
-    public static StAXBuilder getBuilder(Reader in) throws XMLStreamException {
-        XMLStreamReader xmlreader = StAXUtils.createXMLStreamReader(in);
-        return new StAXSOAPModelBuilder(xmlreader, null);
-    }
-
-    /**
-     * @deprecated Please use {@link OMXMLBuilderFactory#createOMBuilder(InputStream)} instead.
-     */
-    public static StAXBuilder getBuilder(InputStream inStream) throws XMLStreamException {
-        XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(inStream);
-        return new StAXOMBuilder(xmlReader);
-    }
-
-    /**
      * Create a SOAP model builder. This method delegates to
      * {@link OMXMLBuilderFactory#createSOAPModelBuilder(InputStream, String)} but generates
      * additional logging if an error occurs.
@@ -659,132 +581,11 @@ public class BuilderUtil {
     }
 
     /**
-     * @deprecated Please use {@link #createSOAPModelBuilder(InputStream, String)} to enable usage
-     *             of non standard Axiom implementations.
-     */
-    public static StAXBuilder getBuilder(InputStream inStream, String charSetEnc)
-            throws XMLStreamException {
-        XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(inStream, charSetEnc);
-        try {
-            return new StAXSOAPModelBuilder(xmlReader);
-        } catch (OMException e) {
-            log.info("OMException in getSOAPBuilder", e);
-            try {
-                log.info("Remaining input stream :[" +
-                         new String(IOUtils.toByteArray(inStream), charSetEnc) + "]");
-            } catch (IOException e1) {
-                // Nothing here?
-            }
-            throw e;
-        }
-    }
-
-    /**
-     * @deprecated Please use {@link #createSOAPModelBuilder(InputStream, String)} to enable usage
-     *             of non standard Axiom implementations.
-     */
-    public static StAXBuilder getSOAPBuilder(InputStream inStream) throws XMLStreamException {
-        XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(inStream);
-        try {
-            return new StAXSOAPModelBuilder(xmlReader);
-        } catch (OMException e) {
-            log.info("OMException in getSOAPBuilder", e);
-            try {
-                log.info("Remaining input stream :[" +
-                         new String(IOUtils.toByteArray(inStream)) + "]");
-            } catch (IOException e1) {
-                // Nothing here?
-            }
-            throw e;
-        }
-    }
-
-    /**
-     * @deprecated Please use {@link #createSOAPModelBuilder(InputStream, String)} to enable usage
-     *             of non standard Axiom implementations.
-     */
-    public static StAXBuilder getSOAPBuilder(InputStream inStream, String charSetEnc)
-            throws XMLStreamException {
-        XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(inStream, charSetEnc);
-        try {
-            return new StAXSOAPModelBuilder(xmlReader);
-        } catch (OMException e) {
-            log.info("OMException in getSOAPBuilder", e);
-            try {
-                log.info("Remaining input stream :[" +
-                         new String(IOUtils.toByteArray(inStream), charSetEnc) + "]");
-            } catch (IOException e1) {
-                // Nothing here?
-            }
-            throw e;
-        }
-    }
-
-    public static StAXBuilder getBuilder(SOAPFactory soapFactory, InputStream in, String charSetEnc)
-            throws XMLStreamException {
-        StAXBuilder builder;
-        XMLStreamReader xmlreader = StAXUtils.createXMLStreamReader(in, charSetEnc);
-        builder = new StAXOMBuilder(soapFactory, xmlreader);
-        return builder;
-    }
-
-    /**
-     * Initial work for a builder selector which selects the builder for a given message format
-     * based on the the content type of the recieved message. content-type to builder mapping can be
-     * specified through the Axis2.xml.
-     *
-     * @param type       content-type
-     * @param msgContext the active MessageContext
-     * @return the builder registered against the given content-type
-     * @throws AxisFault
+     * @deprecated Use {@link MessageProcessorSelector#getMessageBuilder(String, MessageContext)}.
      */
     public static Builder getBuilderFromSelector(String type, MessageContext msgContext)
             throws AxisFault {
-    	boolean useFallbackBuilder = false;
-        AxisConfiguration configuration =
-                msgContext.getConfigurationContext().getAxisConfiguration();
-        Parameter useFallbackParameter = configuration.getParameter(Constants.Configuration.USE_DEFAULT_FALLBACK_BUILDER);
-        if (useFallbackParameter !=null){
-        	useFallbackBuilder = JavaUtils.isTrueExplicitly(useFallbackParameter.getValue(),useFallbackBuilder);
-        }
-        Builder builder = configuration.getMessageBuilder(type,useFallbackBuilder);
-        if (builder != null) {
-            // Check whether the request has a Accept header if so use that as the response
-            // message type.
-            // If thats not present,
-            // Setting the received content-type as the messageType to make
-            // sure that we respond using the received message serialization format.
-
-            Object contentNegotiation = configuration
-                    .getParameterValue(Constants.Configuration.ENABLE_HTTP_CONTENT_NEGOTIATION);
-            if (JavaUtils.isTrueExplicitly(contentNegotiation)) {
-                Map transportHeaders =
-                        (Map)msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
-                if (transportHeaders != null) {
-                    String acceptHeader = (String)transportHeaders.get(HTTPConstants.HEADER_ACCEPT);
-                    if (acceptHeader != null) {
-                        int index = acceptHeader.indexOf(";");
-                        if (index > 0) {
-                            acceptHeader = acceptHeader.substring(0, index);
-                        }
-                        String[] strings = acceptHeader.split(",");
-                        for (String string : strings) {
-                            String accept = string.trim();
-                            // We dont want dynamic content negotoatin to work on text.xml as its
-                            // ambiguos as to whether the user requests SOAP 1.1 or POX response
-                            if (!HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(accept) &&
-                                configuration.getMessageFormatter(accept) != null) {
-                                type = string;
-                                break;
-                            }
-                        }
-                    }
-                }
-            }
-
-            msgContext.setProperty(Constants.Configuration.MESSAGE_TYPE, type);
-        }
-        return builder;
+        return MessageProcessorSelector.getMessageBuilder(type, msgContext);
     }
 
     public static void validateSOAPVersion(String soapNamespaceURIFromTransport,

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/DataSourceBuilder.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/DataSourceBuilder.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/DataSourceBuilder.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/DataSourceBuilder.java Sun Dec 17 22:34:08 2017
@@ -29,13 +29,13 @@ import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.axiom.attachments.ByteArrayDataSource;
-import org.apache.axiom.attachments.impl.BufferUtils;
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.util.io.IOUtils;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
 
@@ -51,7 +51,7 @@ public class DataSourceBuilder implement
         byte[] bytes;
         try {
             ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
-            BufferUtils.inputStream2OutputStream(inputStream, baos);
+            IOUtils.copy(inputStream, baos, -1);
             baos.flush();
             bytes = baos.toByteArray();
         } catch (IOException e) {

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/MTOMBuilder.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/MTOMBuilder.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/MTOMBuilder.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/MTOMBuilder.java Sun Dec 17 22:34:08 2017
@@ -47,6 +47,7 @@ public class MTOMBuilder implements MIME
             messageContext.setAttachmentMap(attachments);
             
             SOAPModelBuilder builder = OMXMLBuilderFactory.createSOAPModelBuilder(attachments);
+            messageContext.setProperty(Constants.BUILDER, builder);
             OMDocument document = builder.getDocument();
             String charsetEncoding = document.getCharsetEncoding();
             if (charsetEncoding == null) {

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java Sun Dec 17 22:34:08 2017
@@ -23,7 +23,6 @@ import org.apache.axiom.attachments.Atta
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.util.DetachableInputStream;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
@@ -40,16 +39,11 @@ public class SOAPBuilder implements MIME
             String charSetEncoding = (String) messageContext
                     .getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
             
-            // Apply a detachable inputstream.  This can be used later
-            // to (a) get the length of the incoming message or (b)
-            // free transport resources.
-            DetachableInputStream is = new DetachableInputStream(inputStream);
-            messageContext.setProperty(Constants.DETACHABLE_INPUT_STREAM, is);
-            
             // createSOAPModelBuilder takes care of configuring the underlying parser to
             // avoid the security issue described in CVE-2010-1632
-            OMXMLParserWrapper builder = OMXMLBuilderFactory.createSOAPModelBuilder(is,
+            OMXMLParserWrapper builder = OMXMLBuilderFactory.createSOAPModelBuilder(inputStream,
                     charSetEncoding);
+            messageContext.setProperty(Constants.BUILDER, builder);
             SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
             BuilderUtil
                     .validateSOAPVersion(BuilderUtil.getEnvelopeNamespace(contentType), envelope);

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/client/FaultMapKey.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/client/FaultMapKey.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/client/FaultMapKey.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/client/FaultMapKey.java Sun Dec 17 22:34:08 2017
@@ -25,8 +25,8 @@ import javax.xml.namespace.QName;
 
 public class FaultMapKey {
 
-    private QName elementQname;
-    private String operationName;
+    private final QName elementQname;
+    private final String operationName;
 
     public FaultMapKey(QName elementQname, String operationName) {
         this.elementQname = elementQname;
@@ -39,8 +39,8 @@ public class FaultMapKey {
         boolean isEqual = false;
         if (obj instanceof FaultMapKey){
             FaultMapKey faultMapKey = (FaultMapKey) obj;
-            isEqual = this.elementQname.equals(faultMapKey.getElementQname()) &&
-                          this.operationName.equals(faultMapKey.getOperationName());
+            isEqual = this.elementQname.equals(faultMapKey.elementQname) &&
+                          this.operationName.equals(faultMapKey.operationName);
         }
         return isEqual;
     }
@@ -48,20 +48,4 @@ public class FaultMapKey {
     public int hashCode() {
         return this.elementQname.hashCode() + this.operationName.hashCode();
     }
-
-    public QName getElementQname() {
-        return elementQname;
-    }
-
-    public void setElementQname(QName elementQname) {
-        this.elementQname = elementQname;
-    }
-
-    public String getOperationName() {
-        return operationName;
-    }
-
-    public void setOperationName(String operationName) {
-        this.operationName = operationName;
-    }
 }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/context/MessageContext.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/context/MessageContext.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/context/MessageContext.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/context/MessageContext.java Sun Dec 17 22:34:08 2017
@@ -21,7 +21,6 @@ package org.apache.axis2.context;
 
 import org.apache.axiom.attachments.Attachments;
 import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axiom.om.util.DetachableInputStream;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPEnvelope;
@@ -52,6 +51,7 @@ import org.apache.axis2.description.Modu
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.description.WSDL2Constants;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.engine.AxisError;
 import org.apache.axis2.engine.Handler;
@@ -1220,24 +1220,6 @@ public class MessageContext extends Abst
     }
 
     /**
-     * @return inbound content length of 0
-     */
-    public long getInboundContentLength() throws IOException {
-        // If there is an attachment map, the Attachments keep track
-        // of the inbound content length.
-        if (attachments != null) {
-//            return attachments.getContentLength();
-        }
-
-        // Otherwise the length is accumulated by the DetachableInputStream.
-        DetachableInputStream dis =
-            (DetachableInputStream) getProperty(Constants.DETACHABLE_INPUT_STREAM);
-        if (dis != null) {
-            return dis.length();
-        }
-        return 0;
-    }
-    /**
      * @return Returns boolean.
      */
     public boolean isServerSide() {
@@ -1773,12 +1755,16 @@ public class MessageContext extends Abst
      * @return attachment
      */
     public Attachments getAttachmentMap() {
-        if (attachments == null) {
+        return getAttachmentMap(true);
+    }
+
+    public Attachments getAttachmentMap(boolean create) {
+        if (attachments == null && create) {
             attachments = new Attachments();
         }
         return attachments;
     }
-
+    
     /**
      * Adds an attachment to the attachment Map of this message context. This
      * attachment gets serialised as a MIME attachment when sending the message
@@ -4320,4 +4306,49 @@ public class MessageContext extends Abst
     public void setFailureReason(Exception failureReason) {
         this.failureReason = failureReason;
     }
+    
+    /**
+     * @return Identifies and returns the service endpoint for this message context. The method will
+     *         use the following steps to identify the endpoint:
+     *         <ul>
+     *         <li>If a non-null {@link AxisEndpoint} instance is set under the
+     *         {@link WSDL2Constants#ENDPOINT_LOCAL_NAME ENDPOINT_LOCAL_NAME} message context
+     *         property, return it</li>
+     *         <li>If a non-null {@link #getAxisService() axisService} instance is set and it
+     *         specifies {@link AxisService#isClientSide() clientSide=true}, retrieve the endpoint
+     *         which matches its {@link AxisService#getEndpointName() enpointName}</li>
+     *         <li>else, return <code>null</code></li>
+     *         </ul>
+     */
+    public AxisEndpoint findEndpoint() {
+        AxisEndpoint endpoint = (AxisEndpoint) getProperty(WSDL2Constants.ENDPOINT_LOCAL_NAME);
+        
+        final String methodName = "findEnpoint()";
+        if (endpoint != null) {
+            if (log.isDebugEnabled()) {
+                log.debug(String.format("%s:%s - identified endpoint from property '%s': %s", getLogIDString(), methodName, WSDL2Constants.ENDPOINT_LOCAL_NAME, endpoint.getName()));
+            }
+            
+            return endpoint;
+        }
+        
+        if (axisService == null) {
+            if (log.isWarnEnabled()) {
+                log.warn(String.format("%s:%s - no service set, cannot identify endpoint", getLogIDString(), methodName));
+            }
+            
+            return null;
+        }
+        
+        if (!axisService.isClientSide()) {
+            if (log.isWarnEnabled()) {
+                log.warn(String.format("%s:%s - no '%s' property set and serverSide=true, cannot uniquely identify endpoint for service: ", getLogIDString(), methodName, WSDL2Constants.ENDPOINT_LOCAL_NAME, axisService.getName()));
+            }
+            return null;
+        }
+        
+        //on client-side, the default endpoint name is the one the AxisService was created with
+        String endpointName = axisService.getEndpointName();
+        return axisService.getEndpoint(endpointName);
+    }
 }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/context/externalize/MessageExternalizeUtils.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/context/externalize/MessageExternalizeUtils.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/context/externalize/MessageExternalizeUtils.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/context/externalize/MessageExternalizeUtils.java Sun Dec 17 22:34:08 2017
@@ -19,11 +19,16 @@
 
 package org.apache.axis2.context.externalize;
 
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.impl.MTOMConstants;
+import org.apache.axiom.om.util.StAXParserConfiguration;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
 import org.apache.axis2.builder.BuilderUtil;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.transport.MessageFormatter;
@@ -38,6 +43,9 @@ import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.OutputStream;
 
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.stream.XMLStreamException;
+
 /**
  * Utility to read/write the Message of a MessageContext
  * Message Object Format.
@@ -169,6 +177,42 @@ public class MessageExternalizeUtils  im
         }
     }
     
+    private static OMXMLParserWrapper getAttachmentsBuilder(MessageContext msgContext,
+                InputStream inStream, String contentTypeString,
+                boolean isSOAP)
+            throws OMException, XMLStreamException, FactoryConfigurationError {
+        Attachments attachments = BuilderUtil.createAttachmentsMap(msgContext, inStream, contentTypeString);
+        String charSetEncoding = BuilderUtil.getCharSetEncoding(attachments.getRootPartContentType());
+
+        if ((charSetEncoding == null)
+            || "null".equalsIgnoreCase(charSetEncoding)) {
+            charSetEncoding = MessageContext.UTF_8;
+        }
+        msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+                               charSetEncoding);
+
+        // Setting the Attachments map to new SwA API
+        msgContext.setAttachmentMap(attachments);
+
+        if (isSOAP) {
+            if (attachments.getAttachmentSpecType().equals(
+                    MTOMConstants.MTOM_TYPE)) {
+                return OMXMLBuilderFactory.createSOAPModelBuilder(attachments);
+            } else {
+                return OMXMLBuilderFactory.createSOAPModelBuilder(attachments.getRootPartInputStream(), charSetEncoding);
+            }
+
+        }
+        // To handle REST XOP case
+        else {
+            if (attachments.getAttachmentSpecType().equals(MTOMConstants.MTOM_TYPE)) {
+                return OMXMLBuilderFactory.createOMBuilder(StAXParserConfiguration.DEFAULT, attachments);
+            } else {
+                return OMXMLBuilderFactory.createOMBuilder(attachments.getRootPartInputStream(), charSetEncoding);
+            }
+        }
+    }
+
     /**
      * Read the Message
      * @param in
@@ -231,17 +275,11 @@ public class MessageExternalizeUtils  im
         try {
             if (optimized) {
                 boolean isSOAP = true;
-                builder =
-                    BuilderUtil.getAttachmentsBuilder(mc,
-                                                      mis,
-                                                      optimizedContentType,
-                                                      isSOAP);
+                builder = getAttachmentsBuilder(mc, mis, optimizedContentType, isSOAP);
                 envelope = (SOAPEnvelope) builder.getDocumentElement();
-                envelope.buildWithAttachments();
             } else {
                 builder = OMXMLBuilderFactory.createSOAPModelBuilder(mis, charSetEnc);
                 envelope = (SOAPEnvelope) builder.getDocumentElement();
-                envelope.build();
             }
         } catch (Exception ex) {
             // TODO: what to do if can't get the XML stream reader
@@ -251,9 +289,8 @@ public class MessageExternalizeUtils  im
                       + ex.getClass().getName() + " : " + ex.getLocalizedMessage() + "]", ex);
             envelope = null;
         } finally {
-            if (builder != null) {
-                builder.close();
-            }
+            // Prepare the builder to close the underlying stream
+            builder.detach();
             // Close the message input stream.  This will ensure that the
             // underlying stream is advanced past the message.
             mis.close();

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/dataretrieval/AxisDataLocatorImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/dataretrieval/AxisDataLocatorImpl.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/dataretrieval/AxisDataLocatorImpl.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/kernel/src/org/apache/axis2/dataretrieval/AxisDataLocatorImpl.java Sun Dec 17 22:34:08 2017
@@ -119,11 +119,11 @@ public class AxisDataLocatorImpl impleme
     * caching ServiceData for Axis2 Data Locators
     */
     private void cachingServiceData(OMElement e) {
-        Iterator i = e.getChildrenWithName(new QName(
+        Iterator<OMElement> i = e.getChildrenWithName(new QName(
                 DRConstants.SERVICE_DATA.DATA));
         String saveKey = "";
         while (i.hasNext()) {
-            ServiceData data = new ServiceData((OMElement) i.next());
+            ServiceData data = new ServiceData(i.next());
             saveKey = data.getDialect();
 
             String identifier = data.getIdentifier();