You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2009/04/15 06:27:30 UTC

svn commit: r765045 - in /servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse: CxfSeProxyFactoryBean.java interceptors/AttachmentInInterceptor.java

Author: ffang
Date: Wed Apr 15 04:27:29 2009
New Revision: 765045

URL: http://svn.apache.org/viewvc?rev=765045&view=rev
Log:
[SMXCOMP-32]CXF-SE client proxies should support MTOM/attachments

Modified:
    servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeProxyFactoryBean.java
    servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/interceptors/AttachmentInInterceptor.java

Modified: servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeProxyFactoryBean.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeProxyFactoryBean.java?rev=765045&r1=765044&r2=765045&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeProxyFactoryBean.java (original)
+++ servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeProxyFactoryBean.java Wed Apr 15 04:27:29 2009
@@ -30,6 +30,8 @@
 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
 import org.apache.cxf.transport.ConduitInitiatorManager;
 import org.apache.cxf.transport.jbi.JBITransportFactory;
+import org.apache.servicemix.cxfse.interceptors.AttachmentInInterceptor;
+import org.apache.servicemix.cxfse.interceptors.AttachmentOutInterceptor;
 import org.apache.servicemix.id.IdGenerator;
 import org.apache.servicemix.jbi.api.ClientFactory;
 import org.apache.servicemix.jbi.api.Container;
@@ -74,6 +76,8 @@
     
     private boolean useSOAPEnvelope = true;
 
+    private boolean mtomEnabled;
+
     public Object getObject() throws Exception {
         if (proxy == null) {
             proxy = createProxy();
@@ -115,6 +119,12 @@
         	removeInterceptor(ClientProxy.getClient(proxy).getEndpoint().getBinding().getOutInterceptors(), 
         		"StaxOutInterceptor");
         }
+        if (isMtomEnabled()) {
+            ClientProxy.getClient(proxy).getEndpoint()
+                .getBinding().getInInterceptors().add(new AttachmentInInterceptor());
+            ClientProxy.getClient(proxy).getEndpoint()
+                .getBinding().getOutInterceptors().add(new AttachmentOutInterceptor());
+        }
         return proxy;
     }
 
@@ -300,4 +310,13 @@
 		return useSOAPEnvelope;
 	}
 
+        public void setMtomEnabled(boolean mtomEnabled) {
+            this.mtomEnabled = mtomEnabled;
+        }
+
+        public boolean isMtomEnabled() {
+            return mtomEnabled;
+        }
+
+
 }

Modified: servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/interceptors/AttachmentInInterceptor.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/interceptors/AttachmentInInterceptor.java?rev=765045&r1=765044&r2=765045&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/interceptors/AttachmentInInterceptor.java (original)
+++ servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/interceptors/AttachmentInInterceptor.java Wed Apr 15 04:27:29 2009
@@ -42,7 +42,12 @@
     public void handleMessage(Message message) {
         List<Attachment> attachmentList = new ArrayList<Attachment>();
         MessageExchange exchange = message.get(MessageExchange.class);
-        NormalizedMessage norMessage = exchange.getMessage("in");
+        NormalizedMessage norMessage = null;
+        if (isRequestor(message)) {
+            norMessage = (NormalizedMessage) exchange.getMessage("out");
+        } else { 
+            norMessage = (NormalizedMessage) exchange.getMessage("in");
+        }
         Set names = norMessage.getAttachmentNames();
         for (Object obj : names) {
             String id = (String)obj;
@@ -52,6 +57,9 @@
         
         message.setAttachments(attachmentList);
     }
-
+    
+    protected boolean isRequestor(Message message) {
+        return Boolean.TRUE.equals(message.get(Message.REQUESTOR_ROLE));
+    }
     
 }