You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2016/09/09 18:18:25 UTC

tomee git commit: TOMEE-1926 TomEEEmbeddedSingleRunner programmatic configuration

Repository: tomee
Updated Branches:
  refs/heads/master 50c0d734b -> f0718d1ad


TOMEE-1926 TomEEEmbeddedSingleRunner programmatic configuration


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/f0718d1a
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/f0718d1a
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/f0718d1a

Branch: refs/heads/master
Commit: f0718d1adac7f9c51f5026235be249717e681d7f
Parents: 50c0d73
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Fri Sep 9 20:16:58 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Fri Sep 9 20:18:15 2016 +0200

----------------------------------------------------------------------
 tomee/tomee-embedded/pom.xml                    | 28 ++++++++++++++++++++
 .../junit/TomEEEmbeddedSingleRunner.java        | 21 +++++++++++++--
 .../embedded/SingleInstanceRunnerTest.java      | 11 +++++++-
 3 files changed, 57 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/f0718d1a/tomee/tomee-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/pom.xml b/tomee/tomee-embedded/pom.xml
index d66d7dc..19fd351 100644
--- a/tomee/tomee-embedded/pom.xml
+++ b/tomee/tomee-embedded/pom.xml
@@ -200,6 +200,34 @@
           </filters>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>default-test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
+            <configuration>
+              <excludes>
+                <exclude>**/SingleInstanceRunnerTest*</exclude>
+              </excludes>
+            </configuration>
+          </execution>
+          <execution>
+            <id>single-server</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>**/SingleInstanceRunnerTest*</include>
+              </includes>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/f0718d1a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
index 4a7f5fc..fd3d824 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
@@ -16,7 +16,6 @@
  */
 package org.apache.tomee.embedded.junit;
 
-import org.apache.openejb.config.sys.Openejb;
 import org.apache.openejb.testing.Application;
 import org.apache.openejb.testing.Classes;
 import org.apache.openejb.testing.ContainerProperties;
@@ -198,7 +197,6 @@ public class TomEEEmbeddedSingleRunner extends BlockJUnit4ClassRunner {
                     }
                 }
 
-                Openejb openejb = null;
                 final List<Method> annotatedMethods = finder.findAnnotatedMethods(org.apache.openejb.testing.Configuration.class);
                 if (annotatedMethods.size() > 1) {
                     throw new IllegalArgumentException("Only one @Configuration is supported: " + annotatedMethods);
@@ -244,9 +242,18 @@ public class TomEEEmbeddedSingleRunner extends BlockJUnit4ClassRunner {
                     configuration.randomHttpPort();
                 }
 
+                // at least after LifecycleTasks to inherit from potential states (system properties to get a port etc...)
+                final Configurers configurers = appClass.getAnnotation(Configurers.class);
+                if (tasks != null) {
+                    for (final Class<? extends Configurer> type : configurers.value()) {
+                        type.newInstance().configure(configuration);
+                    }
+                }
+
                 final Classes classes = appClass.getAnnotation(Classes.class);
                 String context = classes != null ? classes.context() : "";
                 context = !context.isEmpty() && context.startsWith("/") ? context.substring(1) : context;
+                // TODO: potentially respect classes() giving to deployClasspath a built Finder
 
                 final WebResource resources = appClass.getAnnotation(WebResource.class);
                 if (resources != null && resources.value().length > 1) {
@@ -382,4 +389,14 @@ public class TomEEEmbeddedSingleRunner extends BlockJUnit4ClassRunner {
     public @interface LifecycleTasks {
         Class<? extends org.apache.tomee.embedded.LifecycleTask>[] value();
     }
+
+    @Retention(RUNTIME)
+    @Target(TYPE)
+    public @interface Configurers {
+        Class<? extends Configurer>[] value();
+    }
+
+    public interface Configurer {
+        void configure(Configuration configuration);
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/f0718d1a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
index 295d7cc..94031ea 100644
--- a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
+++ b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
@@ -40,7 +40,7 @@ import static org.junit.Assert.assertTrue;
 
 // just a manual test to check it works, can't be executed with the rest of the suite,
 // we could use a different surefire execution if we want to add it to the default run
-@Ignore("can't run with by test containers")
+//@Ignore("can't run with by test containers")
 @RunWith(TomEEEmbeddedSingleRunner.class)
 public class SingleInstanceRunnerTest {
     @Application // app can have several injections/helpers
@@ -55,6 +55,7 @@ public class SingleInstanceRunnerTest {
         assertEquals("set", SystemInstance.get().getProperty("t"));
         assertEquals("p", SystemInstance.get().getProperty("prog"));
         assertEquals("128463", SystemInstance.get().getProperty("my.server.port"));
+        assertEquals("true", SystemInstance.get().getProperty("configurer"));
         assertNotEquals(8080, app.port);
         assertTrue(app.base.toExternalForm().endsWith("/app"));
         assertEquals(app.port, port);
@@ -64,6 +65,7 @@ public class SingleInstanceRunnerTest {
     @Classes(context = "app")
     @ContainerProperties(@ContainerProperties.Property(name = "t", value = "set"))
     @TomEEEmbeddedSingleRunner.LifecycleTasks(MyTask.class) // can start a ftp/sftp/elasticsearch/mongo/... server before tomee
+    @TomEEEmbeddedSingleRunner.Configurers(SetMyProperty.class)
     public static class TheApp {
         @RandomPort("http")
         private int port;
@@ -90,4 +92,11 @@ public class SingleInstanceRunnerTest {
             };
         }
     }
+
+    public static class SetMyProperty implements TomEEEmbeddedSingleRunner.Configurer {
+        @Override
+        public void configure(final Configuration configuration) {
+            configuration.property("configurer", "true");
+        }
+    }
 }