Author: rfeng
Date: Mon Apr 27 16:25:48 2009
New Revision: 769047

URL: http://svn.apache.org/viewvc?rev=769047&view=rev
Log:
Make sure the default mode is set to INOUT if the type is Holder.class

Modified:
    
tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java

Modified: 
tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java?rev=769047&r1=769046&r2=769047&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
 Mon Apr 27 16:25:48 2009
@@ -95,13 +95,19 @@
         }
     }
 
-    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 @@
 
             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 @@
                         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 @@
                 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 @@
                     }
                     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));
                     }
                 }
 


Reply via email to