You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2010/11/11 22:00:22 UTC

svn commit: r1034119 - in /cxf/branches/2.2.x-fixes: ./ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java

Author: dkulp
Date: Thu Nov 11 21:00:22 2010
New Revision: 1034119

URL: http://svn.apache.org/viewvc?rev=1034119&view=rev
Log:
Merged revisions 1030831 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.3.x-fixes

................
  r1030831 | ema | 2010-11-04 00:21:57 -0400 (Thu, 04 Nov 2010) | 9 lines
  
  Merged revisions 1029537 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r1029537 | ema | 2010-11-01 11:24:42 +0800 (Mon, 01 Nov 2010) | 1 line
    
    [CXF-3104]:Enable threshold value configuration via  @MTOM and @MTOMFeature
  ........
................

Modified:
    cxf/branches/2.2.x-fixes/   (props changed)
    cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java
    cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java?rev=1034119&r1=1034118&r2=1034119&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java Thu Nov 11 21:00:22 2010
@@ -181,6 +181,9 @@ public class JaxWsServiceFactoryBean ext
         
         s.put(ENDPOINT_CLASS, implInfo.getEndpointClass());
         
+        if (s.getDataBinding() != null) {
+            setMTOMThreshold(s.getDataBinding());
+        }
         return s;
     }
 
@@ -632,6 +635,17 @@ public class JaxWsServiceFactoryBean ext
         return Collections.emptySet();
     }
 
+    private void setMTOMThreshold(DataBinding databinding) {
+        if (this.wsFeatures != null) {
+            for (WebServiceFeature wsf : this.wsFeatures) {
+                if (wsf instanceof MTOMFeature && ((MTOMFeature)wsf).getThreshold() > 0) {
+                    databinding.setMtomThreshold(((MTOMFeature)wsf).getThreshold());
+                }
+
+            }
+        }
+    }
+    
     @Override
     protected void buildServiceFromClass() {
         super.buildServiceFromClass();

Modified: cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java?rev=1034119&r1=1034118&r2=1034119&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java (original)
+++ cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java Thu Nov 11 21:00:22 2010
@@ -20,6 +20,8 @@
 package org.apache.cxf.systest.mtom_feature;
 
 import java.awt.Image;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintWriter;
 import java.net.URL;
 import javax.imageio.ImageIO;
 import javax.xml.namespace.QName;
@@ -29,8 +31,11 @@ import javax.xml.ws.Holder;
 import javax.xml.ws.Service;
 import javax.xml.ws.soap.MTOMFeature;
 
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.transport.local.LocalConduit;
+
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -44,6 +49,11 @@ public class MtomFeatureClientServerTest
     public static void startServers() throws Exception {
         assertTrue("server did not launch correctly", launchServer(Server.class, true));
     }
+    
+    @Before
+    public void setUp() throws Exception {
+        this.createBus();
+    }
 
     @Test
     public void testDetail() throws Exception {
@@ -112,19 +122,57 @@ public class MtomFeatureClientServerTest
         assertEquals("CXF", new String(photo.value));
         assertNotNull(image.value);
     }
+    
+    @Test
+    public void testEchoWithLowThreshold() throws Exception { 
+        ByteArrayOutputStream bout = this.setupOutLogging();
+        byte[] bytes = ImageHelper.getImageBytes(getImage("/java.jpg"), "image/jpeg");
+        Holder<byte[]> image = new Holder<byte[]>(bytes);
+        Hello hello = this.getPort(500);
+        hello.echoData(image);
+        assertTrue("MTOM should be enabled", bout.toString().indexOf("<xop:Include") > -1);
+    }
+    
+    @Test
+    public void testEchoWithHighThreshold() throws Exception { 
+        ByteArrayOutputStream bout = this.setupOutLogging();
+        byte[] bytes = ImageHelper.getImageBytes(getImage("/java.jpg"), "image/jpeg");
+        Holder<byte[]> image = new Holder<byte[]>(bytes);
+        Hello hello = this.getPort(2000);
+        hello.echoData(image);
+        assertTrue("MTOM should not be enabled", bout.toString().indexOf("<xop:Include") == -1);
+    }
+    
+    private ByteArrayOutputStream setupOutLogging() {
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        PrintWriter writer = new PrintWriter(bos, true);
+
+        LoggingOutInterceptor out = new LoggingOutInterceptor(writer);
+        this.bus.getOutInterceptors().add(out);
+
+        return bos;
+    }
 
     private Image getImage(String name) throws Exception {
         return ImageIO.read(getClass().getResource(name));
     }
 
     private Hello getPort() {
+        return getPort(0);
+    }
+    private Hello getPort(int threshold) {
         URL wsdl = getClass().getResource("/wsdl_systest/mtom.wsdl");
         assertNotNull("WSDL is null", wsdl);
 
         HelloService service = new HelloService(wsdl, serviceName);
         assertNotNull("Service is null ", service);
-        //return service.getHelloPort();        
-        Hello hello = service.getHelloPort(new MTOMFeature());
+        //return service.getHelloPort();
+        MTOMFeature mtomFeature = new MTOMFeature();
+        if (threshold > 0) {
+            mtomFeature = new MTOMFeature(true, threshold);
+        }
+        Hello hello = service.getHelloPort(mtomFeature);
+        
         try {
             updateAddressPort(hello, PORT);
         } catch (Exception e) {