You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/09/11 22:23:56 UTC

svn commit: r814013 - in /cxf/branches/2.1.x-fixes: ./ rt/core/src/main/java/org/apache/cxf/endpoint/ rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/endpoint/dynamic/ rt/frontend/...

Author: dkulp
Date: Fri Sep 11 20:23:49 2009
New Revision: 814013

URL: http://svn.apache.org/viewvc?rev=814013&view=rev
Log:
Merged revisions 814012 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.2.x-fixes

................
  r814012 | dkulp | 2009-09-11 16:20:35 -0400 (Fri, 11 Sep 2009) | 10 lines
  
  Merged revisions 814011 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r814011 | dkulp | 2009-09-11 16:16:33 -0400 (Fri, 11 Sep 2009) | 2 lines
    
    [CXF-2415] Fix issues with dynamic client not properly using JAX-WS
    interceptors that cause strange failures
  ........
................

Modified:
    cxf/branches/2.1.x-fixes/   (props changed)
    cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
    cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
    cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/endpoint/dynamic/JaxWsDynamicClientFactory.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java
    cxf/branches/2.1.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/JaxWsDynamicClientTest.java

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri Sep 11 20:23:49 2009
@@ -0,0 +1,2 @@
+/cxf/branches/2.2.x-fixes:814012
+/cxf/trunk:814011

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java?rev=814013&r1=814012&r2=814013&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java (original)
+++ cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java Fri Sep 11 20:23:49 2009
@@ -151,7 +151,11 @@
         EndpointInfo epfo = findEndpoint(svc, port);
 
         try {
-            getConduitSelector().setEndpoint(new EndpointImpl(bus, svc, epfo));
+            if (endpointImplFactory != null) {
+                getConduitSelector().setEndpoint(endpointImplFactory.newEndpointImpl(bus, svc, epfo));
+            } else {
+                getConduitSelector().setEndpoint(new EndpointImpl(bus, svc, epfo));
+            }
         } catch (EndpointException epex) {
             throw new IllegalStateException("Unable to create endpoint: " + epex.getMessage(), epex);
         }

Modified: cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java?rev=814013&r1=814012&r2=814013&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java (original)
+++ cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java Fri Sep 11 20:23:49 2009
@@ -362,13 +362,18 @@
         // Setup the new classloader!
         Thread.currentThread().setContextClassLoader(cl);
 
-        TypeClassInitializer visitor = new TypeClassInitializer(svcfo, intermediateModel);
+        TypeClassInitializer visitor = new TypeClassInitializer(svcfo, 
+                                                                intermediateModel,
+                                                                allowWrapperOps());
         visitor.walk();
         // delete the classes files
         FileUtils.removeDir(classes);
         return client;
     }
-
+    protected boolean allowWrapperOps() {
+        return false;
+    }
+    
     private void addBindingFiles(List<String> bindingFiles, SchemaCompiler compiler) {
         if (bindingFiles != null) {
             for (String s : bindingFiles) {

Modified: cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java?rev=814013&r1=814012&r2=814013&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java (original)
+++ cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java Fri Sep 11 20:23:49 2009
@@ -44,16 +44,20 @@
     private static final Logger LOG = LogUtils.getL7dLogger(TypeClassInitializer.class);
     
     S2JJAXBModel model;
+    boolean allowWrapperOperations;
     
-    public TypeClassInitializer(ServiceInfo serviceInfo, S2JJAXBModel model) {
+    public TypeClassInitializer(ServiceInfo serviceInfo, 
+                                S2JJAXBModel model,
+                                boolean allowWr) {
         super(serviceInfo);
         this.model = model;
+        this.allowWrapperOperations = allowWr;
     }
 
     @Override
     public void begin(MessagePartInfo part) {
         OperationInfo op = part.getMessageInfo().getOperation();
-        if (op.isUnwrappedCapable() && !op.isUnwrapped()) {
+        if (!allowWrapperOperations && op.isUnwrappedCapable() && !op.isUnwrapped()) {
             return;
         }
         
@@ -120,6 +124,12 @@
                 rootType = rootType.elementType();
                 arrayCount++;
             }
+            if (arrayCount == 0
+                && part.isElement()
+                && part.getXmlSchema() instanceof XmlSchemaElement
+                && ((XmlSchemaElement)part.getXmlSchema()).getMaxOccurs() > 1) {
+                arrayCount = 1;
+            }
             cls = getClassByName(rootType);
             // bmargulies cannot find a way to ask the JVM to do this without creating 
             // an array object on the way.

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/endpoint/dynamic/JaxWsDynamicClientFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/endpoint/dynamic/JaxWsDynamicClientFactory.java?rev=814013&r1=814012&r2=814013&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/endpoint/dynamic/JaxWsDynamicClientFactory.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/endpoint/dynamic/JaxWsDynamicClientFactory.java Fri Sep 11 20:23:49 2009
@@ -46,7 +46,10 @@
     protected EndpointImplFactory getEndpointImplFactory() {
         return JaxWsEndpointImplFactory.getSingleton();
     }
-    
+    protected boolean allowWrapperOps() {
+        return true;
+    }
+
     /**
      * Create a new instance using a specific <tt>Bus</tt>.
      * 

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java?rev=814013&r1=814012&r2=814013&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java Fri Sep 11 20:23:49 2009
@@ -61,8 +61,10 @@
             for (MessagePartInfo part : parts) {
                 if (part.getIndex() != 0 && part.getTypeClass() != null) {
                     Holder holder = (Holder)outHolders.get(part.getIndex() - 1);
-                    holder.value = inObjects.get(part);
-                    inObjects.put(part, holder);
+                    if (holder != null) {
+                        holder.value = inObjects.get(part);
+                        inObjects.put(part, holder);
+                    }
                 }
             }
         } else {

Modified: cxf/branches/2.1.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/JaxWsDynamicClientTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/JaxWsDynamicClientTest.java?rev=814013&r1=814012&r2=814013&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/JaxWsDynamicClientTest.java (original)
+++ cxf/branches/2.1.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/JaxWsDynamicClientTest.java Fri Sep 11 20:23:49 2009
@@ -81,5 +81,5 @@
         r = (Operation1Response)rparts[0];
         assertEquals(md5(bucketOfBytes), r.getStatus());
     }
-
+    
 }