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));
+ }
}