You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by tl...@apache.org on 2006/11/08 09:51:01 UTC

svn commit: r472428 - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/message/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ rt/databinding/jaxb/src/main/ja...

Author: tli
Date: Wed Nov  8 00:51:00 2006
New Revision: 472428

URL: http://svn.apache.org/viewvc?view=rev&rev=472428
Log:
refine the mtom-enabled setting for soap binding

Modified:
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java
    incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
    incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
    incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AttachmentOutInterceptor.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/MessageDataWriter.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ServerMtomXopTest.java

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java?view=diff&rev=472428&r1=472427&r2=472428
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java Wed Nov  8 00:51:00 2006
@@ -133,6 +133,11 @@
                 if (val == null) {
                     val = ep.getEndpointInfo().getProperty(key);
                 }
+
+                if (val == null) {
+                    val = ep.getEndpointInfo().getBinding().getProperty(key);
+                }
+
             }
         }
         

Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java?view=diff&rev=472428&r1=472427&r2=472428
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java Wed Nov  8 00:51:00 2006
@@ -25,10 +25,6 @@
 import org.apache.cxf.message.MessageImpl;
 
 public class SoapBinding extends AbstractBasicInterceptorProvider implements Binding {
-
-    // default to support mtom, left to config to turn on this feature.
-    private boolean mtomEnabled;
-    
     
     private SoapVersion version;
     
@@ -55,18 +51,7 @@
 
         soapMessage.put(Message.CONTENT_TYPE, version.getContentType());
 
-        if (mtomEnabled) {
-            soapMessage.put(Message.MTOM_ENABLED, Boolean.TRUE);
-        }
         return soapMessage;
-    }
-
-    public boolean isMtomEnabled() {
-        return mtomEnabled;
-    }
-
-    public void setMtomEnabled(boolean enabled) {
-        mtomEnabled = enabled;
     }
 
 }

Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java?view=diff&rev=472428&r1=472427&r2=472428
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java Wed Nov  8 00:51:00 2006
@@ -149,11 +149,7 @@
         sb.getInInterceptors().add(new MustUnderstandInterceptor());
         sb.getInInterceptors().add(new StaxInInterceptor());        
         
