You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2006/11/13 11:19:41 UTC

svn commit: r474229 - in /incubator/cxf/trunk: distribution/src/main/release/etc/ distribution/src/main/release/samples/hello_world/ distribution/src/main/release/samples/hello_world_RPCLit/ distribution/src/main/release/samples/hello_world_xml_bare/ d...

Author: ningjiang
Date: Mon Nov 13 02:19:40 2006
New Revision: 474229

URL: http://svn.apache.org/viewvc?view=rev&rev=474229
Log:
Got Servelt sample to work now
Changed the JAXWSMethodInvoker to extends FactoryInvoker for different scope bean create

Added:
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JAXWSMethodInvokerTest.java   (with props)
Modified:
    incubator/cxf/trunk/distribution/src/main/release/etc/web.xml
    incubator/cxf/trunk/distribution/src/main/release/samples/hello_world/build.xml
    incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_RPCLit/build.xml
    incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_bare/build.xml
    incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_wrapped/build.xml
    incubator/cxf/trunk/distribution/src/main/release/samples/soap12/build.xml
    incubator/cxf/trunk/distribution/src/main/release/samples/soap_header/build.xml
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletController.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HolderTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/ExternalServicesServletTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/web-external.xml
    incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/mtom_xop/HelloImpl.java

Modified: incubator/cxf/trunk/distribution/src/main/release/etc/web.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/src/main/release/etc/web.xml?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/distribution/src/main/release/etc/web.xml (original)
+++ incubator/cxf/trunk/distribution/src/main/release/etc/web.xml Mon Nov 13 02:19:40 2006
@@ -31,7 +31,7 @@
     </servlet>
     <servlet-mapping>
         <servlet-name>cxf</servlet-name>
