Author: andygumbrecht
Date: Mon Jun 30 11:20:53 2014
New Revision: 1606689

URL: http://svn.apache.org/r1606689
Log:
Example and test for #TOMEE-1261, thanks to Xavier Dury

Added:
    tomee/tomee/trunk/examples/mtom/   (with props)
    tomee/tomee/trunk/examples/mtom/pom.xml
    tomee/tomee/trunk/examples/mtom/src/
    tomee/tomee/trunk/examples/mtom/src/main/
    tomee/tomee/trunk/examples/mtom/src/main/java/
    tomee/tomee/trunk/examples/mtom/src/main/java/org/
    tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/
    tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/
    
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/AbstractService.java
    
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/EjbService.java
    
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/PojoService.java
    tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Request.java
    
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Response.java
    tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Service.java
    tomee/tomee/trunk/examples/mtom/src/test/
    tomee/tomee/trunk/examples/mtom/src/test/java/
    tomee/tomee/trunk/examples/mtom/src/test/java/org/
    tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/
    tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/
    
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/AbstractServiceTest.java
    
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/EjbServiceTest.java
    
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/PojoServiceTest.java

Propchange: tomee/tomee/trunk/examples/mtom/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Jun 30 11:20:53 2014
@@ -0,0 +1,3 @@
+*.iml
+.idea
+target

Added: tomee/tomee/trunk/examples/mtom/pom.xml
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/pom.xml?rev=1606689&view=auto
==============================================================================
--- tomee/tomee/trunk/examples/mtom/pom.xml (added)
+++ tomee/tomee/trunk/examples/mtom/pom.xml Mon Jun 30 11:20:53 2014
@@ -0,0 +1,62 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+
+       <modelVersion>4.0.0</modelVersion>
+       <groupId>org.superbiz</groupId>
+       <artifactId>mtom</artifactId>
+       <version>1.1.0-SNAPSHOT</version>
+       <name>OpenEJB :: Examples :: MTOM</name>
+
+       <properties>
+               
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+       </properties>
+       
+       <repositories>
+               <repository>
+                       <id>snapshots-apache</id>
+                       
<url>http://repository.apache.org/content/groups/snapshots/</url>
+               </repository>
+       </repositories>
+       
+       <build>
+    <defaultGoal>install</defaultGoal>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+       <dependencies>
+               <dependency>
+                       <groupId>org.apache.openejb</groupId>
+                       <artifactId>openejb-cxf</artifactId>
+                       <version>4.7.0-SNAPSHOT</version>
+                       <scope>provided</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.openejb</groupId>
+                       <artifactId>openejb-junit</artifactId>
+                       <version>4.7.0-SNAPSHOT</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.openejb</groupId>
+                       <artifactId>openejb-mockito</artifactId>
+                       <version>4.7.0-SNAPSHOT</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.hamcrest</groupId>
+                       <artifactId>hamcrest-library</artifactId>
+                       <version>1.3</version>
+                       <scope>test</scope>
+               </dependency>
+       </dependencies>
+       
+</project>

Added: 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/AbstractService.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/AbstractService.java?rev=1606689&view=auto
==============================================================================
--- 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/AbstractService.java
 (added)
+++ 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/AbstractService.java
 Mon Jun 30 11:20:53 2014
@@ -0,0 +1,10 @@
+package org.superbiz.mtom;
+
+import javax.activation.DataHandler;
+
+public class AbstractService {
+
+    public Response convertToBytes(final Request request) {
+        return new Response(new DataHandler(request.getMessage().getBytes(), 
"application/octet-stream"));
+    }
+}

Added: 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/EjbService.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/EjbService.java?rev=1606689&view=auto
==============================================================================
--- 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/EjbService.java 
(added)
+++ 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/EjbService.java 
Mon Jun 30 11:20:53 2014
@@ -0,0 +1,18 @@
+package org.superbiz.mtom;
+
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.jws.soap.SOAPBinding.Style;
+import javax.jws.soap.SOAPBinding.Use;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.soap.MTOM;
+
+@Stateless
+@WebService
+@SOAPBinding(use = Use.LITERAL, parameterStyle = ParameterStyle.BARE, style = 
Style.DOCUMENT)
+@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING)
+@MTOM
+public class EjbService extends AbstractService implements Service {
+}

Added: 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/PojoService.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/PojoService.java?rev=1606689&view=auto
==============================================================================
--- 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/PojoService.java
 (added)
+++ 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/PojoService.java
 Mon Jun 30 11:20:53 2014
@@ -0,0 +1,16 @@
+package org.superbiz.mtom;
+
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.jws.soap.SOAPBinding.Style;
+import javax.jws.soap.SOAPBinding.Use;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.soap.MTOM;
+
+@WebService
+@SOAPBinding(use = Use.LITERAL, parameterStyle = ParameterStyle.BARE, style = 
Style.DOCUMENT)
+@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING)
+@MTOM
+public class PojoService extends AbstractService implements Service {
+}

