Author: veithen
Date: Mon Mar 19 21:15:52 2012
New Revision: 1302659
URL: http://svn.apache.org/viewvc?rev=1302659&view=rev
Log:
Allow changing the Java class associated with an XML type in
maven-wsdl2java-plugin. This feature can be used to enable MTOM in client stubs.
Note that this requires a minor change in the toJava.Emitter, so that the
BaseTypeMapping can be overridden (in the previous version of the code it was
always reset to the default BaseTypeMapping implementation).
Added:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/CustomizableBaseTypeMapping.java
(with props)
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/JavaXmlTypeMapping.java
(with props)
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/apt/java-xml-type-mappings.apt.vm
axis/axis1/java/trunk/samples/mtomstub-sample/ (with props)
axis/axis1/java/trunk/samples/mtomstub-sample/pom.xml (with props)
axis/axis1/java/trunk/samples/mtomstub-sample/src/
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFile.java
(with props)
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFileImpl.java
(with props)
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/ResponseDownloadFile.java
(with props)
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/resources/
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/resources/client-config.wsdd
axis/axis1/java/trunk/samples/mtomstub-sample/src/test/
axis/axis1/java/trunk/samples/mtomstub-sample/src/test/java/
axis/axis1/java/trunk/samples/mtomstub-sample/src/test/java/samples/
axis/axis1/java/trunk/samples/mtomstub-sample/src/test/java/samples/mtomstub/
axis/axis1/java/trunk/samples/mtomstub-sample/src/test/java/samples/mtomstub/TestDownloadFile.java
(with props)
Modified:
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/Emitter.java
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/AbstractWsdl2JavaMojo.java
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/site.xml
axis/axis1/java/trunk/samples/pom.xml
axis/axis1/java/trunk/src/site/apt/changelogs/1_4_1.apt
Modified:
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/Emitter.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/Emitter.java?rev=1302659&r1=1302658&r2=1302659&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/Emitter.java
(original)
+++
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/Emitter.java
Mon Mar 19 21:15:52 2012
@@ -22,10 +22,8 @@ import org.apache.axis.encoding.TypeMapp
import org.apache.axis.encoding.TypeMappingRegistryImpl;
import org.apache.axis.i18n.Messages;
import org.apache.axis.utils.ClassUtils;
-import org.apache.axis.utils.JavaUtils;
import org.apache.axis.wsdl.gen.GeneratorFactory;
import org.apache.axis.wsdl.gen.Parser;
-import org.apache.axis.wsdl.symbolTable.BaseTypeMapping;
import org.apache.axis.wsdl.symbolTable.SymTabEntry;
import org.apache.axis.wsdl.symbolTable.SymbolTable;
import org.w3c.dom.Document;
@@ -66,9 +64,6 @@ public class Emitter extends Parser {
/** Field typeMappingVersion */
protected String typeMappingVersion = "1.2";
- /** Field baseTypeMapping */
- protected BaseTypeMapping baseTypeMapping = null;
-
/** Field namespaces */
protected Namespaces namespaces = null;
@@ -646,13 +641,8 @@ public class Emitter extends Parser {
* @throws IOException
*/
private void setup() throws IOException {
-
- if (baseTypeMapping == null) {
- setTypeMappingVersion(typeMappingVersion);
- }
-
- getFactory().setBaseTypeMapping(baseTypeMapping);
-
+ tmr.doRegisterFromVersion(typeMappingVersion);
+
namespaces = new Namespaces(outputDir);
if (packageName != null) {
@@ -793,26 +783,6 @@ public class Emitter extends Parser {
*/
public void setTypeMappingVersion(String typeMappingVersion) {
this.typeMappingVersion = typeMappingVersion;
- tmr.doRegisterFromVersion(typeMappingVersion);
- baseTypeMapping = new BaseTypeMapping() {
-
- final TypeMapping defaultTM = getDefaultTypeMapping();
-
- public String getBaseName(QName qNameIn) {
-
- javax.xml.namespace.QName qName =
- new
javax.xml.namespace.QName(qNameIn.getNamespaceURI(),
- qNameIn.getLocalPart());
- Class cls =
- defaultTM.getClassForQName(qName);
-
- if (cls == null) {
- return null;
- } else {
- return JavaUtils.getTextClassName(cls.getName());
- }
- }
- };
}
// The remainder are deprecated methods.
Modified:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/AbstractWsdl2JavaMojo.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/AbstractWsdl2JavaMojo.java?rev=1302659&r1=1302658&r2=1302659&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/AbstractWsdl2JavaMojo.java
(original)
+++
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/AbstractWsdl2JavaMojo.java
Mon Mar 19 21:15:52 2012
@@ -21,9 +21,12 @@ package org.apache.axis.maven.wsdl2java;
import java.io.File;
import java.net.MalformedURLException;
+import javax.xml.namespace.QName;
+
import org.apache.axis.constants.Scope;
import org.apache.axis.maven.shared.nsmap.Mapping;
import org.apache.axis.maven.shared.nsmap.MappingUtil;
+import org.apache.axis.wsdl.gen.GeneratorFactory;
import org.apache.axis.wsdl.toJava.Emitter;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
@@ -148,6 +151,14 @@ public abstract class AbstractWsdl2JavaM
*/
private boolean helperGen;
+ /**
+ * A set of Java to XML type mappings that override the default mappings.
This can be used to
+ * change the Java class associated with an XML type.
+ *
+ * @parameter
+ */
+ private JavaXmlTypeMapping[] javaXmlTypeMappings;
+
public void execute() throws MojoExecutionException, MojoFailureException {
String wsdlUrl;
if (file != null && url != null) {
@@ -217,6 +228,23 @@ public abstract class AbstractWsdl2JavaM
// ClassUtils.setDefaultClassLoader(cl);
// }
+ if (javaXmlTypeMappings != null && javaXmlTypeMappings.length > 0) {
+ GeneratorFactory factory = emitter.getFactory();
+ CustomizableBaseTypeMapping btm = new
CustomizableBaseTypeMapping(factory.getBaseTypeMapping());
+ for (int i=0; i<javaXmlTypeMappings.length; i++) {
+ String xmlTypeName = javaXmlTypeMappings[i].getXmlType();
+ if (xmlTypeName.length() == 0 || xmlTypeName.charAt(0) != '{')
{
+ throw new MojoFailureException("Invalid XML type '" +
xmlTypeName + "'");
+ }
+ int idx = xmlTypeName.indexOf('}', 1);
+ if (idx == -1) {
+ throw new MojoFailureException("Invalid XML type '" +
xmlTypeName + "'");
+ }
+ btm.addMapping(new QName(xmlTypeName.substring(1, idx),
xmlTypeName.substring(idx+1)), javaXmlTypeMappings[i].getJavaType());
+ }
+ factory.setBaseTypeMapping(btm);
+ }
+
configureEmitter(emitter);
getLog().info("Processing " + wsdlUrl);
Added:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/CustomizableBaseTypeMapping.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/CustomizableBaseTypeMapping.java?rev=1302659&view=auto
==============================================================================
---
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/CustomizableBaseTypeMapping.java
(added)
+++
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/CustomizableBaseTypeMapping.java
Mon Mar 19 21:15:52 2012
@@ -0,0 +1,44 @@
+/*
+ * 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.axis.maven.wsdl2java;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis.wsdl.symbolTable.BaseTypeMapping;
+
+public class CustomizableBaseTypeMapping extends BaseTypeMapping {
+ private final BaseTypeMapping parent;
+ private final Map/*<QName,String>*/ mappings = new HashMap();
+
+ public CustomizableBaseTypeMapping(BaseTypeMapping parent) {
+ this.parent = parent;
+ }
+
+ public void addMapping(QName xmlType, String javaType) {
+ mappings.put(xmlType, javaType);
+ }
+
+ public String getBaseName(QName qName) {
+ String javaType = (String)mappings.get(qName);
+ return javaType != null ? javaType : parent.getBaseName(qName);
+ }
+}
Propchange:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/CustomizableBaseTypeMapping.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/JavaXmlTypeMapping.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/JavaXmlTypeMapping.java?rev=1302659&view=auto
==============================================================================
---
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/JavaXmlTypeMapping.java
(added)
+++
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/JavaXmlTypeMapping.java
Mon Mar 19 21:15:52 2012
@@ -0,0 +1,40 @@
+/*
+ * 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.axis.maven.wsdl2java;
+
+public class JavaXmlTypeMapping {
+ private String javaType;
+ private String xmlType;
+
+ public String getJavaType() {
+ return javaType;
+ }
+
+ public void setJavaType(String javaType) {
+ this.javaType = javaType;
+ }
+
+ public String getXmlType() {
+ return xmlType;
+ }
+
+ public void setXmlType(String xmlType) {
+ this.xmlType = xmlType;
+ }
+}
Propchange:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/maven/wsdl2java/JavaXmlTypeMapping.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/apt/java-xml-type-mappings.apt.vm
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/apt/java-xml-type-mappings.apt.vm?rev=1302659&view=auto
==============================================================================
---
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/apt/java-xml-type-mappings.apt.vm
(added)
+++
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/apt/java-xml-type-mappings.apt.vm
Mon Mar 19 21:15:52 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.
+
+ ------------
+ Changing the Java class associated with an XML type
+ ------------
+
+
+Changing the Java class associated with an XML type
+
+ maven-wsdl2java-plugin uses the default mappings between XML types and Java
classes determined by the
+ configured <<<typeMappingVersion>>>. However, there may be situations where
you might want
+ to represent a given XML type using a Java type other than the one
determined by the default mapping.
+ E.g. you might want <<<xs:base64Binary>>> to be represented by
<<<java.activation.DataHandler>>>
+ instead of the default <<<byte[]>>>. This can be achieved using the
<<<javaXmlTypeMappings>>> parameter
+ as shown in the following sample:
+
+%{snippet|id=javaXmlTypeMappings|file=${project.basedir}/../../samples/mtomstub-sample/pom.xml}
+
+ Note the unusual way to represent the QName of the XML type (which the
plugin uses to work around a
+ restriction in Maven).
+
+ This feature is similar to the <<<java-xml-type-mapping>>> element in the
JAX-RPC mapping file defined by the
+ Enterprise Web Services 1.1 specification.
+
+ In addition to specifying a <<<javaXmlTypeMapping>>>, you also need to make
sure that a corresponding
+ type mapping is registered at runtime. This is typically done by adding an
appropriate <<<typeMapping>>>
+ element in the relevant WSDD file.
+
+* Example: consuming an MTOM enabled Web service
+
+ By default stubs generated using wsdl2java don't support MTOM, although Axis
has the necessary
+ serializers/deserializers that recognize <<<xop:Include>>> elements and that
use <<<java.activation.DataHandler>>>
+ to represent the binary data in Java. To enable them, map the
<<<xs:base64Binary>>> type to
+ <<<java.activation.DataHandler>>> as shown above and set up a
<<<client-config.wsdd>>> file with the
+ following type mapping:
+
+%{snippet|id=typeMapping|file=${project.basedir}/../../samples/mtomstub-sample/src/main/resources/client-config.wsdd}
Modified: axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/site.xml
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/site.xml?rev=1302659&r1=1302658&r2=1302659&view=diff
==============================================================================
--- axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/site.xml
(original)
+++ axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/site/site.xml Mon
Mar 19 21:15:52 2012
@@ -23,5 +23,8 @@
<item name="Introduction" href="index.html"/>
<item name="Goals" href="plugin-info.html"/>
</menu>
+ <menu name="Examples">
+ <item name="Changing the Java class associated with an XML type"
href="java-xml-type-mappings.html"/>
+ </menu>
</body>
</project>
Propchange: axis/axis1/java/trunk/samples/mtomstub-sample/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Mar 19 21:15:52 2012
@@ -0,0 +1,4 @@
+.classpath
+.project
+target
+.settings
Added: axis/axis1/java/trunk/samples/mtomstub-sample/pom.xml
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/samples/mtomstub-sample/pom.xml?rev=1302659&view=auto
==============================================================================
--- axis/axis1/java/trunk/samples/mtomstub-sample/pom.xml (added)
+++ axis/axis1/java/trunk/samples/mtomstub-sample/pom.xml Mon Mar 19 21:15:52
2012
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.axis</groupId>
+ <artifactId>samples</artifactId>
+ <version>1.4.1-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>mtomstub-sample</artifactId>
+ <name>MTOM Stub Sample</name>
+ <description>
+ Shows how to enable MTOM on the client side with stubs generated by
wsdl2java.
+ </description>
+ <properties>
+ <cxf.version>2.4.4</cxf.version>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>axis</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxws</artifactId>
+ <version>${cxf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-transports-http-jetty</artifactId>
+ <version>${cxf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <dependencyManagement>
+ <dependencies>
+ <!-- Ensure that we have a version of wsdl4j that is recent enough
for CXF -->
+ <dependency>
+ <groupId>wsdl4j</groupId>
+ <artifactId>wsdl4j</artifactId>
+ <version>1.6.2</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-java2ws-plugin</artifactId>
+ <version>${cxf.version}</version>
+ <executions>
+ <execution>
+ <id>process-classes</id>
+ <phase>process-classes</phase>
+ <configuration>
+
<className>samples.mtomstub.service.DownloadFile</className>
+ <genWsdl>true</genWsdl>
+ </configuration>
+ <goals>
+ <goal>java2ws</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>maven-wsdl2java-plugin</artifactId>
+ <version>${project.version}</version>
+ <configuration>
+ <output>${project.build.directory}/generated/src</output>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>wsdl2java-test</goal>
+ </goals>
+ <configuration>
+
<file>${project.build.directory}/generated/wsdl/DownloadFile.wsdl</file>
+ <mappings>
+ <mapping>
+
<namespace>http://service.mtomstub.samples/</namespace>
+ <package>samples.mtomstub.stub</package>
+ </mapping>
+ </mappings>
+<!-- START SNIPPET: javaXmlTypeMappings -->
+ <javaXmlTypeMappings>
+ <javaXmlTypeMapping>
+
<xmlType>{http://www.w3.org/2001/XMLSchema}base64Binary</xmlType>
+
<javaType>javax.activation.DataHandler</javaType>
+ </javaXmlTypeMapping>
+ </javaXmlTypeMappings>
+<!-- END SNIPPET: javaXmlTypeMappings -->
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Propchange: axis/axis1/java/trunk/samples/mtomstub-sample/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added:
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFile.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFile.java?rev=1302659&view=auto
==============================================================================
---
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFile.java
(added)
+++
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFile.java
Mon Mar 19 21:15:52 2012
@@ -0,0 +1,10 @@
+package samples.mtomstub.service;
+
+import javax.jws.WebService;
+import javax.xml.ws.soap.MTOM;
+
+@WebService
+@MTOM
+public interface DownloadFile {
+ ResponseDownloadFile getFile() throws Exception;
+}
Propchange:
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFile.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFileImpl.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFileImpl.java?rev=1302659&view=auto
==============================================================================
---
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFileImpl.java
(added)
+++
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFileImpl.java
Mon Mar 19 21:15:52 2012
@@ -0,0 +1,17 @@
+package samples.mtomstub.service;
+
+import javax.activation.DataHandler;
+import javax.jws.WebService;
+import javax.mail.util.ByteArrayDataSource;
+
+@WebService(endpointInterface="samples.mtomstub.service.DownloadFile",
serviceName = "DownloadFileWS")
+public class DownloadFileImpl implements DownloadFile {
+ public ResponseDownloadFile getFile() throws Exception {
+ ResponseDownloadFile rdf = new ResponseDownloadFile();
+ String contentType = "text/plain; charset='UTF-8'";
+ rdf.setFileName("readme.txt");
+ rdf.setFileType(contentType);
+ rdf.setFile(new DataHandler(new ByteArrayDataSource("This is the
content".getBytes("UTF-8"), contentType)));
+ return rdf;
+ }
+}
Propchange:
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/DownloadFileImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/ResponseDownloadFile.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/ResponseDownloadFile.java?rev=1302659&view=auto
==============================================================================
---
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/ResponseDownloadFile.java
(added)
+++
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/ResponseDownloadFile.java
Mon Mar 19 21:15:52 2012
@@ -0,0 +1,33 @@
+package samples.mtomstub.service;
+
+import javax.activation.DataHandler;
+
+public class ResponseDownloadFile {
+ private String fileName;
+ private String fileType;
+ private DataHandler file;
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public String getFileType() {
+ return fileType;
+ }
+
+ public void setFileType(String fileType) {
+ this.fileType = fileType;
+ }
+
+ public DataHandler getFile() {
+ return file;
+ }
+
+ public void setFile(DataHandler file) {
+ this.file = file;
+ }
+}
Propchange:
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/java/samples/mtomstub/service/ResponseDownloadFile.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/resources/client-config.wsdd
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/samples/mtomstub-sample/src/main/resources/client-config.wsdd?rev=1302659&view=auto
==============================================================================
---
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/resources/client-config.wsdd
(added)
+++
axis/axis1/java/trunk/samples/mtomstub-sample/src/main/resources/client-config.wsdd
Mon Mar 19 21:15:52 2012
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deployment name="defaultClientConfig"
+ xmlns="http://xml.apache.org/axis/wsdd/"
+ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <globalConfiguration>
+ <parameter name="disablePrettyXML" value="true"/>
+ <parameter name="enableNamespacePrefixOptimization" value="false"/>
+ </globalConfiguration>
+ <transport name="http"
pivot="java:org.apache.axis.transport.http.HTTPSender"/>
+ <transport name="local"
pivot="java:org.apache.axis.transport.local.LocalSender"/>
+ <transport name="java"
pivot="java:org.apache.axis.transport.java.JavaSender"/>
+<!-- START SNIPPET: typeMapping -->
+ <typeMapping languageSpecificType="java:javax.activation.DataHandler"
qname="xs:base64Binary"
+
deserializer="org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory"
+
serializer="org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory"
+ encodingStyle=""/>
+<!-- END SNIPPET: typeMapping -->
+</deployment>
+
Added:
axis/axis1/java/trunk/samples/mtomstub-sample/src/test/java/samples/mtomstub/TestDownloadFile.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/samples/mtomstub-sample/src/test/java/samples/mtomstub/TestDownloadFile.java?rev=1302659&view=auto
==============================================================================
---
axis/axis1/java/trunk/samples/mtomstub-sample/src/test/java/samples/mtomstub/TestDownloadFile.java
(added)
+++
axis/axis1/java/trunk/samples/mtomstub-sample/src/test/java/samples/mtomstub/TestDownloadFile.java
Mon Mar 19 21:15:52 2012
@@ -0,0 +1,21 @@
+package samples.mtomstub;
+
+import java.net.URL;
+
+import javax.xml.ws.Endpoint;
+
+import junit.framework.TestCase;
+import samples.mtomstub.service.DownloadFileImpl;
+import samples.mtomstub.stub.DownloadFile;
+import samples.mtomstub.stub.DownloadFileServiceLocator;
+
+public class TestDownloadFile extends TestCase {
+ public void test() throws Exception {
+ // TODO: allocate random port here
+ String url = "http://localhost:8080/DownloadFile";
+ Endpoint endpoint = Endpoint.publish(url, new DownloadFileImpl());
+ DownloadFile downloadFile = new
DownloadFileServiceLocator().getDownloadFilePort(new URL(url));
+ downloadFile.getFile().getFile().writeTo(System.out);
+ endpoint.stop();
+ }
+}
Propchange:
axis/axis1/java/trunk/samples/mtomstub-sample/src/test/java/samples/mtomstub/TestDownloadFile.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: axis/axis1/java/trunk/samples/pom.xml
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/samples/pom.xml?rev=1302659&r1=1302658&r2=1302659&view=diff
==============================================================================
--- axis/axis1/java/trunk/samples/pom.xml (original)
+++ axis/axis1/java/trunk/samples/pom.xml Mon Mar 19 21:15:52 2012
@@ -41,6 +41,7 @@
<module>jaxm-sample</module>
<module>jaxrpc-sample</module>
<module>message-sample</module>
+ <module>mtomstub-sample</module>
<module>misc-sample</module>
<module>proxy-sample</module>
<module>stock-sample</module>
Modified: axis/axis1/java/trunk/src/site/apt/changelogs/1_4_1.apt
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/src/site/apt/changelogs/1_4_1.apt?rev=1302659&r1=1302658&r2=1302659&view=diff
==============================================================================
--- axis/axis1/java/trunk/src/site/apt/changelogs/1_4_1.apt (original)
+++ axis/axis1/java/trunk/src/site/apt/changelogs/1_4_1.apt Mon Mar 19 21:15:52
2012
@@ -38,4 +38,9 @@ Changes from 1.4 final
as a drop-in replacement for <<<HTTPSender>>>. However, it requires Java
1.5
because it relies on features of the <<<java.net.HttpURLConnection>>>
API that were not available in
earlier Java versions.
+
+ * It is now possible to change the Java class associated with an XML type
when generating a client stub.
+ Note that this is only supported by the maven-wsdl2java-plugin, but not
by the corresponding Ant task
+ or command line tool. The feature can be used to consume MTOM enabled
services. Check the
+ {{{../maven/maven-wsdl2java-plugin/java-xml-type-mappings.html}plugin
documentation}} for more information.