[jbossws-commits] JBossWS SVN: r2444 - in trunk/jbossws-core/src/main/java/org/jboss/ws: metadata/builder/jaxrpc and 2 other directories.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Thu Feb 22 22:03:43 EST 2007


Author: jason.greene at jboss.com
Date: 2007-02-22 22:03:43 -0500 (Thu, 22 Feb 2007)
New Revision: 2444

Modified:
   trunk/jbossws-core/src/main/java/org/jboss/ws/core/EndpointInvocation.java
   trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCMetaDataBuilder.java
   trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java
   trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java
Log:
Merge 2435 and 2437 from 1.2.0


Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/EndpointInvocation.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/core/EndpointInvocation.java	2007-02-23 03:00:03 UTC (rev 2443)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/core/EndpointInvocation.java	2007-02-23 03:03:43 UTC (rev 2444)
@@ -307,7 +307,7 @@
       if (opMetaData.isDocumentWrapped() && !paramMetaData.isInHeader()&& !paramMetaData.isSwA() && !paramMetaData.isMessageType())
       {
          outParameters = ParameterWrapping.unwrapRequestParameters(paramMetaData, paramValue, payload);
-         syncOutWrappedParameters(targetParameterTypes);
+         syncOutWrappedParameters(targetParameterTypes, payload);
       }
       else
       {
@@ -338,7 +338,7 @@
       }
    }
 
-   private void syncOutWrappedParameters(Class[] targetParameterTypes)
+   private void syncOutWrappedParameters(Class[] targetParameterTypes, Object[] payload)
    {
       ParameterMetaData returnMetaData = opMetaData.getReturnParameter();
       if (returnMetaData != null)
@@ -347,8 +347,13 @@
          {
             try
             {
-               if (param.getIndex() >= 0 && !outParameters.containsKey(param.getIndex()) )
-                  outParameters.put(param.getIndex(), targetParameterTypes[param.getIndex()].newInstance());
+               // only OUT parameters need to be initialized
+               if (param.getIndex() >= 0 && !outParameters.containsKey(param.getIndex()))
+               {
+                  Object holder = targetParameterTypes[param.getIndex()].newInstance();
+                  payload[param.getIndex()] = holder;
+                  outParameters.put(param.getIndex(), holder);
+               }
             }
             catch (Exception e)
             {

Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCMetaDataBuilder.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCMetaDataBuilder.java	2007-02-23 03:00:03 UTC (rev 2443)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCMetaDataBuilder.java	2007-02-23 03:03:43 UTC (rev 2444)
@@ -651,7 +651,13 @@
             if (! "OUT".equals(parameterMode))
                wrappedParameters.add(wrapped);
             if (! "IN".equals(parameterMode))
+            {
+               wrapped.setHolder(true);
+               // wrapped parameters can not be shared between request/response objects (accessors)
+               if ("INOUT".equals(parameterMode))
+                  wrapped = new WrappedParameter(wrapped);
                wrappedResponseParameters.add(wrapped);
+            }
          }
          inMetaData.setWrappedParameters(wrappedParameters);
          wsdlPosition = wrappedParameters.size();

Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java	2007-02-23 03:00:03 UTC (rev 2443)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java	2007-02-23 03:03:43 UTC (rev 2444)
@@ -624,10 +624,15 @@
 
             if (mode != ParameterMode.OUT)
                wrappedParameters.add(wrappedParameter);
+            
             if (mode != ParameterMode.IN)
             {
+               wrappedParameter.setHolder(true);
+
+               // WrappedParameters can not be shared between request/response objects (accessors)
+               if (mode == ParameterMode.INOUT)
+                  wrappedParameter = new WrappedParameter(wrappedParameter);
                wrappedOutputParameters.add(wrappedParameter);
-               wrappedParameter.setHolder(true);
             }
          }
          else

Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java	2007-02-23 03:00:03 UTC (rev 2443)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java	2007-02-23 03:03:43 UTC (rev 2444)
@@ -42,6 +42,17 @@
    private int index = -2;
    private Accessor accessor;
 
+   public WrappedParameter(WrappedParameter wrapped)
+   {
+      this.name = wrapped.name;
+      this.type = wrapped.type;
+      this.typeArguments = wrapped.typeArguments;
+      this.variable = wrapped.variable;
+      this.holder = wrapped.holder;
+      this.index = wrapped.index;
+      this.accessor = wrapped.accessor;
+   }
+   
    public WrappedParameter(QName name, String type, String variable, int index)
    {
       this.setName(name);




More information about the jbossws-commits mailing list