You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dk...@apache.org on 2011/10/15 03:27:32 UTC

svn commit: r1183580 - in /camel/branches/camel-2.8.x: ./ components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/ components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/

Author: dkulp
Date: Sat Oct 15 01:27:31 2011
New Revision: 1183580

URL: http://svn.apache.org/viewvc?rev=1183580&view=rev
Log:
Merged revisions 1183577 via svnmerge from 
https://svn.apache.org/repos/asf/camel/trunk

........
  r1183577 | dkulp | 2011-10-14 21:25:12 -0400 (Fri, 14 Oct 2011) | 1 line
  
  Update to remove the part types "up front" instead of per request.
........

Removed:
    camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RemoveClassTypeInterceptor.java
Modified:
    camel/branches/camel-2.8.x/   (props changed)
    camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java

Propchange: camel/branches/camel-2.8.x/
            ('svn:mergeinfo' removed)

Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java?rev=1183580&r1=1183579&r2=1183580&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java (original)
+++ camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java Sat Oct 15 01:27:31 2011
@@ -19,12 +19,18 @@ package org.apache.camel.component.cxf.f
 import java.util.ArrayList;
 import java.util.Collection;
 
+import javax.xml.transform.Source;
+
 import org.apache.camel.component.cxf.interceptors.ConfigureDocLitWrapperInterceptor;
-import org.apache.camel.component.cxf.interceptors.RemoveClassTypeInterceptor;
 import org.apache.cxf.Bus;
+import org.apache.cxf.binding.Binding;
 import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.interceptor.ClientFaultConverter;
+import org.apache.cxf.service.model.BindingMessageInfo;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.MessageInfo;
+import org.apache.cxf.service.model.MessagePartInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -45,20 +51,58 @@ public class PayLoadDataFormatFeature ex
     public void initialize(Client client, Bus bus) {
         removeFaultInInterceptorFromClient(client);
         client.getEndpoint().getBinding().getInInterceptors().add(new ConfigureDocLitWrapperInterceptor(true));
-        client.getEndpoint().getBinding().getInInterceptors().add(new RemoveClassTypeInterceptor());
+        resetPartTypes(client.getEndpoint().getBinding());
     }
 
+
     @Override
     public void initialize(Server server, Bus bus) {
         server.getEndpoint().getBinding().getInInterceptors().add(new ConfigureDocLitWrapperInterceptor(true));
-        server.getEndpoint().getBinding().getInInterceptors().add(new RemoveClassTypeInterceptor());
+        resetPartTypes(server.getEndpoint().getBinding());
     }
 
     @Override
     protected Logger getLogger() {
         return LOG;
     }
+    
+    private void resetPartTypes(Binding bop2) {
+        for (BindingOperationInfo bop : bop2.getBindingInfo().getOperations()) {
+            resetPartTypes(bop);
+        }
+    }
 
+    private void resetPartTypes(BindingOperationInfo bop) {
+        if (bop.isUnwrapped()) {
+            bop = bop.getWrappedOperation();
+        }
+        if (bop.isUnwrappedCapable()) {
+            resetPartTypeClass(bop.getWrappedOperation().getOperationInfo().getInput());
+            resetPartTypeClass(bop.getWrappedOperation().getOperationInfo().getOutput());
+            resetPartTypeClass(bop.getWrappedOperation().getInput());
+            resetPartTypeClass(bop.getWrappedOperation().getOutput());
+        } else {
+            resetPartTypeClass(bop.getOperationInfo().getInput());
+            resetPartTypeClass(bop.getOperationInfo().getOutput());
+            resetPartTypeClass(bop.getInput());
+            resetPartTypeClass(bop.getOutput());
+        }
+    }
+    
+    protected void resetPartTypeClass(BindingMessageInfo bmi) {
+        if (bmi != null) {
+            for (MessagePartInfo part : bmi.getMessageParts()) {
+                part.setTypeClass(null);
+            }     
+        }
+    }
+    protected void resetPartTypeClass(MessageInfo msgInfo) {
+        if (msgInfo != null) {
+            for (MessagePartInfo part : msgInfo.getMessageParts()) {
+                part.setTypeClass(null);
+            }     
+        }
+    }
     private void removeFaultInInterceptorFromClient(Client client) {
         removeInterceptors(client.getInFaultInterceptors(), REMOVING_FAULT_IN_INTERCEPTORS);
         removeInterceptors(client.getEndpoint().getService().getInFaultInterceptors(), REMOVING_FAULT_IN_INTERCEPTORS);