summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/interface-java-jaxws/src/main
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-04-23 18:23:06 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-04-23 18:23:06 +0000
commit561690e6ecf5aa4eb7ddd1093ada36b0f0433cb4 (patch)
tree84c18d965e9ba436755b96a045a883fceacc80ab /branches/sca-java-1.x/modules/interface-java-jaxws/src/main
parent310e9fb3277f36407eac8146745517d90ba15285 (diff)
Improve the handling of INOUT and OUT parameters using JAX-WS Holder
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@768005 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/modules/interface-java-jaxws/src/main')
-rw-r--r--branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java28
1 files changed, 22 insertions, 6 deletions
diff --git a/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java b/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
index 79a304bc2b..7471427a3d 100644
--- a/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
+++ b/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.interfacedef.java.jaxws;
@@ -33,6 +33,7 @@ import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
+import javax.jws.WebParam.Mode;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.xml.namespace.QName;
@@ -47,6 +48,7 @@ import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.FaultExceptionMapper;
import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.ParameterMode;
import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
import org.apache.tuscany.sca.interfacedef.java.JavaOperation;
@@ -59,7 +61,7 @@ import org.apache.tuscany.sca.interfacedef.util.XMLType;
/**
* Introspect the java class/interface with JSR-181 and JAXWS annotations
- *
+ *
* @version $Rev$ $Date$
*/
public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
@@ -91,6 +93,16 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
}
}
+ private ParameterMode getParameterMode(WebParam.Mode mode) {
+ if (mode == Mode.INOUT) {
+ return ParameterMode.INOUT;
+ } else if (mode == Mode.OUT) {
+ return ParameterMode.OUT;
+ } else {
+ return ParameterMode.IN;
+ }
+ }
+
public void visitInterface(JavaInterface contract) throws InvalidInterfaceException {
final Class<?> clazz = contract.getJavaClass();
@@ -170,6 +182,7 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
if (logical instanceof XMLType) {
((XMLType)logical).setElementName(element);
}
+ operation.getParameterModes().set(i, getParameterMode(param.mode()));
}
}
WebResult result = method.getAnnotation(WebResult.class);
@@ -279,6 +292,9 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
type = ((XMLType)logical).getTypeName();
}
inputElements.add(new ElementInfo(element, new TypeInfo(type, false, null)));
+ if (param != null) {
+ operation.getParameterModes().set(i, getParameterMode(param.mode()));
+ }
}
List<ElementInfo> outputElements = new ArrayList<ElementInfo>();
@@ -301,11 +317,11 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
}
String db = inputWrapperDT != null ? inputWrapperDT.getDataBinding() : JAXB_DATABINDING;
-
+
WrapperInfo inputWrapperInfo =
new WrapperInfo(db, new ElementInfo(inputWrapper, null), inputElements);
WrapperInfo outputWrapperInfo =
- new WrapperInfo(db, new ElementInfo(outputWrapper, null), outputElements);
+ new WrapperInfo(db, new ElementInfo(outputWrapper, null), outputElements);
inputWrapperInfo.setWrapperType(inputWrapperDT);
outputWrapperInfo.setWrapperType(outputWrapperDT);