-        <url-pattern>/cxf/*</url-pattern>
+        <url-pattern>/services/*</url-pattern>
     </servlet-mapping>
     <session-config>
         <session-timeout>60</session-timeout>

Modified: incubator/cxf/trunk/distribution/src/main/release/samples/hello_world/build.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/src/main/release/samples/hello_world/build.xml?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/distribution/src/main/release/samples/hello_world/build.xml (original)
+++ incubator/cxf/trunk/distribution/src/main/release/samples/hello_world/build.xml Mon Nov 13 02:19:40 2006
@@ -45,6 +45,6 @@
 
     <target name="client-servlet" description="run demo client hitting servlet" depends="build">
         <property name="param" value=""/>
-        <cxfrun classname="demo.hw.client.Client" param1="${base.url}/helloworld/cxf/hello_world" param2="${op}" param3="${param}"/>
+        <cxfrun classname="demo.hw.client.Client" param1="${base.url}/helloworld/services/hello_world?wsdl" param2="${op}" param3="${param}"/>
     </target> 
 </project>

Modified: incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_RPCLit/build.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_RPCLit/build.xml?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_RPCLit/build.xml (original)
+++ incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_RPCLit/build.xml Mon Nov 13 02:19:40 2006
@@ -45,6 +45,6 @@
 
     <target name="client-servlet" description="run demo client hitting servlet" depends="build">
         <property name="param" value=""/>
-        <cxfrun classname="demo.hwRPCLit.client.Client" param1="${base.url}/helloworld/cxf/hello_world" param2="${op}" param3="${param}"/>
+        <cxfrun classname="demo.hwRPCLit.client.Client" param1="${base.url}/helloworld/services/hello_world?wsdl" param2="${op}" param3="${param}"/>
     </target> 
 </project>

Modified: incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_bare/build.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_bare/build.xml?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_bare/build.xml (original)
+++ incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_bare/build.xml Mon Nov 13 02:19:40 2006
@@ -45,6 +45,6 @@
 
     <target name="client-servlet" description="run demo client hitting servlet" depends="build">
         <property name="param" value=""/>
-        <cxfrun classname="demo.hw.client.Client" param1="${base.url}/helloworld/cxf/hello_world" param2="${op}" param3="${param}"/>
+        <cxfrun classname="demo.hw.client.Client" param1="${base.url}/helloworld/services/hello_world?wsdl" param2="${op}" param3="${param}"/>
     </target> 
 </project>

Modified: incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_wrapped/build.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_wrapped/build.xml?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_wrapped/build.xml (original)
+++ incubator/cxf/trunk/distribution/src/main/release/samples/hello_world_xml_wrapped/build.xml Mon Nov 13 02:19:40 2006
@@ -45,6 +45,6 @@
 
     <target name="client-servlet" description="run demo client hitting servlet" depends="build">
         <property name="param" value=""/>
-        <cxfrun classname="demo.hw.client.Client" param1="${base.url}/helloworld/cxf/hello_world" param2="${op}" param3="${param}"/>
+        <cxfrun classname="demo.hw.client.Client" param1="${base.url}/helloworld/services/hello_world?wsdl" param2="${op}" param3="${param}"/>
     </target> 
 </project>

Modified: incubator/cxf/trunk/distribution/src/main/release/samples/soap12/build.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/src/main/release/samples/soap12/build.xml?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/distribution/src/main/release/samples/soap12/build.xml (original)
+++ incubator/cxf/trunk/distribution/src/main/release/samples/soap12/build.xml Mon Nov 13 02:19:40 2006
@@ -53,6 +53,6 @@
 
     <target name="client-servlet" description="run demo client hitting servlet" depends="build">
         <property name="param" value=""/>
-        <cxfrun classname="demo.hw.client.Client" param1="${base.url}/helloworld/cxf/hello_world" param2="${op}" param3="${param}"/>
+        <cxfrun classname="demo.hw.client.Client" param1="${base.url}/helloworld/services/hello_world?wsdl" param2="${op}" param3="${param}"/>
     </target> 
 </project>

Modified: incubator/cxf/trunk/distribution/src/main/release/samples/soap_header/build.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/src/main/release/samples/soap_header/build.xml?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/distribution/src/main/release/samples/soap_header/build.xml (original)
+++ incubator/cxf/trunk/distribution/src/main/release/samples/soap_header/build.xml Mon Nov 13 02:19:40 2006
@@ -42,7 +42,7 @@
 
     <target name="client-servlet" description="run demo client hitting servlet" depends="build">
         <property name="param" value=""/>
-        <cxfrun classname="demo.soap_header.client.Client" param1="${base.url}/soapheader/cxf/soap_header" param2="${op}" param3="${param}"/>
+        <cxfrun classname="demo.soap_header.client.Client" param1="${base.url}/soapheader/services/soap_header?wsdl" param2="${op}" param3="${param}"/>
     </target>     
     
 </project>

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java Mon Nov 13 02:19:40 2006
@@ -33,17 +33,35 @@
 import javax.xml.ws.handler.MessageContext;
 
 import org.apache.cxf.binding.soap.model.SoapHeaderInfo;
+import org.apache.cxf.common.util.factory.Factory;
 import org.apache.cxf.jaxws.context.WebServiceContextImpl;
 import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
 import org.apache.cxf.message.Exchange;
-import org.apache.cxf.service.invoker.BeanInvoker;
+import org.apache.cxf.service.invoker.ApplicationScopePolicy;
+import org.apache.cxf.service.invoker.FactoryInvoker;
+import org.apache.cxf.service.invoker.ScopePolicy;
 import org.apache.cxf.service.model.BindingMessageInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
 
-public class JAXWSMethodInvoker extends BeanInvoker {
+public class JAXWSMethodInvoker extends FactoryInvoker {
 
-    public JAXWSMethodInvoker(Object bean) {
-        super(bean);
+    public JAXWSMethodInvoker(final Object bean) {
+        super(
+            new Factory() {
+                public Object create() {
+                    return bean;
+                }
+            },
+            ApplicationScopePolicy.instance());
+        
+    }
+    
+    public JAXWSMethodInvoker(Factory factory) {
+        super(factory, ApplicationScopePolicy.instance());
+    }
+    
+    public JAXWSMethodInvoker(Factory factory, ScopePolicy scope) {
+        super(factory, scope);
     }
 
     @SuppressWarnings("unchecked")

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java Mon Nov 13 02:19:40 2006
@@ -215,9 +215,11 @@
             Object impl = cls.newInstance();
 
             EndpointImpl ep = new EndpointImpl(bus, impl, (String)null);
-
-            // doesn't really matter what URL is used here
-            ep.publish("http://localhost" + (urlPat.charAt(0) == '/' ? "" : "/") + urlPat);
+            LOG.info("publish the servcie to {context}/ " + (urlPat.charAt(0) == '/' ? "" : "/") + urlPat);
+            
+            // TODO we may need to get the url-pattern from servlet context
+            ep.publish("http://localhost/services" + (urlPat.charAt(0) == '/' ? "" : "/") + urlPat);
+            
         } catch (ClassNotFoundException ex) {
             throw new ServletException(ex);
         } catch (InstantiationException ex) {

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletController.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletController.java?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletController.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletController.java Mon Nov 13 02:19:40 2006
@@ -65,9 +65,13 @@
         try {
             EndpointInfo ei = new EndpointInfo();
             ei.setAddress("http://localhost" + request.getServletPath() + request.getPathInfo());
+            
             ServletDestination d = (ServletDestination)transport.getDestination(ei);
 
             if (d.getMessageObserver() == null) {
+                LOG.warning("Can't find the the request for" 
+                         + "http://localhost" + request.getServletPath() 
+                         + request.getPathInfo() + " 's Observer ");
                 generateNotFound(request, res);
             } else if (wsdl) {
                 generateWSDL(request, res, d);

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java Mon Nov 13 02:19:40 2006
@@ -151,6 +151,7 @@
      * @param observer the observer to notify on receipt of incoming
      */
     public synchronized void setMessageObserver(MessageObserver observer) {
+        LOG.info("!!! set the observer for address " + getAddress().getAddress().getValue());
         incomingObserver = observer;
     }
     