Added: 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Request.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Request.java?rev=1606689&view=auto
==============================================================================
--- 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Request.java 
(added)
+++ 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Request.java 
Mon Jun 30 11:20:53 2014
@@ -0,0 +1,27 @@
+package org.superbiz.mtom;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Request {
+
+    private String message;
+
+    public Request() {
+    }
+
+    public Request(final String message) {
+        this.message = message;
+    }
+
+    public String getMessage() {
+        return this.message;
+    }
+
+    public void setMessage(final String message) {
+        this.message = message;
+    }
+}

Added: 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Response.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Response.java?rev=1606689&view=auto
==============================================================================
--- 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Response.java 
(added)
+++ 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Response.java 
Mon Jun 30 11:20:53 2014
@@ -0,0 +1,30 @@
+package org.superbiz.mtom;
+
+import javax.activation.DataHandler;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlMimeType;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Response {
+
+    @XmlMimeType("application/octet-stream")
+    private DataHandler result;
+
+    public Response() {
+    }
+
+    public Response(final DataHandler result) {
+        this.result = result;
+    }
+
+    public DataHandler getResult() {
+        return this.result;
+    }
+
+    public void setResult(final DataHandler result) {
+        this.result = result;
+    }
+}

Added: 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Service.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Service.java?rev=1606689&view=auto
==============================================================================
--- 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Service.java 
(added)
+++ 
tomee/tomee/trunk/examples/mtom/src/main/java/org/superbiz/mtom/Service.java 
Mon Jun 30 11:20:53 2014
@@ -0,0 +1,19 @@
+package org.superbiz.mtom;
+
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.jws.soap.SOAPBinding.Style;
+import javax.jws.soap.SOAPBinding.Use;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.soap.MTOM;
+
+@WebService
+@SOAPBinding(use = Use.LITERAL, parameterStyle = ParameterStyle.BARE, style = 
Style.DOCUMENT)
+@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING)
+@MTOM
+public interface Service {
+
+    Response convertToBytes(Request request);
+
+}

Added: 
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/AbstractServiceTest.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/AbstractServiceTest.java?rev=1606689&view=auto
==============================================================================
--- 
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/AbstractServiceTest.java
 (added)
+++ 
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/AbstractServiceTest.java
 Mon Jun 30 11:20:53 2014
@@ -0,0 +1,31 @@
+package org.superbiz.mtom;
+
+import org.apache.openejb.junit.ApplicationComposer;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.xml.ws.WebServiceRef;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+@RunWith(ApplicationComposer.class)
+public abstract class AbstractServiceTest {
+
+    @WebServiceRef
+    private Service service;
+
+    @Test
+    public void test() throws IOException {
+        final Response response = this.service.convertToBytes(new 
Request("hello world!"));
+
+        Assert.assertNotNull(response.getResult());
+
+        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+
+        response.getResult().writeTo(outputStream);
+
+        Assert.assertTrue("datahandler is empty", outputStream.size() > 0);
+    }
+
+}

Added: 
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/EjbServiceTest.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/EjbServiceTest.java?rev=1606689&view=auto
==============================================================================
--- 
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/EjbServiceTest.java
 (added)
+++ 
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/EjbServiceTest.java
 Mon Jun 30 11:20:53 2014
@@ -0,0 +1,13 @@
+package org.superbiz.mtom;
+
+import org.apache.openejb.testing.EnableServices;
+import org.apache.openejb.testing.Module;
+
+@EnableServices("jaxws") // maybe this should be @Inherited like @RunWith
+public class EjbServiceTest extends AbstractServiceTest {
+
+    @Module
+    public Class<?>[] module() {
+        return new Class<?>[]{EjbService.class};
+    }
+}

Added: 
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/PojoServiceTest.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/PojoServiceTest.java?rev=1606689&view=auto
==============================================================================
--- 
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/PojoServiceTest.java
 (added)
+++ 
tomee/tomee/trunk/examples/mtom/src/test/java/org/superbiz/mtom/PojoServiceTest.java
 Mon Jun 30 11:20:53 2014
@@ -0,0 +1,14 @@
+package org.superbiz.mtom;
+
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.testing.EnableServices;
+import org.apache.openejb.testing.Module;
+
+@EnableServices("jaxws") // maybe this should be @Inherited like @RunWith
+public class PojoServiceTest extends AbstractServiceTest {
+
+    @Module
+    public WebApp module() {
+        return new WebApp().addServlet("ws", PojoService.class.getName(), 
"/ws");
+    }
+}


Reply via email to