[jboss-svn-commits] JBossWS SVN: r1183 - in trunk/src: main/java/org/jboss/ws/binding main/java/org/jboss/ws/deployment main/java/org/jboss/ws/jaxrpc main/java/org/jboss/ws/metadata main/java/org/jboss/ws/utils test/java/org/jboss/test/ws/jaxws/jsr181/webparam

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 10 00:30:47 EDT 2006


Author: jason.greene at jboss.com
Date: 2006-10-10 00:30:40 -0400 (Tue, 10 Oct 2006)
New Revision: 1183

Modified:
   trunk/src/main/java/org/jboss/ws/binding/EndpointInvocation.java
   trunk/src/main/java/org/jboss/ws/deployment/JSR181ClientMetaDataBuilder.java
   trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
   trunk/src/main/java/org/jboss/ws/jaxrpc/ParameterWrapping.java
   trunk/src/main/java/org/jboss/ws/metadata/ParameterMetaData.java
   trunk/src/main/java/org/jboss/ws/utils/HolderUtils.java
   trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/PingDocument.java
   trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/PingService.java
   trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/SecurityHeader.java
Log:
Improve holder support
Fix default namespace handling
Fix JAX-WS/JSR-181 webparam test case


Modified: trunk/src/main/java/org/jboss/ws/binding/EndpointInvocation.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/binding/EndpointInvocation.java	2006-10-10 02:45:56 UTC (rev 1182)
+++ trunk/src/main/java/org/jboss/ws/binding/EndpointInvocation.java	2006-10-10 04:30:40 UTC (rev 1183)
@@ -303,12 +303,10 @@
 
          if (paramMetaData.getMode() == ParameterMode.INOUT || paramMetaData.getMode() == ParameterMode.OUT)
          {
-            Holder holder = HolderUtils.getHolderInstance(targetParameterType);
-            HolderUtils.setHolderValue(holder, paramValue);
-            retValue = holder;
+            retValue = HolderUtils.getHolderInstance(paramValue, targetParameterType);
 
             QName xmlName = paramMetaData.getXmlName();
-            setResponseParamValue(xmlName, holder);
+            setResponseParamValue(xmlName, retValue);
          }
 
          if (retValue != null)

Modified: trunk/src/main/java/org/jboss/ws/deployment/JSR181ClientMetaDataBuilder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/deployment/JSR181ClientMetaDataBuilder.java	2006-10-10 02:45:56 UTC (rev 1182)
+++ trunk/src/main/java/org/jboss/ws/deployment/JSR181ClientMetaDataBuilder.java	2006-10-10 04:30:40 UTC (rev 1183)
@@ -69,7 +69,7 @@
       processWebMethods(epMetaData, wsClass, true);
 
       // Build JAXB Context
-      createJAXBContext();
+      createJAXBContext(epMetaData.getInterfaceQName().getNamespaceURI());
       populateXmlTypes(epMetaData);
 
       // Eager initialization

Modified: trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java	2006-10-10 02:45:56 UTC (rev 1182)
+++ trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java	2006-10-10 04:30:40 UTC (rev 1183)
@@ -194,7 +194,7 @@
          processWebMethods(sepMetaData, wsClass, includeAllMethods);
 
          // Build JAXB Context
-         createJAXBContext();
+         createJAXBContext(sepMetaData.getInterfaceQName().getNamespaceURI());
          populateXmlTypes(sepMetaData);
 
          // Process or generate WSDL
@@ -250,11 +250,11 @@
       typeRefs.clear();
    }
 
