summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-04-27 16:25:48 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-04-27 16:25:48 +0000
commitfa856b080416e5e991d5549c8c8e36e5b4962ca0 (patch)
tree9c98984e2c97b35a48767e9ee865e36f5f3fe835 /branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org
parent341d58997d76796495ea0afc29a5f019755b1a02 (diff)
Make sure the default mode is set to INOUT if the type is Holder.class
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@769047 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org')
-rw-r--r--branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java25
1 files changed, 18 insertions, 7 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 a9e685e603..cc2a3b2d58 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
@@ -95,13 +95,19 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
}
}
- private ParameterMode getParameterMode(WebParam.Mode mode) {
- if (mode == Mode.INOUT) {
+ private ParameterMode getParameterMode(Class<?> javaType, WebParam.Mode mode) {
+ if (javaType != Holder.class) {
+ return ParameterMode.IN;
+ }
+ if (mode == Mode.IN) {
+ return ParameterMode.IN;
+ } else if (mode == Mode.INOUT) {
return ParameterMode.INOUT;
} else if (mode == Mode.OUT) {
return ParameterMode.OUT;
} else {
- return ParameterMode.IN;
+ // null
+ return ParameterMode.INOUT;
}
}
@@ -173,9 +179,10 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
List<ParameterMode> parameterModes = operation.getParameterModes();
+ Class<?>[] parameterTypes = method.getParameterTypes();
// Handle BARE mapping
if (bare) {
- for (int i = 0; i < method.getParameterTypes().length; i++) {
+ for (int i = 0; i < parameterTypes.length; i++) {
WebParam param = getAnnotation(method, i, WebParam.class);
if (param != null) {
String ns = getValue(param.targetNamespace(), tns);
@@ -186,7 +193,9 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
if (logical instanceof XMLType) {
((XMLType)logical).setElementName(element);
}
- parameterModes.set(i, getParameterMode(param.mode()));
+ parameterModes.set(i, getParameterMode(parameterTypes[i], param.mode()));
+ } else {
+ parameterModes.set(i, getParameterMode(parameterTypes[i], null));
}
}
WebResult result = method.getAnnotation(WebResult.class);
@@ -281,7 +290,7 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
QName outputWrapper = outputWrapperDT.getLogical().getElementName();
List<ElementInfo> inputElements = new ArrayList<ElementInfo>();
- for (int i = 0; i < method.getParameterTypes().length; i++) {
+ for (int i = 0; i < parameterTypes.length; i++) {
WebParam param = getAnnotation(method, i, WebParam.class);
ns = param != null ? param.targetNamespace() : "";
// Default to "" for doc-lit-wrapped && non-header
@@ -297,7 +306,9 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
}
inputElements.add(new ElementInfo(element, new TypeInfo(type, false, null)));
if (param != null) {
- parameterModes.set(i, getParameterMode(param.mode()));
+ parameterModes.set(i, getParameterMode(parameterTypes[i], param.mode()));
+ } else {
+ parameterModes.set(i, getParameterMode(parameterTypes[i], null));
}
}