Author: tho...@jb...
Date: 2006-07-03 13:31:58 -0400 (Mon, 03 Jul 2006)
New Revision: 545
Added:
trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_RequestStruct.java
trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_ResponseStruct.java
Modified:
trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionDocEndpointImpl.java
trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_bar_RequestStruct.java
trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_bar_ResponseStruct.java
trunk/src/test/java/org/jboss/test/ws/addressing/action/AddressingActionTestCase.java
trunk/src/test/java/org/jboss/test/ws/addressing/action/ClientDocHandler.java
trunk/src/test/resources/addressing/action/Doc-META-INF/jaxrpc-mapping.xml
trunk/src/test/resources/addressing/action/Doc-META-INF/wsdl/ActionDocService.wsdl
Log:
Add support for @RequestWrapper, @ResponseWrapper
Modified: trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java 2006-07-03 17:31:58 UTC (rev 545)
@@ -48,6 +48,8 @@
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.TypeMappingRegistry;
import javax.xml.rpc.holders.Holder;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
import javax.xml.ws.addressing.AddressingProperties;
import org.jboss.logging.Logger;
@@ -289,30 +291,70 @@
{
xmlName = opMetaData.getXmlName();
xmlType = opMetaData.getXmlName();
- String epName = epMetaData.getQName().getLocalPart();
- if (epName.endsWith("Port"))
- epName = epName.substring(0, epName.lastIndexOf("Port"));
- wrappedParameter = new ParameterMetaData(opMetaData, xmlName, xmlType, null);
+ String requestWrapperType = null;
+ if (method.isAnnotationPresent(RequestWrapper.class))
+ {
+ RequestWrapper anReqWrapper = method.getAnnotation(RequestWrapper.class);
+
+ String localName = (anReqWrapper.localName().length() > 0 ? anReqWrapper.localName() : operationName);
+ String targetNamespace = (anReqWrapper.targetNamespace().length() > 0 ? anReqWrapper.targetNamespace() : epMetaData.getQName().getNamespaceURI());
+ xmlName = new QName(targetNamespace, localName);
+
+ if (anReqWrapper.className().length() > 0)
+ {
+ requestWrapperType = anReqWrapper.className();
+
+ TypeMappingMetaData tmMetaData = new TypeMappingMetaData(typesMetaData, xmlType, requestWrapperType);
+ typesMetaData.addTypeMapping(tmMetaData);
+ }
+ }
+
+ wrappedParameter = new ParameterMetaData(opMetaData, xmlName, xmlType, requestWrapperType);
wrappedElementNames = new ArrayList<QName>(parameterTypes.length);
wrappedVariables = new ArrayList<String>(parameterTypes.length);
wrappedTypes = new ArrayList<String>(parameterTypes.length);
wrappedParameter.setWrappedElementNames(wrappedElementNames);
wrappedParameter.setWrappedVariables(wrappedVariables);
wrappedParameter.setWrappedTypes(wrappedTypes);
-
opMetaData.addParameter(wrappedParameter);
+ // Generate temporary wrapper types so that tools can generate the correct wsdl
+ if (requestWrapperType == null)
+ ParameterWrapping.generateWrapper(wrappedParameter, false);
+
if (!opMetaData.isOneWayOperation())
{
xmlName = new QName(targetNS, operationName + "Response");
xmlType = new QName(targetNS, operationName + "Response");
- ParameterMetaData retMetaData = new ParameterMetaData(opMetaData, xmlName, xmlType, null);
+ String responseWrapperType = null;
+ if (method.isAnnotationPresent(ResponseWrapper.class))
+ {
+ ResponseWrapper anResWrapper = method.getAnnotation(ResponseWrapper.class);
+
+ String localName = (anResWrapper.localName().length() > 0 ? anResWrapper.localName() : operationName + "Response");
+ String targetNamespace = (anResWrapper.targetNamespace().length() > 0 ? anResWrapper.targetNamespace() : epMetaData.getQName().getNamespaceURI());
+ xmlName = new QName(targetNamespace, localName);
+
+ if (anResWrapper.className().length() > 0)
+ {
+ responseWrapperType = anResWrapper.className();
+
+ TypeMappingMetaData tmMetaData = new TypeMappingMetaData(typesMetaData, xmlType, responseWrapperType);
+ typesMetaData.addTypeMapping(tmMetaData);
+ }
+ }
+
+ ParameterMetaData retMetaData = new ParameterMetaData(opMetaData, xmlName, xmlType, responseWrapperType);
retMetaData.setWrappedVariables(new ArrayList<String>(1));
retMetaData.setWrappedElementNames(new ArrayList<QName>(1));
retMetaData.setWrappedTypes(new ArrayList<String>(1));
opMetaData.setReturnParameter(retMetaData);
+
+ // Generate temporary wrapper types so that tools can generate the correct wsdl
+ if (responseWrapperType == null)
+ ParameterWrapping.generateWrapper(retMetaData, false);
}
}
@@ -333,9 +375,6 @@
if (xmlType == null)
xmlType = getWebParamType(opMetaData, javaType);
- TypeMappingMetaData tmMetaData = new TypeMappingMetaData(typesMetaData, xmlType, javaTypeName);
- typesMetaData.addTypeMapping(tmMetaData);
-
if (isWrapped)
{
QName wrappedElementName = getWebParamName(opMetaData, typeIndexes, javaType, anWebParam);
@@ -351,6 +390,9 @@
}
else
{
+ TypeMappingMetaData tmMetaData = new TypeMappingMetaData(typesMetaData, xmlType, javaTypeName);
+ typesMetaData.addTypeMapping(tmMetaData);
+
xmlName = getWebParamName(opMetaData, typeIndexes, javaType, anWebParam);
xmlType = typeMapping.getXMLType(javaType);
if (xmlType == null)
@@ -384,9 +426,6 @@
if (xmlType == null)
xmlType = getWebResultType(targetNS, returnType);
- TypeMappingMetaData tmMetaData = new TypeMappingMetaData(typesMetaData, xmlType, returnTypeName);
- typesMetaData.addTypeMapping(tmMetaData);
-
if (opMetaData.isDocumentWrapped())
{
QName elementName = getWebResultName(opMetaData, returnType, method.getAnnotation(WebResult.class));
@@ -398,20 +437,15 @@
}
else
{
+ TypeMappingMetaData tmMetaData = new TypeMappingMetaData(typesMetaData, xmlType, returnTypeName);
+ typesMetaData.addTypeMapping(tmMetaData);
+
xmlName = getWebResultName(opMetaData, returnType, method.getAnnotation(WebResult.class));
ParameterMetaData retMetaData = new ParameterMetaData(opMetaData, xmlName, xmlType, returnTypeName);
opMetaData.setReturnParameter(retMetaData);
}
}
- // Generate temporary wrapper types so that tools can generate the correct wsdl
- if (opMetaData.isDocumentWrapped())
- {
- ParameterWrapping.generateWrapper(wrappedParameter, false);
- if (!opMetaData.isOneWayOperation())
- ParameterWrapping.generateWrapper(opMetaData.getReturnParameter(), false);
- }
-
// Add faults
for (Class exClass : method.getExceptionTypes())
if (!RemoteException.class.isAssignableFrom(exClass))
Modified: trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionDocEndpointImpl.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionDocEndpointImpl.java 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionDocEndpointImpl.java 2006-07-03 17:31:58 UTC (rev 545)
@@ -25,8 +25,11 @@
import javax.jws.WebMethod;
import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPMessageHandler;
import javax.jws.soap.SOAPMessageHandlers;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
import org.jboss.logging.Logger;
@@ -37,6 +40,7 @@
*
* @since 24-Nov-2005
*/
+@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
@WebService(name = "ActionEndpoint", targetNamespace = "http://org.jboss.ws/addressing/action", wsdlLocation = "WEB-INF/wsdl/ActionDocService.wsdl")
@SOAPMessageHandlers( { @SOAPMessageHandler(className = "org.jboss.ws.addressing.soap.SOAPServerHandler") })
public class ActionDocEndpointImpl implements ActionEndpoint
@@ -44,14 +48,18 @@
// provide logging
private static Logger log = Logger.getLogger(ActionDocEndpointImpl.class);
- @WebMethod (action = "urn:wsa-action-foo")
+ @WebMethod(action = "urn:wsa-action-foo")
+ @RequestWrapper(className = "org.jboss.test.ws.addressing.action.ActionEndpoint_foo_RequestStruct")
+ @ResponseWrapper(className = "org.jboss.test.ws.addressing.action.ActionEndpoint_foo_ResponseStruct")
public String foo(String item)
{
log.info("foo: " + item);
return "foo:" + item;
}
- @WebMethod (action = "urn:wsa-action-bar")
+ @WebMethod(action = "urn:wsa-action-bar")
+ @RequestWrapper(className = "org.jboss.test.ws.addressing.action.ActionEndpoint_bar_RequestStruct")
+ @ResponseWrapper(className = "org.jboss.test.ws.addressing.action.ActionEndpoint_bar_ResponseStruct")
public String bar(String item)
{
log.info("bar: " + item);
Modified: trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_bar_RequestStruct.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_bar_RequestStruct.java 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_bar_RequestStruct.java 2006-07-03 17:31:58 UTC (rev 545)
@@ -5,22 +5,34 @@
package org.jboss.test.ws.addressing.action;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
-public class ActionEndpoint_bar_RequestStruct {
- protected java.lang.String String_1;
-
- public ActionEndpoint_bar_RequestStruct() {
- }
-
- public ActionEndpoint_bar_RequestStruct(java.lang.String String_1) {
- this.String_1 = String_1;
- }
-
- public java.lang.String getString_1() {
- return String_1;
- }
-
- public void setString_1(java.lang.String String_1) {
- this.String_1 = String_1;
- }
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "bar", namespace = "http://org.jboss.ws/addressing/action", propOrder = { "String_1" })
+public class ActionEndpoint_bar_RequestStruct
+{
+ @XmlElement(required = true)
+ protected String String_1;
+
+ public ActionEndpoint_bar_RequestStruct()
+ {
+ }
+
+ public ActionEndpoint_bar_RequestStruct(String String_1)
+ {
+ this.String_1 = String_1;
+ }
+
+ public String getString_1()
+ {
+ return String_1;
+ }
+
+ public void setString_1(String String_1)
+ {
+ this.String_1 = String_1;
+ }
}
Modified: trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_bar_ResponseStruct.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_bar_ResponseStruct.java 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_bar_ResponseStruct.java 2006-07-03 17:31:58 UTC (rev 545)
@@ -5,22 +5,34 @@
package org.jboss.test.ws.addressing.action;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
-public class ActionEndpoint_bar_ResponseStruct {
- protected java.lang.String result;
-
- public ActionEndpoint_bar_ResponseStruct() {
- }
-
- public ActionEndpoint_bar_ResponseStruct(java.lang.String result) {
- this.result = result;
- }
-
- public java.lang.String getResult() {
- return result;
- }
-
- public void setResult(java.lang.String result) {
- this.result = result;
- }
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "barResponse", namespace = "http://org.jboss.ws/addressing/action", propOrder = { "result" })
+public class ActionEndpoint_bar_ResponseStruct
+{
+ @XmlElement(required = true)
+ protected String result;
+
+ public ActionEndpoint_bar_ResponseStruct()
+ {
+ }
+
+ public ActionEndpoint_bar_ResponseStruct(String result)
+ {
+ this.result = result;
+ }
+
+ public String getResult()
+ {
+ return result;
+ }
+
+ public void setResult(String result)
+ {
+ this.result = result;
+ }
}
Added: trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_RequestStruct.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_RequestStruct.java 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_RequestStruct.java 2006-07-03 17:31:58 UTC (rev 545)
@@ -0,0 +1,38 @@
+// This class was generated by the JAXRPC SI, do not edit.
+// Contents subject to change without notice.
+// JAX-RPC Standard Implementation (1.1.2_01, build R40)
+// Generated source version: 1.1.2
+
+package org.jboss.test.ws.addressing.action;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "foo", namespace = "http://org.jboss.ws/addressing/action", propOrder = { "String_1" })
+public class ActionEndpoint_foo_RequestStruct
+{
+ @XmlElement(required = true)
+ protected String String_1;
+
+ public ActionEndpoint_foo_RequestStruct()
+ {
+ }
+
+ public ActionEndpoint_foo_RequestStruct(String String_1)
+ {
+ this.String_1 = String_1;
+ }
+
+ public String getString_1()
+ {
+ return String_1;
+ }
+
+ public void setString_1(String String_1)
+ {
+ this.String_1 = String_1;
+ }
+}
Property changes on: trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_RequestStruct.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_ResponseStruct.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_ResponseStruct.java 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_ResponseStruct.java 2006-07-03 17:31:58 UTC (rev 545)
@@ -0,0 +1,38 @@
+// This class was generated by the JAXRPC SI, do not edit.
+// Contents subject to change without notice.
+// JAX-RPC Standard Implementation (1.1.2_01, build R40)
+// Generated source version: 1.1.2
+
+package org.jboss.test.ws.addressing.action;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "fooResponse", namespace = "http://org.jboss.ws/addressing/action", propOrder = { "result" })
+public class ActionEndpoint_foo_ResponseStruct
+{
+ @XmlElement(required = true)
+ protected String result;
+
+ public ActionEndpoint_foo_ResponseStruct()
+ {
+ }
+
+ public ActionEndpoint_foo_ResponseStruct(String result)
+ {
+ this.result = result;
+ }
+
+ public String getResult()
+ {
+ return result;
+ }
+
+ public void setResult(String result)
+ {
+ this.result = result;
+ }
+}
Property changes on: trunk/src/test/java/org/jboss/test/ws/addressing/action/ActionEndpoint_foo_ResponseStruct.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: trunk/src/test/java/org/jboss/test/ws/addressing/action/AddressingActionTestCase.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/addressing/action/AddressingActionTestCase.java 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/test/java/org/jboss/test/ws/addressing/action/AddressingActionTestCase.java 2006-07-03 17:31:58 UTC (rev 545)
@@ -61,15 +61,15 @@
}
}
+ public void testRpcEndpoint() throws Exception
+ {
+ assertEquals("bar:HelloBar", rpcEndpoint.bar("HelloBar"));
+ assertEquals("bar:HelloFoo", rpcEndpoint.foo("HelloFoo"));
+ }
+
public void testDocEndpoint() throws Exception
{
+ assertEquals("bar:HelloBar", docEndpoint.bar("HelloBar"));
assertEquals("bar:HelloFoo", docEndpoint.foo("HelloFoo"));
- assertEquals("bar:HelloBar", docEndpoint.bar("HelloBar"));
}
-
- public void testRpcEndpoint() throws Exception
- {
- assertEquals("bar:HelloFoo", rpcEndpoint.foo("HelloFoo"));
- assertEquals("bar:HelloBar", rpcEndpoint.bar("HelloBar"));
- }
}
Modified: trunk/src/test/java/org/jboss/test/ws/addressing/action/ClientDocHandler.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/addressing/action/ClientDocHandler.java 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/test/java/org/jboss/test/ws/addressing/action/ClientDocHandler.java 2006-07-03 17:31:58 UTC (rev 545)
@@ -24,7 +24,6 @@
import java.net.URISyntaxException;
import javax.xml.namespace.QName;
-import javax.xml.rpc.handler.GenericHandler;
import javax.xml.rpc.handler.MessageContext;
import javax.xml.ws.addressing.AddressingBuilder;
import javax.xml.ws.addressing.AddressingProperties;
Modified: trunk/src/test/resources/addressing/action/Doc-META-INF/jaxrpc-mapping.xml
===================================================================
--- trunk/src/test/resources/addressing/action/Doc-META-INF/jaxrpc-mapping.xml 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/test/resources/addressing/action/Doc-META-INF/jaxrpc-mapping.xml 2006-07-03 17:31:58 UTC (rev 545)
@@ -9,7 +9,6 @@
<package-type>org.jboss.test.ws.addressing.action</package-type>
<namespaceURI>http://org.jboss.ws/addressing/action</namespaceURI>
</package-mapping>
- <!--
<java-xml-type-mapping>
<java-type>org.jboss.test.ws.addressing.action.ActionEndpoint_foo_ResponseStruct</java-type>
<root-type-qname xmlns:typeNS="http://org.jboss.ws/addressing/action">typeNS:fooResponse</root-type-qname>
@@ -19,7 +18,6 @@
<xml-element-name>result</xml-element-name>
</variable-mapping>
</java-xml-type-mapping>
- -->
<java-xml-type-mapping>
<java-type>org.jboss.test.ws.addressing.action.ActionEndpoint_bar_ResponseStruct</java-type>
<root-type-qname xmlns:typeNS="http://org.jboss.ws/addressing/action">typeNS:barResponse</root-type-qname>
@@ -29,7 +27,6 @@
<xml-element-name>result</xml-element-name>
</variable-mapping>
</java-xml-type-mapping>
- <!--
<java-xml-type-mapping>
<java-type>org.jboss.test.ws.addressing.action.ActionEndpoint_foo_RequestStruct</java-type>
<root-type-qname xmlns:typeNS="http://org.jboss.ws/addressing/action">typeNS:foo</root-type-qname>
@@ -39,7 +36,6 @@
<xml-element-name>String_1</xml-element-name>
</variable-mapping>
</java-xml-type-mapping>
- -->
<java-xml-type-mapping>
<java-type>org.jboss.test.ws.addressing.action.ActionEndpoint_bar_RequestStruct</java-type>
<root-type-qname xmlns:typeNS="http://org.jboss.ws/addressing/action">typeNS:bar</root-type-qname>
Modified: trunk/src/test/resources/addressing/action/Doc-META-INF/wsdl/ActionDocService.wsdl
===================================================================
--- trunk/src/test/resources/addressing/action/Doc-META-INF/wsdl/ActionDocService.wsdl 2006-07-03 15:33:33 UTC (rev 544)
+++ trunk/src/test/resources/addressing/action/Doc-META-INF/wsdl/ActionDocService.wsdl 2006-07-03 17:31:58 UTC (rev 545)
@@ -16,7 +16,6 @@
<element name="result" type="string" nillable="true"/>
</sequence>
</complexType>
- <!--
<complexType name="foo">
<sequence>
<element name="String_1" type="string" nillable="true"/>
@@ -27,7 +26,6 @@
<element name="result" type="string" nillable="true"/>
</sequence>
</complexType>
- -->
<element name="bar" type="tns:bar"/>
<element name="barResponse" type="tns:barResponse"/>
<element name="foo" type="tns:bar"/>
|