From 85edfdadf2833387db37aa220697b66d289e9d1e Mon Sep 17 00:00:00 2001 From: Stephane Lacoin aka nxmatic Date: Mon, 22 Sep 2014 11:27:02 +0200 Subject: [PATCH] runtime handler patch --- .../org/nuxeo/runtime/test/NXRuntimeTestCase.java | 2 +- .../nuxeo/runtime/test/runner/RuntimeFeature.java | 36 ++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/nuxeo-runtime-test/src/main/java/org/nuxeo/runtime/test/NXRuntimeTestCase.java b/nuxeo-runtime-test/src/main/java/org/nuxeo/runtime/test/NXRuntimeTestCase.java index c3c2f8b..01622c2 100644 --- a/nuxeo-runtime-test/src/main/java/org/nuxeo/runtime/test/NXRuntimeTestCase.java +++ b/nuxeo-runtime-test/src/main/java/org/nuxeo/runtime/test/NXRuntimeTestCase.java @@ -270,7 +270,7 @@ public class NXRuntimeTestCase implements RuntimeHarness { } - protected OSGiRuntimeService handleNewRuntime(OSGiRuntimeService runtime) { + protected OSGiRuntimeService handleNewRuntime(OSGiRuntimeService runtime) throws Exception { return runtime; } diff --git a/nuxeo-runtime-test/src/main/java/org/nuxeo/runtime/test/runner/RuntimeFeature.java b/nuxeo-runtime-test/src/main/java/org/nuxeo/runtime/test/runner/RuntimeFeature.java index 0f4a793..932f035 100644 --- a/nuxeo-runtime-test/src/main/java/org/nuxeo/runtime/test/runner/RuntimeFeature.java +++ b/nuxeo-runtime-test/src/main/java/org/nuxeo/runtime/test/runner/RuntimeFeature.java @@ -19,6 +19,10 @@ package org.nuxeo.runtime.test.runner; import java.io.IOException; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; import java.lang.reflect.Field; import java.net.URL; import java.util.Collection; @@ -36,6 +40,7 @@ import org.apache.commons.logging.LogFactory; import org.nuxeo.common.utils.URLStreamHandlerFactoryInstaller; import org.nuxeo.runtime.api.DataSourceHelper; import org.nuxeo.runtime.api.Framework; +import org.nuxeo.runtime.osgi.OSGiRuntimeService; import org.nuxeo.runtime.test.NXRuntimeTestCase; import org.osgi.framework.Bundle; @@ -49,6 +54,25 @@ import com.google.inject.Binder; */ public class RuntimeFeature extends SimpleFeature { + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.TYPE) + public @interface Config { + Class handler() default NoopRuntimeHandler.class; + } + + public interface RuntimeHandler { + OSGiRuntimeService newRuntime(OSGiRuntimeService runtime); + } + + public static class NoopRuntimeHandler implements RuntimeHandler { + + @Override + public OSGiRuntimeService newRuntime(OSGiRuntimeService runtime) { + return runtime; + } + + } + private static final Log log = LogFactory.getLog(RuntimeFeature.class); protected RuntimeHarness harness; @@ -202,8 +226,16 @@ public class RuntimeFeature extends SimpleFeature { } @Override - public void initialize(FeaturesRunner runner) throws Exception { - harness = new NXRuntimeTestCase(runner.getTargetTestClass()); + public void initialize(final FeaturesRunner runner) throws Exception { + harness = new NXRuntimeTestCase(runner.getTargetTestClass()) { + @Override + protected OSGiRuntimeService handleNewRuntime( + OSGiRuntimeService runtime) throws Exception { + final Class handler = runner.getConfig(Config.class).handler(); + return handler.newInstance().newRuntime( + runtime); + } + }; scanDeployments(runner); } -- 2.0.1