@@ -365,13 +366,7 @@
             Integer i = (Integer)outMessage.get(Message.RESPONSE_CODE);
             if (i != null) {
                 int status = i.intValue();
-                if (status == HttpURLConnection.HTTP_INTERNAL_ERROR) {
-                    response.sendError(status, "Fault Occurred");
-                } else if (status == HttpURLConnection.HTTP_ACCEPTED) {
-                    response.setStatus(HttpServletResponse.SC_ACCEPTED);
-                } else {
-                    response.setStatus(status);
-                }
+                response.setStatus(status);                
             } else {
                 response.setStatus(HttpURLConnection.HTTP_OK);
             }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HolderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HolderTest.java?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HolderTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HolderTest.java Mon Nov 13 02:19:40 2006
@@ -18,11 +18,15 @@
  */
 package org.apache.cxf.jaxws;
 
+import org.w3c.dom.Node;
 import org.apache.cxf.Bus;
 import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
 import org.apache.cxf.mtom_xop.HelloImpl;
 import org.apache.cxf.service.Service;
 import org.apache.cxf.service.factory.ServerFactoryBean;
+import org.apache.cxf.transport.local.LocalTransportFactory;
+
+
 
 public class HolderTest extends AbstractJaxWsTest {
     public void testInvocation() throws Exception {
@@ -38,14 +42,16 @@
         ServerFactoryBean svr = new ServerFactoryBean();
         svr.setBus(bus);
         svr.setServiceFactory(bean);
-        
         svr.create();
 
-//        Node response = invoke("http://localhost:9036/mime-test",
-//                               LocalTransportFactory.TRANSPORT_ID, 
-//                               "echoData.xml");
-//
-//        assertNotNull(response);
-
+        Node response = invoke("http://localhost:9036/mime-test",
+                               LocalTransportFactory.TRANSPORT_ID, 
+                               "echoData.xml");
+        addNamespace("h", "http://cxf.apache.org/mime");        
+        
+        assertValid("//h:data", response);        
+        assertValid("/s:Envelope/s:Body", response); 
+        assertNotNull(response);
+        assertNoFault(response);
     }
 }

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JAXWSMethodInvokerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JAXWSMethodInvokerTest.java?view=auto&rev=474229
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JAXWSMethodInvokerTest.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JAXWSMethodInvokerTest.java Mon Nov 13 02:19:40 2006
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxws;
+
+import junit.framework.TestCase;
+
+import org.apache.cxf.common.util.factory.Factory;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.mime.Hello;
+import org.apache.cxf.service.invoker.ScopePolicy;
+import org.easymock.classextension.EasyMock;
+
+public class JAXWSMethodInvokerTest extends TestCase {
+    Factory factory = EasyMock.createMock(Factory.class);
+    Object target = EasyMock.createMock(Hello.class);
+    ScopePolicy scope = EasyMock.createMock(ScopePolicy.class);
+           
+    public void testFactoryBeans() throws Throwable {
+        EasyMock.reset(factory);
+        factory.create();
+        EasyMock.expectLastCall().andReturn(target);
+        EasyMock.replay(factory);
+        JAXWSMethodInvoker jaxwsMethodInvoker = new JAXWSMethodInvoker(factory);
+        Exchange ex = EasyMock.createMock(Exchange.class);               
+        Object object = jaxwsMethodInvoker.getServiceObject(ex);
+        assertEquals("the target object and service object should be equal ", object, target);
+        EasyMock.verify(factory);
+    }
+        
+
+}

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JAXWSMethodInvokerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JAXWSMethodInvokerTest.java
------------------------------------------------------------------------------
    svn:keywords = svn:eol-style

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/ExternalServicesServletTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/ExternalServicesServletTest.java?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/ExternalServicesServletTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/ExternalServicesServletTest.java Mon Nov 13 02:19:40 2006
@@ -36,7 +36,7 @@
     public void testPostInvokeServices() throws Exception {
         newClient();
         
-        WebRequest req = new PostMethodWebRequest("http://localhost/greeter1",
+        WebRequest req = new PostMethodWebRequest("http://localhost/services/greeter1",
                 getClass().getResourceAsStream("/org/apache/cxf/jaxws/GreeterMessage.xml"),
                 "text/xml; charset=UTF-8");
         

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/web-external.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/web-external.xml?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/web-external.xml (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/servlet/web-external.xml Mon Nov 13 02:19:40 2006
@@ -39,7 +39,7 @@
 
   <servlet-mapping>
     <servlet-name>CXFServlet</servlet-name>
-    <url-pattern>/*</url-pattern>
+    <url-pattern>/services/*</url-pattern>
   </servlet-mapping>
 
 

Modified: incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/mtom_xop/HelloImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/mtom_xop/HelloImpl.java?view=diff&rev=474229&r1=474228&r2=474229
==============================================================================
--- incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/mtom_xop/HelloImpl.java (original)
+++ incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/mtom_xop/HelloImpl.java Mon Nov 13 02:19:40 2006
@@ -40,7 +40,12 @@
         name.value = "return detail + " + name.value;        
     }
 
-    public void echoData(String body, Holder<byte[]> data) {
+    public void echoData(String body, Holder<byte[]> data) {        
+        String echo = new String("echo!");
+        byte[] returnData = new byte[data.value.length + 10];
+        System.arraycopy(data.value, 0, returnData, 0, data.value.length);
+        System.arraycopy(echo.getBytes(), 0, returnData, data.value.length, echo.getBytes().length);
+        data.value = returnData;        
     }
 
     public void echoDataWithEnableMIMEContent(String body, Holder<byte[]> data) {