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"/> |