Author: rmannibucau
Date: Sun May 6 17:31:47 2012
New Revision: 1334707
URL: http://svn.apache.org/viewvc?rev=1334707&view=rev
Log:
TOMEE-186 more work about @Server tests. Using shrinkwrap and managing @Archive
and @Library methods
Added:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Archive.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Library.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/LibraryEnhancedTweaker.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ShrinkWrapEnhancedTweaker.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/LibraryWrappedTest.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/ShrinkWrappedTest.java
Modified:
openejb/trunk/openejb/arquillian-tomee/pom.xml
openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java
openejb/trunk/openejb/pom.xml
Modified: openejb/trunk/openejb/arquillian-tomee/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/pom.xml?rev=1334707&r1=1334706&r2=1334707&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/pom.xml (original)
+++ openejb/trunk/openejb/arquillian-tomee/pom.xml Sun May 6 17:31:47 2012
@@ -37,7 +37,6 @@
<version.openejb>4.0.0-beta-3-SNAPSHOT</version.openejb>
<version.tomee>1.0.0-beta-3-SNAPSHOT</version.tomee>
<version.shrinkwrap.descriptor>1.1.0-beta-1</version.shrinkwrap.descriptor>
- <version.shrinkwrap.shrinkwrap>1.0.0</version.shrinkwrap.shrinkwrap>
</properties>
<modules>
Modified: openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml?rev=1334707&r1=1334706&r2=1334707&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml (original)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml Sun May 6
17:31:47 2012
@@ -50,6 +50,22 @@
<artifactId>junit</artifactId>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>org.jboss.shrinkwrap</groupId>
+ <artifactId>shrinkwrap-api</artifactId>
+ <version>${version.shrinkwrap.shrinkwrap}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.shrinkwrap</groupId>
+ <artifactId>shrinkwrap-impl-base</artifactId>
+ <version>${version.shrinkwrap.shrinkwrap}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>ziplock</artifactId>
+ <version>1.0.0-beta-3-SNAPSHOT</version>
+ </dependency>
+
<dependency> <!-- just to avoid bad dependency relationship in our build
-->
<groupId>org.apache.openejb</groupId>
<artifactId>apache-tomee</artifactId>
Added:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Archive.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Archive.java?rev=1334707&view=auto
==============================================================================
---
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Archive.java
(added)
+++
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Archive.java
Sun May 6 17:31:47 2012
@@ -0,0 +1,14 @@
+package org.apache.openejb.itest.tomee;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Target({ METHOD })
+@Retention(RUNTIME)
+public @interface Archive {
+ String value() default ITTomEERunner.DEFAULT_SERVER; // server name
+}
Modified:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java?rev=1334707&r1=1334706&r2=1334707&view=diff
==============================================================================
---
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java
(original)
+++
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java
Sun May 6 17:31:47 2012
@@ -1,10 +1,13 @@
package org.apache.openejb.itest.tomee;
import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.arquillian.common.Setup;
-import org.apache.openejb.arquillian.common.TomEEConfiguration;
import org.apache.openejb.config.RemoteServer;
import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.IO;
@@ -20,17 +23,19 @@ public class ITTomEERunner extends Block
public static final String HTTP_PROP_PREFIX = "tomee.it.";
public static final String HTTP_PROP_SUFFIX = ".http";
+ protected static final String DEFAULT_SERVER = "_DEFAULT_";
+
private static final String WORKING_DIR =
System.getProperty(TOMEE_TEST_IT_WORKING_DIR, "target/it-working-dir");
private static final String OPENEJB_HOME = "openejb.home";
private static final String SERVER_SHUTDOWN_PORT = "server.shutdown.port";
- private final List<ServerInfo> servers;
+ private final Map<String, ServerInfo> servers;
private final RemoteServer[] remoteServers;
public ITTomEERunner(final Class<?> klass) throws InitializationError {
super(klass);
- servers = new ArrayList<ServerInfo>();
+ servers = new HashMap<String, ServerInfo>();
final Servers serversAnnotation = klass.getAnnotation(Servers.class);
if (serversAnnotation != null) {
@@ -45,6 +50,53 @@ public class ITTomEERunner extends Block
}
remoteServers = new RemoteServer[servers.size()];
+
+ for (Method method : klass.getMethods()) {
+ if (isProducerMethod(method)) {
+ {
+ final Archive webapp = method.getAnnotation(Archive.class);
+ if (webapp != null &&
org.jboss.shrinkwrap.api.Archive.class.isAssignableFrom(method.getReturnType()))
{
+ final String server = webapp.value();
+ final ServerInfo info = servers.get(server);
+ if (info == null) {
+ throw new OpenEJBRuntimeException("can't find
server '" + server + "'");
+ }
+
+ final org.jboss.shrinkwrap.api.Archive<?> archive;
+ try {
+ archive = (org.jboss.shrinkwrap.api.Archive<?>)
method.invoke(null);
+ } catch (Exception e) {
+ throw new OpenEJBRuntimeException("can't create
archive from '" + method.toGenericString() + "'", e);
+ }
+ info.tweaker = new
ShrinkWrapEnhancedTweaker(info.tweaker, archive);
+ }
+ }
+
+ {
+ final Library library =
method.getAnnotation(Library.class);
+ if (library != null &&
File.class.isAssignableFrom(method.getReturnType())) {
+ final String server = library.value();
+ final ServerInfo info = servers.get(server);
+ if (info == null) {
+ throw new OpenEJBRuntimeException("can't find
server '" + server + "'");
+ }
+
+ final File lib;
+ try {
+ lib = (File) method.invoke(null);
+ } catch (Exception e) {
+ throw new OpenEJBRuntimeException("can't create
archive from '" + method.toGenericString() + "'", e);
+ }
+ info.tweaker = new
LibraryEnhancedTweaker(info.tweaker, lib);
+ }
+ }
+ }
+ }
+ }
+
+ private boolean isProducerMethod(final Method method) {
+ final int modifiers = method.getModifiers();
+ return Modifier.isPublic(modifiers) && Modifier.isStatic(modifiers) &&
method.getParameterTypes().length == 0;
}
private void addServer(final Server server) throws InitializationError {
@@ -77,7 +129,7 @@ public class ITTomEERunner extends Block
final Artifact art = server.artifact();
info.server = Repository.getArtifact(art.groupId(), art.artifactId(),
art.version(), art.type(), art.classifier());
- servers.add(info);
+ servers.put(info.name, info);
}
@Override
@@ -103,7 +155,7 @@ public class ITTomEERunner extends Block
final String oldShutdownPort =
System.getProperty(SERVER_SHUTDOWN_PORT);
int i = 0;
- for (ServerInfo info : servers) {
+ for (ServerInfo info : servers.values()) {
final File tomee = new File(WORKING_DIR, info.name);
Files.mkdirs(tomee);
Zips.unzip(info.server, tomee, true);
Added:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Library.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Library.java?rev=1334707&view=auto
==============================================================================
---
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Library.java
(added)
+++
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Library.java
Sun May 6 17:31:47 2012
@@ -0,0 +1,13 @@
+package org.apache.openejb.itest.tomee;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Target({ METHOD })
+@Retention(RUNTIME)
+public @interface Library {
+ String value() default ITTomEERunner.DEFAULT_SERVER; // server name
+}
Added:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/LibraryEnhancedTweaker.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/LibraryEnhancedTweaker.java?rev=1334707&view=auto
==============================================================================
---
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/LibraryEnhancedTweaker.java
(added)
+++
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/LibraryEnhancedTweaker.java
Sun May 6 17:31:47 2012
@@ -0,0 +1,19 @@
+package org.apache.openejb.itest.tomee;
+
+import java.io.File;
+
+public class LibraryEnhancedTweaker extends SimpleTweaker {
+ private final ServerTweaker enhanced;
+ private final File lib;
+
+ public LibraryEnhancedTweaker(final ServerTweaker tweaker, final File lib)
{
+ this.enhanced = tweaker;
+ this.lib = lib;
+ }
+
+ @Override
+ public void tweak(final File home) {
+ enhanced.tweak(home);
+ addLib(home, lib);
+ }
+}
Modified:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java?rev=1334707&r1=1334706&r2=1334707&view=diff
==============================================================================
---
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java
(original)
+++
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java
Sun May 6 17:31:47 2012
@@ -9,7 +9,7 @@ import static java.lang.annotation.Reten
@Target({ TYPE })
@Retention(RUNTIME)
public @interface Server {
- String name() default ""; // name
+ String name() default ITTomEERunner.DEFAULT_SERVER; // name
String configurationDir() default "";
int http() default -1;
int shutdown() default -1;
Added:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ShrinkWrapEnhancedTweaker.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ShrinkWrapEnhancedTweaker.java?rev=1334707&view=auto
==============================================================================
---
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ShrinkWrapEnhancedTweaker.java
(added)
+++
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ShrinkWrapEnhancedTweaker.java
Sun May 6 17:31:47 2012
@@ -0,0 +1,32 @@
+package org.apache.openejb.itest.tomee;
+
+import org.apache.openejb.arquillian.common.Files;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.exporter.ZipExporter;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+
+import java.io.File;
+
+public class ShrinkWrapEnhancedTweaker extends SimpleTweaker {
+ private final ServerTweaker decorated;
+ private final Archive<?> archive;
+
+ public ShrinkWrapEnhancedTweaker(final ServerTweaker tweaker, final
Archive<?> archive) {
+ this.decorated = tweaker;
+ this.archive = archive;
+ }
+
+ @Override
+ public void tweak(final File home) {
+ decorated.tweak(home);
+
+ final File dump;
+ if (archive instanceof WebArchive) {
+ dump = webApp(home, archive.getName());
+ } else {
+ dump = archive(home, archive.getName());
+ }
+ Files.mkdir(dump.getParentFile());
+ archive.as(ZipExporter.class).exportTo(dump);
+ }
+}
Modified:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java?rev=1334707&r1=1334706&r2=1334707&view=diff
==============================================================================
---
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java
(original)
+++
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java
Sun May 6 17:31:47 2012
@@ -25,7 +25,19 @@ public class SimpleTweaker implements Se
}
protected void addWebapp(final File home, final File war) {
- copy(war, new File(home, "webapps/" + war.getName()));
+ copy(war, webApp(home, war.getName()));
+ }
+
+ protected void addArchive(final File home, final File war) {
+ copy(war, archive(home, war.getName()));
+ }
+
+ protected File webApp(final File home, final String name) {
+ return new File(home, "webapps/" + name);
+ }
+
+ protected File archive(final File home, final String name) {
+ return new File(home, "apps/" + name);
}
protected File findJar(final String groupId, final String artifactId,
final String version) {
Added:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/LibraryWrappedTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/LibraryWrappedTest.java?rev=1334707&view=auto
==============================================================================
---
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/LibraryWrappedTest.java
(added)
+++
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/LibraryWrappedTest.java
Sun May 6 17:31:47 2012
@@ -0,0 +1,24 @@
+package org.apache.openejb.itest.tomee;
+
+import org.apache.ziplock.JarLocation;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+
+import static org.junit.Assert.assertTrue;
+
+@RunWith(ITTomEERunner.class)
+@Server(name = "server")
+public class LibraryWrappedTest {
+ @Library("server")
+ public static File lib() {
+ return JarLocation.jarLocation(ShrinkWrap.class);
+ }
+
+ @Test
+ public void checkSWWasAddedToTheContainer() {
+ assertTrue(new
File("target/it-working-dir/server/lib/shrinkwrap-api-1.0.0.jar").exists());
+ }
+}
Added:
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/ShrinkWrappedTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/ShrinkWrappedTest.java?rev=1334707&view=auto
==============================================================================
---
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/ShrinkWrappedTest.java
(added)
+++
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/ShrinkWrappedTest.java
Sun May 6 17:31:47 2012
@@ -0,0 +1,43 @@
+package org.apache.openejb.itest.tomee;
+
+import org.apache.openejb.loader.IO;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+import java.net.URL;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
+
+@Servers({
+ @Server(name = "tomee1"),
+ @Server(name = "tomee2")
+})
+@RunWith(ITTomEERunner.class)
+public class ShrinkWrappedTest {
+ @Archive("tomee1")
+ public static WebArchive war1() {
+ return ShrinkWrap.create(WebArchive.class,
"test.war").addAsWebResource(new StringAsset("tomee1"), "index.html");
+ }
+
+ @Archive("tomee2")
+ public static WebArchive war2() {
+ return ShrinkWrap.create(WebArchive.class,
"test.war").addAsWebResource(new StringAsset("tomee2"), "index.html");
+ }
+
+ @Test
+ public void check() throws IOException {
+ for (int i = 1; i <= 2; i++) {
+ final URL url = new URL("http://localhost:" +
System.getProperty("tomee.it.tomee" + i + ".http") + "/test");
+ final String str = IO.slurp(url);
+
+ assertNotNull(str);
+ assertThat(str, containsString("tomee" + i));
+ }
+ }
+}
Modified: openejb/trunk/openejb/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/pom.xml?rev=1334707&r1=1334706&r2=1334707&view=diff
==============================================================================
--- openejb/trunk/openejb/pom.xml (original)
+++ openejb/trunk/openejb/pom.xml Sun May 6 17:31:47 2012
@@ -166,6 +166,9 @@
<commons-lang.version>2.6</commons-lang.version>
<commons-io.version>1.4</commons-io.version>
<commons-net.version>3.1</commons-net.version>
+
+ <!-- arquillian/shrinkwrap versions used across multiple parents -->
+ <version.shrinkwrap.shrinkwrap>1.0.0</version.shrinkwrap.shrinkwrap>
</properties>
<build>