diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-04-27 16:25:48 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-04-27 16:25:48 +0000 |
commit | fa856b080416e5e991d5549c8c8e36e5b4962ca0 (patch) | |
tree | 9c98984e2c97b35a48767e9ee865e36f5f3fe835 /branches/sca-java-1.x/modules/interface-java-jaxws/src | |
parent | 341d58997d76796495ea0afc29a5f019755b1a02 (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')
-rw-r--r-- | branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java | 25 |
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)); } } |