Author: dkulp
Date: Sat Oct 15 01:25:12 2011
New Revision: 1183577

URL: http://svn.apache.org/viewvc?rev=1183577&view=rev
Log:
Update to remove the part types "up front" instead of per request.

Removed:
    
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RemoveClassTypeInterceptor.java
Modified:
    
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java

Modified: 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java?rev=1183577&r1=1183576&r2=1183577&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/PayLoadDataFormatFeature.java
 Sat Oct 15 01:25:12 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);


Reply via email to