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