Author: barrettj
Date: Tue Oct 5 15:11:30 2010
New Revision: 1004667
URL: http://svn.apache.org/viewvc?rev=1004667&view=rev
Log:
Add support for Doc/Lit/Bare operations with no arguments. These flow as
messages with empty soap:Body elements. Also add associated unit and
integration tests.
Added:
axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbarenoarg.wsdl
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareNoArgTests.java
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/DocLitBareNoArgPortTypeImpl.java
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/META-INF/
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/META-INF/doclitbarenoarg.wsdl
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/BareDocLitNoArgService.java
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/DocLitBareNoArgPortType.java
Modified:
axis/axis2/java/core/trunk/modules/jaxws-integration/pom.xml
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedDispatcher.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedOperationDispatcher.java
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java
Modified: axis/axis2/java/core/trunk/modules/jaxws-integration/pom.xml
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/pom.xml?rev=1004667&r1=1004666&r2=1004667&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws-integration/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/jaxws-integration/pom.xml Tue Oct 5
15:11:30 2010
@@ -967,6 +967,19 @@
<zip
destfile="${servicejars.dir}/BareDocLitService.jar"
basedir="${servicejars.dir}/BareDocLitService" />
<delete
dir="${servicejars.dir}/BareDocLitService" />
+ <copy
toDir="${servicejars.dir}/BareDocLitNoArgService/">
+ <fileset dir="target/test-classes">
+ <include
name="org/apache/axis2/jaxws/sample/doclitbarenoarg/**" />
+ </fileset>
+ <fileset
dir="test/org/apache/axis2/jaxws/sample/doclitbarenoarg">
+ <include name="META-INF/**" />
+ </fileset>
+ </copy>
+
+ <zip
destfile="${servicejars.dir}/BareDocLitNoArgService.jar"
+
basedir="${servicejars.dir}/BareDocLitNoArgService" />
+ <delete
dir="${servicejars.dir}/BareDocLitNoArgService" />
+
<copy
toDir="${servicejars.dir}/EchoMessageService/">
<fileset dir="target/test-classes">
<include
name="org/apache/axis2/jaxws/nonanonymous/complextype/**" />
@@ -1258,6 +1271,7 @@
<include>**/MTOMFeatureTests.java</include>
<include>**/JAXBProviderTests.java</include>
<include>**/BareTests.java</include>
+ <include>**/BareNoArgTests.java</include>
<include>**/AddNumbersHandlerTests.java</include>
<include>**/HeadersHandlerTests.java</include>
<include>**/AddNumbersTests.java</include>
Added:
axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbarenoarg.wsdl
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbarenoarg.wsdl?rev=1004667&view=auto
==============================================================================
---
axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbarenoarg.wsdl
(added)
+++
axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbarenoarg.wsdl
Tue Oct 5 15:11:30 2010
@@ -0,0 +1,68 @@
+<?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.
+ -->
+
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="DoclitBareNoArg"
+ targetNamespace="http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org">
+
+ <wsdl:types>
+ <xsd:schema
+
targetNamespace="http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org"
+
xmlns:tns="http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="String" type="xsd:string" />
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="NoParam" />
+
+ <wsdl:message name="echoStringOut">
+ <wsdl:part name="echoStringOut" element="tns:String" />
+ </wsdl:message>
+
+ <wsdl:portType name="DocLitBareNoArgPortType">
+ <wsdl:operation name="twoWayEmpty">
+ <wsdl:input message="tns:NoParam" />
+ <wsdl:output message="tns:echoStringOut" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="DocLitBareNoArg" type="tns:DocLitBareNoArgPortType">
+ <soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="twoWayEmpty">
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="BareDocLitNoArgService">
+ <wsdl:port binding="tns:DocLitBareNoArg" name="BareDocLitNoArgPort">
+ <soap:address
location="http://localhost:6060/axis2/services/BareDocLitNoArgService" />
+ </wsdl:port>
+ </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
Added:
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareNoArgTests.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareNoArgTests.java?rev=1004667&view=auto
==============================================================================
---
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareNoArgTests.java
(added)
+++
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareNoArgTests.java
Tue Oct 5 15:11:30 2010
@@ -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.jaxws.sample;
+
+import org.apache.axis2.jaxws.framework.AbstractTestCase;
+import
org.apache.axis2.jaxws.sample.doclitbarenoarg.sei.BareDocLitNoArgService;
+import
org.apache.axis2.jaxws.sample.doclitbarenoarg.sei.DocLitBareNoArgPortType;
+
+import javax.xml.ws.BindingProvider;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class BareNoArgTests extends AbstractTestCase {
+
+ static final String ENDPOINT_URL =
+
"http://localhost:6060/axis2/services/BareDocLitNoArgService.DocLitBareNoArgPortTypeImplPort";
+
+ public static Test suite() {
+ return getTestSetup(new TestSuite(BareNoArgTests.class));
+ }
+
+ public void testTwoWayEmpty_With_SOAPACTION() {
+ BareDocLitNoArgService service = new BareDocLitNoArgService();
+ DocLitBareNoArgPortType proxy = service.getBareDocLitNoArgPort();
+ BindingProvider p = (BindingProvider) proxy;
+
+ p.getRequestContext().put(BindingProvider.SOAPACTION_USE_PROPERTY,
Boolean.TRUE);
+ p.getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY,
"twoWayEmpty");
+ p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
ENDPOINT_URL);
+
+ String response = proxy.twoWayEmpty();
+ assertTrue("Did not receive expected response value",
+
"org.apache.axis2.jaxws.sample.doclitbarenoarg.DocLitBareNoArgPortTypeImpl.twoWayEmpty".equals(response));
+ }
+
+ public void testTwoWayEmpty_No_SOAPACTION() {
+ BareDocLitNoArgService service = new BareDocLitNoArgService();
+ DocLitBareNoArgPortType proxy = service.getBareDocLitNoArgPort();
+ BindingProvider p = (BindingProvider) proxy;
+
+ p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
ENDPOINT_URL);
+
+ String response = proxy.twoWayEmpty();
+ assertTrue("Did not receive expected response value",
+
"org.apache.axis2.jaxws.sample.doclitbarenoarg.DocLitBareNoArgPortTypeImpl.twoWayEmpty".equals(response));
+ }
+}
Added:
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/DocLitBareNoArgPortTypeImpl.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/DocLitBareNoArgPortTypeImpl.java?rev=1004667&view=auto
==============================================================================
---
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/DocLitBareNoArgPortTypeImpl.java
(added)
+++
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/DocLitBareNoArgPortTypeImpl.java
Tue Oct 5 15:11:30 2010
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.jaxws.sample.doclitbarenoarg;
+
+import
org.apache.axis2.jaxws.sample.doclitbarenoarg.sei.DocLitBareNoArgPortType;
+
+import javax.jws.WebService;
+
+...@webservice(serviceName="BareDocLitNoArgService",
+
endpointInterface="org.apache.axis2.jaxws.sample.doclitbarenoarg.sei.DocLitBareNoArgPortType")
+public class DocLitBareNoArgPortTypeImpl implements DocLitBareNoArgPortType {
+
+ /* (non-Javadoc)
+ * @see
org.apache.axis2.jaxws.sample.doclitbarenoarg.sei.DocLitBareNoArgPortType#twoWayEmpty()
+ */
+ public String twoWayEmpty() {
+ return
"org.apache.axis2.jaxws.sample.doclitbarenoarg.DocLitBareNoArgPortTypeImpl.twoWayEmpty";
+ }
+
+}
Added:
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/META-INF/doclitbarenoarg.wsdl
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/META-INF/doclitbarenoarg.wsdl?rev=1004667&view=auto
==============================================================================
---
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/META-INF/doclitbarenoarg.wsdl
(added)
+++
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/META-INF/doclitbarenoarg.wsdl
Tue Oct 5 15:11:30 2010
@@ -0,0 +1,68 @@
+<?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.
+ -->
+
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="DoclitBareNoArg"
+ targetNamespace="http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org">
+
+ <wsdl:types>
+ <xsd:schema
+
targetNamespace="http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org"
+
xmlns:tns="http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="String" type="xsd:string" />
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="NoParam" />
+
+ <wsdl:message name="echoStringOut">
+ <wsdl:part name="echoStringOut" element="tns:String" />
+ </wsdl:message>
+
+ <wsdl:portType name="DocLitBareNoArgPortType">
+ <wsdl:operation name="twoWayEmpty">
+ <wsdl:input message="tns:NoParam" />
+ <wsdl:output message="tns:echoStringOut" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="DocLitBareNoArg" type="tns:DocLitBareNoArgPortType">
+ <soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="twoWayEmpty">
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="BareDocLitNoArgService">
+ <wsdl:port binding="tns:DocLitBareNoArg" name="BareDocLitNoArgPort">
+ <soap:address
location="http://localhost:6060/axis2/services/BareDocLitNoArgService" />
+ </wsdl:port>
+ </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
Added:
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/BareDocLitNoArgService.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/BareDocLitNoArgService.java?rev=1004667&view=auto
==============================================================================
---
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/BareDocLitNoArgService.java
(added)
+++
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/BareDocLitNoArgService.java
Tue Oct 5 15:11:30 2010
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+
+//
+// Generated By:JAX-WS RI IBM 2.1.1 in JDK 6 (JAXB RI IBM JAXB 2.1.3 in JDK
1.6)
+//
+
+
+package org.apache.axis2.jaxws.sample.doclitbarenoarg.sei;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+import javax.xml.ws.WebServiceFeature;
+
+...@webserviceclient(name = "BareDocLitNoArgService", targetNamespace =
"http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org", wsdlLocation =
"doclitbarenoarg.wsdl")
+public class BareDocLitNoArgService
+ extends Service
+{
+
+ private final static URL BAREDOCLITNOARGSERVICE_WSDL_LOCATION;
+
+ private static String wsdlLocation =
"/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/META-INF/doclitbarenoarg.wsdl";
+ static {
+ URL url = null;
+ try {
+ String baseDir = new
File(System.getProperty("basedir",".")).getCanonicalPath();
+ wsdlLocation = new File(baseDir + wsdlLocation).getAbsolutePath();
+ File file = new File(wsdlLocation);
+ url = file.toURL();
+// url = new
URL("file:/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/META-INF/doclitbarenoarg.wsdl");
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ BAREDOCLITNOARGSERVICE_WSDL_LOCATION = url;
+ }
+
+ public BareDocLitNoArgService(URL wsdlLocation, QName serviceName) {
+ super(wsdlLocation, serviceName);
+ }
+
+ public BareDocLitNoArgService() {
+ super(BAREDOCLITNOARGSERVICE_WSDL_LOCATION, new
QName("http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org",
"BareDocLitNoArgService"));
+ }
+
+ /**
+ *
+ * @return
+ * returns DocLitBareNoArgPortType
+ */
+ @WebEndpoint(name = "BareDocLitNoArgPort")
+ public DocLitBareNoArgPortType getBareDocLitNoArgPort() {
+ return (DocLitBareNoArgPortType)super.getPort(new
QName("http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org",
"BareDocLitNoArgPort"), DocLitBareNoArgPortType.class);
+ }
+
+ /**
+ *
+ * @param features
+ * A list of {...@link javax.xml.ws.WebServiceFeature} to configure on
the proxy. Supported features not in the <code>features</code> parameter will
have their default values.
+ * @return
+ * returns DocLitBareNoArgPortType
+ */
+ @WebEndpoint(name = "BareDocLitNoArgPort")
+ public DocLitBareNoArgPortType getBareDocLitNoArgPort(WebServiceFeature...
features) {
+ return (DocLitBareNoArgPortType)super.getPort(new
QName("http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org",
"BareDocLitNoArgPort"), DocLitBareNoArgPortType.class, features);
+ }
+
+}
Added:
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/DocLitBareNoArgPortType.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/DocLitBareNoArgPortType.java?rev=1004667&view=auto
==============================================================================
---
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/DocLitBareNoArgPortType.java
(added)
+++
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbarenoarg/sei/DocLitBareNoArgPortType.java
Tue Oct 5 15:11:30 2010
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+
+//
+// Generated By:JAX-WS RI IBM 2.1.1 in JDK 6 (JAXB RI IBM JAXB 2.1.3 in JDK
1.6)
+//
+
+
+package org.apache.axis2.jaxws.sample.doclitbarenoarg.sei;
+
+import javax.jws.WebMethod;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+...@webservice(name = "DocLitBareNoArgPortType", targetNamespace =
"http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org")
+...@soapbinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+public interface DocLitBareNoArgPortType {
+
+
+ /**
+ *
+ * @return
+ * returns java.lang.String
+ */
+ @WebMethod
+ @WebResult(name = "String", targetNamespace =
"http://sei.doclitbarenoarg.sample.jaxws.axis2.apache.org", partName =
"echoStringOut")
+ public String twoWayEmpty();
+
+}
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java?rev=1004667&r1=1004666&r2=1004667&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
Tue Oct 5 15:11:30 2010
@@ -1260,9 +1260,14 @@ public class WSDL11ToAxisServiceBuilder
wsdl4jMessage.getQName().getLocalPart());
}
} else {
- // this is allowed in the spec in this case element qname
is null and nothing is send
- // in the soap body
+ // This is allowed in the spec in this case element qname
is null and nothing is send
+ // in the soap body. This is true for Doc/Lit/Bare
operations that do not have any paramaters.
+ // In this case, add a mapping of the operation to a null
key so the empty body can be routed on
+ // (for example in SOAPMessageBodyBasedDispatcher).
message.setElementQName(null);
+ AxisOperation operation = message.getAxisOperation();
+ AxisService service = operation.getAxisService();
+ service.addMessageElementQNameToOperationMapping(null,
operation);
}
} else {
if (bindingPartsList.size() == 0) {
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedDispatcher.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedDispatcher.java?rev=1004667&r1=1004666&r2=1004667&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedDispatcher.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedDispatcher.java
Tue Oct 5 15:11:30 2010
@@ -52,7 +52,6 @@ public class SOAPMessageBodyBasedDispatc
throws AxisFault {
String localName =
messageContext.getEnvelope().getSOAPBodyFirstElementLocalName();
-
AxisOperation axisOperation = null;
if (localName != null){
OMNamespace ns =
messageContext.getEnvelope().getSOAPBodyFirstElementNS();
@@ -68,6 +67,10 @@ public class SOAPMessageBodyBasedDispatc
axisOperation = service.getOperation(operationName);
}
+ } else {
+ // Doc/Lit/Bare no arg messages can have an empty body.
+ // See if any operations were registered with an empty body
+ axisOperation = service.getOperationByMessageElementQName(null);
}
return axisOperation;
}
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedOperationDispatcher.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedOperationDispatcher.java?rev=1004667&r1=1004666&r2=1004667&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedOperationDispatcher.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/dispatchers/SOAPMessageBodyBasedOperationDispatcher.java
Tue Oct 5 15:11:30 2010
@@ -40,7 +40,9 @@ public class SOAPMessageBodyBasedOperati
throws AxisFault {
String localPart =
messageContext.getEnvelope().getSOAPBodyFirstElementLocalName();
if (localPart == null) {
- return null;
+ // Doc/Lit/Bare no arg; see if an operation is registered.
+ AxisOperation axisOperation =
service.getOperationByMessageElementQName(null);
+ return axisOperation;
}
if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
log.debug(messageContext.getLogIDString() +
Modified:
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java?rev=1004667&r1=1004666&r2=1004667&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
(original)
+++
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
Tue Oct 5 15:11:30 2010
@@ -497,6 +497,13 @@ class OperationDescriptionImpl
break;
}
}
+ } else {
+ // There are no parameters for this Doc/Lit/Bare operation.
That means the inbound soap:Body will
+ // be empty, so when asking the Body for the first element
QName for routing purposes, a null will
+ // be returned. By mapping a null key to this operation here,
it will be the one found for the null
+ // element during routing.
+
getEndpointInterfaceDescriptionImpl().getEndpointDescriptionImpl().getAxisService()
+ .addMessageElementQNameToOperationMapping(null,
newAxisOperation);
}
}
return newAxisOperation;
Modified:
axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java?rev=1004667&r1=1004666&r2=1004667&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java
(original)
+++
axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java
Tue Oct 5 15:11:30 2010
@@ -173,10 +173,16 @@ public class DocLitBareResolveOperationT
QName messageElementQName = new
QName("http://description.jaxws.axis2.apache.org/",
"op7");
+ // We should *not* be able to find the operation based on a QName
containing the name, but
+ // we should be able to find it based on a null. That is because a
Doc/Lit/Bare no-argument
+ // message will have an empty soap:Body
AxisOperation axisOperationFromElement =
axisService.getOperationByMessageElementQName(messageElementQName);
assertNull(axisOperationFromElement);
-
+ axisOperationFromElement =
+ axisService.getOperationByMessageElementQName(null);
+ assertNotNull(axisOperationFromElement);
+ assertEquals(axisOperationFromOpName, axisOperationFromElement);
}
public void testDocLitBareHeaderParamFirst() {