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 2012/08/02 19:29:37 UTC
svn commit: r1368613 - in /axis/axis2/java/core/trunk/modules: jaxbri/
jaxbri/src/main/resources/org/apache/axis2/jaxbri/template/
jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/ jaxbri/src/test/wsdl/
parent/
Author: veithen
Date: Thu Aug 2 17:29:37 2012
New Revision: 1368613
URL: http://svn.apache.org/viewvc?rev=1368613&view=rev
Log:
Implemented full support for MTOM in the JAXBRI databinding.
Added:
axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/
axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomImpl.java (with props)
axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomTest.java (with props)
axis/axis2/java/core/trunk/modules/jaxbri/src/test/wsdl/mtom.wsdl
Modified:
axis/axis2/java/core/trunk/modules/jaxbri/pom.xml
axis/axis2/java/core/trunk/modules/jaxbri/src/main/resources/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl
axis/axis2/java/core/trunk/modules/parent/pom.xml
Modified: axis/axis2/java/core/trunk/modules/jaxbri/pom.xml
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxbri/pom.xml?rev=1368613&r1=1368612&r2=1368613&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxbri/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/jaxbri/pom.xml Thu Aug 2 17:29:37 2012
@@ -73,6 +73,11 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.ws.commons.axiom</groupId>
+ <artifactId>axiom-testutils</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<url>http://axis.apache.org/axis2/java/core/</url>
<scm>
@@ -164,6 +169,10 @@
<classpath refid="maven.test.classpath" />
<arg line="-d jaxbri -ss -ssi -sd -g -o ${project.build.directory}/gen/identityservice -u -uri src/test/wsdl/identityService.wsdl -p org.apache.axis2.jaxbri.identityservice -ns2p http://www.example.org/identity=org.apache.axis2.jaxbri.identityservice" />
</java>
+ <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+ <classpath refid="maven.test.classpath" />
+ <arg line="-d jaxbri -ss -ssi -sd -g -o ${project.build.directory}/gen/mtom -u -uri src/test/wsdl/mtom.wsdl -p org.apache.axis2.jaxbri.mtom -ns2p http://www.example.org/mtom/=org.apache.axis2.jaxbri.mtom -EbindingFileName " />
+ </java>
</tasks>
</configuration>
</execution>
@@ -199,6 +208,7 @@
<source>${project.build.directory}/gen/Test01/src</source>
<source>${project.build.directory}/gen/processor/src</source>
<source>${project.build.directory}/gen/identityservice/src</source>
+ <source>${project.build.directory}/gen/mtom/src</source>
</sources>
</configuration>
</execution>
@@ -264,6 +274,25 @@
</resources>
</configuration>
</execution>
+ <execution>
+ <id>mtom-repo</id>
+ <phase>generate-test-resources</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/repo/mtom</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/test/repo</directory>
+ </resource>
+ <resource>
+ <directory>${project.build.directory}/gen/mtom/resources</directory>
+ <targetPath>services/mtom.aar/META-INF</targetPath>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
</executions>
</plugin>
<plugin>
Modified: axis/axis2/java/core/trunk/modules/jaxbri/src/main/resources/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxbri/src/main/resources/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl?rev=1368613&r1=1368612&r2=1368613&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxbri/src/main/resources/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl (original)
+++ axis/axis2/java/core/trunk/modules/jaxbri/src/main/resources/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl Thu Aug 2 17:29:37 2012
@@ -210,8 +210,9 @@
try {
javax.xml.bind.JAXBContext context = wsContext;
javax.xml.bind.Unmarshaller unmarshaller = context.createUnmarshaller();
-
- return unmarshaller.unmarshal(param.getXMLStreamReaderWithoutCaching(), type).getValue();
+ org.apache.axiom.util.jaxb.UnmarshallerAdapter adapter = org.apache.axiom.util.jaxb.JAXBUtils.getUnmarshallerAdapter(param.getXMLStreamReaderWithoutCaching());
+ unmarshaller.setAttachmentUnmarshaller(adapter.getAttachmentUnmarshaller());
+ return unmarshaller.unmarshal(adapter.getReader(), type).getValue();
} catch (javax.xml.bind.JAXBException bex){
throw org.apache.axis2.AxisFault.makeFault(bex);
}
Added: axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomImpl.java?rev=1368613&view=auto
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomImpl.java (added)
+++ axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomImpl.java Thu Aug 2 17:29:37 2012
@@ -0,0 +1,52 @@
+/*
+ * 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.jaxbri.mtom;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import javax.activation.DataHandler;
+
+import org.apache.axiom.attachments.lifecycle.DataHandlerExt;
+import org.apache.commons.io.IOUtils;
+
+public class MtomImpl implements MtomSkeletonInterface {
+ private final Map<String,byte[]> documents = new HashMap<String,byte[]>();
+
+ public UploadDocumentResponse uploadDocument(UploadDocument uploadDocument) {
+ String id = UUID.randomUUID().toString();
+ try {
+ // If we don't get a DataHandlerExt here, then we know that we are not using MTOM
+ documents.put(id, IOUtils.toByteArray(((DataHandlerExt)uploadDocument.getContent()).readOnce()));
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ UploadDocumentResponse response = new UploadDocumentResponse();
+ response.setId(id);
+ return response;
+ }
+
+ public RetrieveDocumentResponse retrieveDocument(RetrieveDocument retrieveDocument) {
+ RetrieveDocumentResponse response = new RetrieveDocumentResponse();
+ response.setContent(new DataHandler(documents.get(retrieveDocument.getId()), "application/octet-stream"));
+ return response;
+ }
+}
Propchange: axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomTest.java?rev=1368613&view=auto
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomTest.java (added)
+++ axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomTest.java Thu Aug 2 17:29:37 2012
@@ -0,0 +1,64 @@
+/*
+ * 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.jaxbri.mtom;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+
+import org.apache.axiom.testutils.activation.RandomDataSource;
+import org.apache.axiom.testutils.io.IOTestUtils;
+import org.apache.axis2.Constants;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.testutils.UtilServer;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class MtomTest {
+ private static final String ENDPOINT = "http://127.0.0.1:" + UtilServer.TESTING_PORT + "/axis2/services/mtom";
+
+ @BeforeClass
+ public static void startServer() throws Exception {
+ UtilServer.start(System.getProperty("basedir", ".") + "/target/repo/mtom");
+ AxisConfiguration axisConfiguration = UtilServer.getConfigurationContext().getAxisConfiguration();
+ axisConfiguration.getParameter(Constants.Configuration.ENABLE_MTOM).setValue(true);
+ AxisService service = axisConfiguration.getService("mtom");
+ service.getParameter(Constants.SERVICE_CLASS).setValue(MtomImpl.class.getName());
+ service.setScope(Constants.SCOPE_APPLICATION);
+ }
+
+ @AfterClass
+ public static void stopServer() throws Exception {
+ UtilServer.stop();
+ }
+
+ @Test
+ public void test() throws Exception {
+ MtomStub stub = new MtomStub(UtilServer.getConfigurationContext(), ENDPOINT);
+ UploadDocument uploadRequest = new UploadDocument();
+ DataSource contentDS = new RandomDataSource(1234567L, 1024);
+ uploadRequest.setContent(new DataHandler(contentDS));
+ UploadDocumentResponse uploadResponse = stub.uploadDocument(uploadRequest);
+ RetrieveDocument retrieveRequest = new RetrieveDocument();
+ retrieveRequest.setId(uploadResponse.getId());
+ RetrieveDocumentResponse retrieveResponse = stub.retrieveDocument(retrieveRequest);
+ IOTestUtils.compareStreams(contentDS.getInputStream(), retrieveResponse.getContent().getInputStream());
+ }
+}
Propchange: axis/axis2/java/core/trunk/modules/jaxbri/src/test/java/org/apache/axis2/jaxbri/mtom/MtomTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: axis/axis2/java/core/trunk/modules/jaxbri/src/test/wsdl/mtom.wsdl
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxbri/src/test/wsdl/mtom.wsdl?rev=1368613&view=auto
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxbri/src/test/wsdl/mtom.wsdl (added)
+++ axis/axis2/java/core/trunk/modules/jaxbri/src/test/wsdl/mtom.wsdl Thu Aug 2 17:29:37 2012
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ ~ 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.
+ -->
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://www.example.org/mtom/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
+ name="mtom"
+ targetNamespace="http://www.example.org/mtom/">
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://www.example.org/mtom/">
+ <xsd:element name="uploadDocument">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="content" type="xsd:base64Binary" xmime:expectedContentTypes="application/octet-stream" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="uploadDocumentResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="retrieveDocument">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="retrieveDocumentResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="content" type="xsd:base64Binary" xmime:expectedContentTypes="application/octet-stream" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="uploadDocumentRequest">
+ <wsdl:part name="parameters" element="tns:uploadDocument" />
+ </wsdl:message>
+ <wsdl:message name="uploadDocumentResponse">
+ <wsdl:part name="parameters" element="tns:uploadDocumentResponse" />
+ </wsdl:message>
+ <wsdl:message name="retrieveDocumentRequest">
+ <wsdl:part name="parameters" element="tns:retrieveDocument" />
+ </wsdl:message>
+ <wsdl:message name="retrieveDocumentResponse">
+ <wsdl:part name="parameters" element="tns:retrieveDocumentResponse" />
+ </wsdl:message>
+ <wsdl:portType name="mtom">
+ <wsdl:operation name="uploadDocument">
+ <wsdl:input message="tns:uploadDocumentRequest" />
+ <wsdl:output message="tns:uploadDocumentResponse" />
+ </wsdl:operation>
+ <wsdl:operation name="retrieveDocument">
+ <wsdl:input message="tns:retrieveDocumentRequest" />
+ <wsdl:output message="tns:retrieveDocumentResponse" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="mtomSOAP" type="tns:mtom">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="uploadDocument">
+ <soap:operation soapAction="http://www.example.org/mtom/uploadDocument" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="retrieveDocument">
+ <soap:operation soapAction="http://www.example.org/mtom/retrieveDocument" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="mtom">
+ <wsdl:port binding="tns:mtomSOAP" name="mtomSOAP">
+ <soap:address location="http://www.example.org/" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
Modified: axis/axis2/java/core/trunk/modules/parent/pom.xml
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/parent/pom.xml?rev=1368613&r1=1368612&r2=1368613&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/parent/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/parent/pom.xml Thu Aug 2 17:29:37 2012
@@ -638,6 +638,11 @@
<version>${axiom.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.ws.commons.axiom</groupId>
+ <artifactId>axiom-testutils</artifactId>
+ <version>${axiom.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
<version>${xmlschema.version}</version>