-        // TODO: We shouldn't be running this interceptor if MTOM isn't enabled
-        // as caching everything is going to slow us down, should set according to config 
-        if (sb.isMtomEnabled()) {
-            sb.getOutInterceptors().add(new AttachmentOutInterceptor());
-        }
+        sb.getOutInterceptors().add(new AttachmentOutInterceptor());
         
         sb.getOutInterceptors().add(new StaxOutInterceptor());
         sb.getOutInterceptors().add(new SoapPreProtocolOutInterceptor());

Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AttachmentOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AttachmentOutInterceptor.java?view=diff&rev=472428&r1=472427&r2=472428
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AttachmentOutInterceptor.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AttachmentOutInterceptor.java Wed Nov  8 00:51:00 2006
@@ -44,36 +44,41 @@
     }
 
     public void handleMessage(SoapMessage message) throws Fault {
-        
+
+        if (!Boolean.TRUE.equals(message.getContextualProperty(
+                org.apache.cxf.message.Message.MTOM_ENABLED))) {
+            return;
+        }
+
         OutputStream os = message.getContent(OutputStream.class);
         CachedStream cs = new CachedStream();
         message.setContent(OutputStream.class, cs);
-        
+
         // Calling for soap out interceptor
-        if (!message.getInterceptorChain().doIntercept(message) 
-            && message.getContent(Exception.class) != null) {
+        if (!message.getInterceptorChain().doIntercept(message)
+                && message.getContent(Exception.class) != null) {
             if (message.getContent(Exception.class) instanceof Fault) {
-                throw (Fault)message.getContent(Exception.class);
+                throw (Fault) message.getContent(Exception.class);
             } else {
                 throw new Fault(message.getContent(Exception.class));
             }
         }
         // Set back the output stream
-        message.setContent(OutputStream.class, os);        
+        message.setContent(OutputStream.class, os);
         try {
             Collection<Attachment> attachments = message.getAttachments();
-            cs.flush();            
+            cs.flush();
             if (attachments.size() > 0) {
                 AttachmentSerializer as = new AttachmentSerializer(message, cs.getInputStream(), os);
                 as.serializeMultipartMessage();
             } else {
                 // get wire connection, and copy xml infoset directly into it
                 os.flush();
-                AbstractCachedOutputStream.copyStream(cs.getInputStream(), os, 64 * 1024);                
+                AbstractCachedOutputStream.copyStream(cs.getInputStream(), os, 64 * 1024);
             }
         } catch (IOException ioe) {
             throw new SoapFault(new Message("ATTACHMENT_IO", BUNDLE, ioe.toString()), 
-                            SoapFault.ATTACHMENT_IO);
+                    SoapFault.ATTACHMENT_IO);
         }
     }
 

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/MessageDataWriter.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/MessageDataWriter.java?view=diff&rev=472428&r1=472427&r2=472428
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/MessageDataWriter.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/MessageDataWriter.java Wed Nov  8 00:51:00 2006
@@ -46,7 +46,7 @@
     public void write(Object obj, MessagePartInfo part, Message output) {
         // if the mtom is enabled, we need to create the attachment mashaller
         JAXBAttachmentMarshaller am = null;
-        if (output.containsKey(Message.MTOM_ENABLED)) {
+        if (Boolean.TRUE.equals(output.getContextualProperty(Message.MTOM_ENABLED))) {
             am = new JAXBAttachmentMarshaller(output);
             am.setXOPPackage(true);
         }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java?view=diff&rev=472428&r1=472427&r2=472428
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java Wed Nov  8 00:51:00 2006
@@ -20,25 +20,26 @@
 package org.apache.cxf.jaxws.binding.soap;
 
 
-import java.util.Iterator;
 import java.util.Set;
 
 import javax.xml.soap.MessageFactory;
 import javax.xml.soap.SOAPFactory;
 import javax.xml.ws.soap.SOAPBinding;
 
-import org.apache.cxf.binding.soap.SoapBinding;
-import org.apache.cxf.binding.soap.interceptor.AttachmentOutInterceptor;
-import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.jaxws.binding.BindingImpl;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.service.model.BindingInfo;
 
 public class SOAPBindingImpl extends BindingImpl implements SOAPBinding {
 
-    private SoapBinding soapBinding;
+    
+    private BindingInfo soapBinding;
+    
     // private SoapBinding soapBinding;
 
-    public SOAPBindingImpl(SoapBinding sb) {
+    public SOAPBindingImpl(BindingInfo sb) {
         soapBinding = sb;
+        
     }
     
     public Set<String> getRoles() {
@@ -50,25 +51,12 @@
     }
 
     public boolean isMTOMEnabled() {
-        return soapBinding.isMtomEnabled();
+        return Boolean.TRUE.equals(soapBinding.getProperty(Message.MTOM_ENABLED));
     }
 
     public void setMTOMEnabled(boolean flag) {
-        if (flag != soapBinding.isMtomEnabled()) {
-            soapBinding.setMtomEnabled(flag);
-            if (flag) {
-                soapBinding.getOutInterceptors().add(new AttachmentOutInterceptor());
-            } else {
-                Iterator<Interceptor> it = soapBinding.getOutInterceptors().iterator();
-                while (it.hasNext()) {
-                    Interceptor intc = it.next();
-                    if (intc instanceof AttachmentOutInterceptor) {
-                        soapBinding.getOutInterceptors().remove(intc);
-                        return;
-                    }
-                }
-            }
-        }
+        
+        soapBinding.setProperty(Message.MTOM_ENABLED, flag);
     }
 
     public MessageFactory getMessageFactory() {

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java?view=diff&rev=472428&r1=472427&r2=472428
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java Wed Nov  8 00:51:00 2006
@@ -87,7 +87,7 @@
     
     final void createJaxwsBinding() {
         if (getBinding() instanceof SoapBinding) {
-            binding = new SOAPBindingImpl((SoapBinding)getBinding());
+            binding = new SOAPBindingImpl(getEndpointInfo().getBinding());
         } else {
             binding = new BindingImpl();
         }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java?view=diff&rev=472428&r1=472427&r2=472428
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java Wed Nov  8 00:51:00 2006
@@ -37,7 +37,6 @@
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.BusFactoryHelper;
-import org.apache.cxf.binding.soap.SoapBinding;
 import org.apache.cxf.binding.soap.interceptor.AttachmentOutInterceptor;
 import org.apache.cxf.binding.soap.interceptor.MultipartMessageInterceptor;
 import org.apache.cxf.endpoint.Client;
@@ -82,7 +81,7 @@
                 EndpointInfo ei = service.getServiceInfo().getEndpoint(endpointName);
                 service.setInvoker(new JAXWSMethodInvoker(implementor));
                 org.apache.cxf.endpoint.EndpointImpl endpoint = new JaxWsEndpointImpl(bus, service, ei);
-                SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl((SoapBinding) endpoint.getBinding()); 
+                SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl(ei.getBinding()); 
                 jaxWsSoapBinding.setMTOMEnabled(true);
                 modifyBindingInterceptors(endpoint.getBinding().getInInterceptors(), endpoint.getBinding()
                         .getOutInterceptors());
@@ -176,7 +175,7 @@
         EndpointInfo ei = null;
         ei = si.getEndpoint(portName);
         JaxWsEndpointImpl jaxwsEndpoint = new JaxWsEndpointImpl(bus, service, ei);
-        SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl((SoapBinding) jaxwsEndpoint.getBinding());
+        SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl(ei.getBinding());
         jaxWsSoapBinding.setMTOMEnabled(true);
         modifyBindingInterceptors(jaxwsEndpoint.getBinding().getInInterceptors(), jaxwsEndpoint.getBinding()
                 .getOutInterceptors());

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ServerMtomXopTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ServerMtomXopTest.java?view=diff&rev=472428&r1=472427&r2=472428
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ServerMtomXopTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ServerMtomXopTest.java Wed Nov  8 00:51:00 2006
@@ -38,7 +38,7 @@
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.BusFactoryHelper;
-import org.apache.cxf.binding.soap.SoapBinding;
+
 import org.apache.cxf.binding.soap.interceptor.AttachmentOutInterceptor;
 import org.apache.cxf.binding.soap.interceptor.MultipartMessageInterceptor;
 import org.apache.cxf.endpoint.Client;
@@ -80,7 +80,7 @@
         EndpointInfo ei = service.getServiceInfo().getEndpoint(endpointName);
         service.setInvoker(new JAXWSMethodInvoker(implementor));
         org.apache.cxf.endpoint.EndpointImpl endpoint = new JaxWsEndpointImpl(bus, service, ei);
-        SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl((SoapBinding) endpoint.getBinding());
+        SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl(ei.getBinding());
         jaxWsSoapBinding.setMTOMEnabled(true);
         modifyBindingInterceptors(endpoint.getBinding().getInInterceptors(), endpoint.getBinding()
                 .getOutInterceptors());
@@ -169,7 +169,7 @@
         EndpointInfo ei = null;
         ei = si.getEndpoint(portName);
         JaxWsEndpointImpl jaxwsEndpoint = new JaxWsEndpointImpl(bus, service, ei);
-        SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl((SoapBinding) jaxwsEndpoint.getBinding());
+        SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl(ei.getBinding());
         jaxWsSoapBinding.setMTOMEnabled(true);
         modifyBindingInterceptors(jaxwsEndpoint.getBinding().getInInterceptors(), jaxwsEndpoint.getBinding()
                 .getOutInterceptors());