-   protected void createJAXBContext()
+   protected void createJAXBContext(String targetNamespace)
    {
       try
       {
-         jaxbCtx = JAXBRIContext.newInstance(javaTypes.toArray(new Class[0]), typeRefs, null, false);
+         jaxbCtx = JAXBRIContext.newInstance(javaTypes.toArray(new Class[0]), typeRefs, targetNamespace, false);
       }
       catch (JAXBException ex)
       {
@@ -428,8 +428,8 @@
          // FIXME - Improve JAX-RPC and JAX-WS Holder unification
          if (HolderUtils.isHolderType(javaType))
          {
-            javaType = HolderUtils.getValueType(javaType);
             genericType = HolderUtils.getGenericValueType(genericType);
+            javaType = JavaUtils.erasure(genericType);
             javaTypeName = javaType.getName();
          }
 

Modified: trunk/src/main/java/org/jboss/ws/jaxrpc/ParameterWrapping.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/jaxrpc/ParameterWrapping.java	2006-10-10 02:45:56 UTC (rev 1182)
+++ trunk/src/main/java/org/jboss/ws/jaxrpc/ParameterWrapping.java	2006-10-10 04:30:40 UTC (rev 1183)
@@ -84,17 +84,6 @@
       return HolderUtils.getHolderValue(holder);
    }
 
-   private static Object holder(Object value, Class<?> target)
-   {
-      if (! HolderUtils.isHolderType(target))
-         return value;
-
-      Object holder = HolderUtils.getHolderInstance(target);
-      HolderUtils.setHolderValue(holder, value);
-
-      return holder;
-   }
-
    public static Class getWrappedType(String variable, Class wrapperType)
    {
       try
@@ -168,7 +157,7 @@
             // INOUT Parameter
             if (HolderUtils.isHolderType(targetType))
             {
-               value = holder(value, targetType);
+               value = HolderUtils.getHolderInstance(value, targetType);
                outParameters.put(param.index, value);
             }
 
@@ -249,7 +238,7 @@
                if (param.index < 0)
                   retValue = value;
                else
-                  methodParams[param.index] = holder(value, targetTypes[param.index]);
+                  methodParams[param.index] = HolderUtils.getHolderInstance(value, targetTypes[param.index]);
             }
          }
          catch (RuntimeException rte)

