diff options
author | scottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68> | 2011-01-20 14:57:06 +0000 |
---|---|---|
committer | scottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68> | 2011-01-20 14:57:06 +0000 |
commit | de7789044d196dfadab3b8ddfddf2f26f7a1bbd8 (patch) | |
tree | a2eef7b87fb6b98af951c68a188ceb9ac5977f47 /sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany | |
parent | 81ab42fb0730a787d799c870e09726ec1fb82116 (diff) |
Fix for TUSCANY-3819 (still need to cleanup bare case, wsdlgen).
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1061329 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r-- | sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java index be1222f094..542b9d556e 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java +++ b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java @@ -56,6 +56,7 @@ import org.apache.tuscany.sca.databinding.jaxb.JAXBDataBinding; import org.apache.tuscany.sca.interfacedef.DataType; import org.apache.tuscany.sca.interfacedef.Interface; 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; @@ -240,7 +241,9 @@ public class Interface2WSDLGenerator { if (useOutputWrapper) { addDataType(dataTypes, dt2, helpers); } else { - dt2 = op.getOutputType().getLogical().get(0); + if (op.getOutputType().getLogical().size() != 0) { + dt2 = op.getOutputType().getLogical().get(0); + } addDataType(dataTypes, dt2, helpers); } @@ -646,7 +649,7 @@ public class Interface2WSDLGenerator { outputMsg.addPart(generateWrapperPart(definition, op, helpers, wrappers, false)); } else { - if ((op.getOutputType() != null) && ( op.getOutputType().getLogical().get(0) != null)) { + if ((op.getOutputType() != null) && ( op.getOutputType().getLogical().size() != 0)) { DataType outputType = op.getOutputType().getLogical().get(0); outputMsg.addPart(generatePart(definition, outputType, "return")); elements = new ArrayList<ElementInfo>(); @@ -748,18 +751,41 @@ public class Interface2WSDLGenerator { */ Method method = ((JavaOperation)operation).getJavaMethod(); + + /* + * Making this change, though not understanding: + * + * 1. Whether we can assume JAXWSJavaInterfaceProcessor was already used to process + * + * 2. What the purpose is of calling getElementInfo() when we already have an ElementInfo + * + */ if (input) { Class<?>[] paramTypes = method.getParameterTypes(); - for (int i = 0; i < paramTypes.length; i++) { - DataType dataType = operation.getInputType().getLogical().get(i); - elements.set(i, getElementInfo(paramTypes[i], dataType, elements.get(i).getQName(), helpers)); + for (int i = 0, inputsSeen = 0; i < paramTypes.length; i++) { + ParameterMode mode = operation.getParameterModes().get(i); + if (!mode.equals(ParameterMode.OUT)) { + DataType dataType = operation.getInputType().getLogical().get(i); + elements.set(inputsSeen, getElementInfo(paramTypes[i], dataType, elements.get(inputsSeen).getQName(), helpers)); + inputsSeen++; + } } } else { + int outputsSeen = 0; Class<?> returnType = method.getReturnType(); if (returnType != Void.TYPE) { DataType dataType = operation.getOutputType().getLogical().get(0); - elements.set(0, getElementInfo(returnType, dataType, elements.get(0).getQName(), helpers)); + elements.set(outputsSeen++, getElementInfo(returnType, dataType, elements.get(0).getQName(), helpers)); } + Class<?>[] paramTypes = method.getParameterTypes(); + for (int i = 0; i < paramTypes.length; i++) { + ParameterMode mode = operation.getParameterModes().get(i); + if (!mode.equals(ParameterMode.IN)) { + DataType dataType = operation.getOutputType().getLogical().get(i); + elements.set(outputsSeen, getElementInfo(paramTypes[i], dataType, elements.get(outputsSeen).getQName(), helpers)); + outputsSeen++; + } + } } } return part; |