Modified: trunk/src/main/java/org/jboss/ws/metadata/ParameterMetaData.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/metadata/ParameterMetaData.java	2006-10-10 02:45:56 UTC (rev 1182)
+++ trunk/src/main/java/org/jboss/ws/metadata/ParameterMetaData.java	2006-10-10 04:30:40 UTC (rev 1183)
@@ -359,7 +359,8 @@
    {
       // At some point we want to make this plugable, hardcoding
       // references like this is not very flexible.
-      (new DynamicWrapperGenerator(getClassLoader())).generate(this);
+      if (opMetaData.isDocumentWrapped())
+         (new DynamicWrapperGenerator(getClassLoader())).generate(this);
 
       // Initialize the cache
       getJavaType();

Modified: trunk/src/main/java/org/jboss/ws/utils/HolderUtils.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/utils/HolderUtils.java	2006-10-10 02:45:56 UTC (rev 1182)
+++ trunk/src/main/java/org/jboss/ws/utils/HolderUtils.java	2006-10-10 04:30:40 UTC (rev 1183)
@@ -113,24 +113,6 @@
 
    /** Get the Holder for a given valueType.
     */
-   public static Holder getHolderInstance(Class holderType)
-   {
-      try
-      {
-         return (Holder)holderType.newInstance();
-      }
-      catch (RuntimeException rte)
-      {
-         throw rte;
-      }
-      catch (Exception e)
-      {
-         throw new IllegalArgumentException("Cannot instanciate holder: " + holderType);
-      }
-   }
-
-   /** Get the Holder for a given valueType.
-    */
    public static Class getHolderType(Class valueType)
    {
       if (valueType == null)
@@ -218,7 +200,7 @@
       if (holder == null)
          throw new IllegalArgumentException("Illegal null parameter");
 
-      if (Holder.class.isInstance(holder) == false)
+      if (!Holder.class.isInstance(holder) && !javax.xml.ws.Holder.class.isInstance(holder))
          throw new IllegalArgumentException("Is not a holder: " + holder);
 
       try
@@ -244,14 +226,10 @@
       if (holder == null)
          throw new IllegalArgumentException("Illegal null parameter");
 
-      if (Holder.class.isInstance(holder) == false)
+      if (!Holder.class.isInstance(holder) && !javax.xml.ws.Holder.class.isInstance(holder))
          throw new IllegalArgumentException("Is not a holder: " + holder);
 
       Class valueType = getValueType(holder.getClass());
-      if (JavaUtils.isPrimitive(valueType))
-         value = JavaUtils.getPrimitiveValue(value);
-      else
-         value = JavaUtils.getWrapperValue(value);
 
       if (value != null && JavaUtils.isAssignableFrom(valueType, value.getClass()) == false)
          throw new IllegalArgumentException("Holder [" + holder.getClass().getName() + "] value not assignable: " + value);
@@ -274,6 +252,31 @@
 
    public static Type getGenericValueType(Type holder)
    {
-      return ((ParameterizedType)holder).getActualTypeArguments()[0];
+      return (holder instanceof ParameterizedType) ? ((ParameterizedType)holder).getActualTypeArguments()[0] : holder;
    }
+
+   public static Object getHolderInstance(Object value, Class<?> target)
+   {
+      if (! isHolderType(target))
+         return value;
+
+      Object holder;
+
+      try
+      {
+         holder = target.newInstance();
+      }
+      catch (RuntimeException rte)
+      {
+         throw rte;
+      }
+      catch (Exception e)
+      {
+         throw new IllegalArgumentException("Cannot instanciate holder: " + target);
+      }
+
+      setHolderValue(holder, value);
+
+      return holder;
+   }
 }

Modified: trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/PingDocument.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/PingDocument.java	2006-10-10 02:45:56 UTC (rev 1182)
+++ trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/PingDocument.java	2006-10-10 04:30:40 UTC (rev 1183)
@@ -27,7 +27,7 @@
 import javax.xml.bind.annotation.XmlType;
 
 @XmlAccessorType(XmlAccessType.FIELD)
- at XmlType(name = "PingDocumentType", propOrder = { "content" })
+ at XmlType(name = "PingDocument", propOrder = { "content" })
 public class PingDocument
 {
    @XmlElement(namespace = "http://www.openuri.org/jsr181/WebParamExample", required = true)

Modified: trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/PingService.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/PingService.java	2006-10-10 02:45:56 UTC (rev 1182)
+++ trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/PingService.java	2006-10-10 04:30:40 UTC (rev 1183)
@@ -21,11 +21,12 @@
  */
 package org.jboss.test.ws.jaxws.jsr181.webparam;
 
+import javax.jws.Oneway;
 import javax.jws.WebMethod;
+import javax.jws.WebParam;
 import javax.jws.WebService;
-import javax.jws.WebParam;
-import javax.jws.Oneway;
 import javax.jws.soap.SOAPBinding;
+import javax.xml.ws.Holder;
 
 import org.jboss.logging.Logger;
 
@@ -57,7 +58,7 @@
    }
 
    @WebMethod(operationName = "PingTwoWay")
-   public void ping(@WebParam(name = "Ping", mode = WebParam.Mode.INOUT) PingDocumentHolder p)
+   public void ping(@WebParam(name = "Ping", mode = WebParam.Mode.INOUT) Holder<PingDocument> p)
    {
       log.info("ping: " + p.value);
       p.value = new PingDocument(p.value.getContent() + " Response");

Modified: trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/SecurityHeader.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/SecurityHeader.java	2006-10-10 02:45:56 UTC (rev 1182)
+++ trunk/src/test/java/org/jboss/test/ws/jaxws/jsr181/webparam/SecurityHeader.java	2006-10-10 04:30:40 UTC (rev 1183)
@@ -27,7 +27,7 @@
 import javax.xml.bind.annotation.XmlType;
 
 @XmlAccessorType(XmlAccessType.FIELD)
- at XmlType(name = "SecurityHeaderType", propOrder = { "value" })
+ at XmlType(name = "SecurityHeader", propOrder = { "value" })
 public class SecurityHeader
 {
    @XmlElement(namespace = "http://www.openuri.org/jsr181/WebParamExample", required = true)




More information about the jboss-svn-commits mailing list