Repository: deltaspike Updated Branches: refs/heads/master 0b93d70ec -> 3c16c913e
DELTASPIKE-602 forward manual request-handling to myfaces-test Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/3c16c913 Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/3c16c913 Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/3c16c913 Branch: refs/heads/master Commit: 3c16c913e62709c730b2f893f5fed79e42cce60a Parents: 0b93d70 Author: gpetracek <[email protected]> Authored: Wed May 21 15:17:04 2014 +0200 Committer: gpetracek <[email protected]> Committed: Wed May 21 15:17:04 2014 +0200 ---------------------------------------------------------------------- .../testcontrol/api/junit/CdiTestRunner.java | 128 +++++++++++++------ deltaspike/modules/test-control/impl/pom.xml | 2 +- .../impl/jsf/MockedJsf2TestContainer.java | 22 ++++ .../impl/jsf/MockedJsfTestContainerAdapter.java | 22 ++++ .../impl/jsf/MyFacesContainerAdapter.java | 22 ++++ .../MyFacesContainerPerTestMethodAdapter.java | 23 ++++ .../impl/request/ContextControlDecorator.java | 89 +++++++++++++ .../request/ManuallyHandledRequestEvent.java | 39 ++++++ .../impl/src/main/resources/META-INF/beans.xml | 5 + 9 files changed, 310 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3c16c913/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java index 195045b..1c0a427 100644 --- a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java +++ b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java @@ -80,6 +80,8 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner USE_TEST_CLASS_AS_CDI_BEAN = Boolean.parseBoolean(useTestClassAsCdiBeanValue); } + private static ThreadLocal<Boolean> automaticScopeHandlingActive = new ThreadLocal<Boolean>(); + private List<TestStatementDecoratorFactory> statementDecoratorFactories; private ContainerAwareTestContext testContext; @@ -478,8 +480,9 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner if (this.externalContainers == null) { - this.externalContainers = ServiceUtils.loadServiceImplementations(ExternalContainer.class); - Collections.sort(this.externalContainers, new Comparator<ExternalContainer>() + List<ExternalContainer> configuredExternalContainers = + ServiceUtils.loadServiceImplementations(ExternalContainer.class); + Collections.sort(configuredExternalContainers, new Comparator<ExternalContainer>() { @Override public int compare(ExternalContainer ec1, ExternalContainer ec2) @@ -488,6 +491,24 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner } }); + this.externalContainers = new ArrayList<ExternalContainer>(configuredExternalContainers.size()); + + ExternalContainer externalContainerBean; + for (ExternalContainer externalContainer : configuredExternalContainers) + { + //needed to use cdi-observers in the container optionally + externalContainerBean = BeanProvider.getContextualReference(externalContainer.getClass(), true); + + if (externalContainerBean != null) + { + this.externalContainers.add(externalContainerBean); + } + else + { + this.externalContainers.add(externalContainer); + } + } + for (ExternalContainer externalContainer : this.externalContainers) { try @@ -577,46 +598,56 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner private void startScopes(CdiContainer container, Class<? extends Annotation>... restrictedScopes) { - ContextControl contextControl = container.getContextControl(); + try + { + automaticScopeHandlingActive.set(Boolean.TRUE); - List<Class<? extends Annotation>> scopeClasses = new ArrayList<Class<? extends Annotation>>(); + ContextControl contextControl = container.getContextControl(); - Collections.addAll(scopeClasses, this.testControl.startScopes()); + List<Class<? extends Annotation>> scopeClasses = new ArrayList<Class<? extends Annotation>>(); - if (this.testControl.startScopes().length == 0) - { - addScopesForDefaultBehavior(scopeClasses); - } + Collections.addAll(scopeClasses, this.testControl.startScopes()); - for (Class<? extends Annotation> scopeAnnotation : scopeClasses) - { - if (this.parent != null && this.parent.isScopeStarted(scopeAnnotation)) + if (this.testControl.startScopes().length == 0) { - continue; + addScopesForDefaultBehavior(scopeClasses); } - if (isRestrictedScope(scopeAnnotation, restrictedScopes)) + for (Class<? extends Annotation> scopeAnnotation : scopeClasses) { - continue; - } + if (this.parent != null && this.parent.isScopeStarted(scopeAnnotation)) + { + continue; + } - try - { - //force a clean context - TODO discuss onScopeStopped call - contextControl.stopContext(scopeAnnotation); + if (isRestrictedScope(scopeAnnotation, restrictedScopes)) + { + continue; + } - contextControl.startContext(scopeAnnotation); - this.startedScopes.add(scopeAnnotation); + try + { + //force a clean context - TODO discuss onScopeStopped call + contextControl.stopContext(scopeAnnotation); - onScopeStarted(scopeAnnotation); - } - catch (RuntimeException e) - { - Logger logger = Logger.getLogger(CdiTestRunner.class.getName()); - logger.setLevel(Level.SEVERE); - logger.log(Level.SEVERE, "failed to start scope @" + scopeAnnotation.getName(), e); + contextControl.startContext(scopeAnnotation); + this.startedScopes.add(scopeAnnotation); + + onScopeStarted(scopeAnnotation); + } + catch (RuntimeException e) + { + Logger logger = Logger.getLogger(CdiTestRunner.class.getName()); + logger.setLevel(Level.SEVERE); + logger.log(Level.SEVERE, "failed to start scope @" + scopeAnnotation.getName(), e); + } } } + finally + { + automaticScopeHandlingActive.remove(); + automaticScopeHandlingActive.set(null); + } } private void addScopesForDefaultBehavior(List<Class<? extends Annotation>> scopeClasses) @@ -657,22 +688,32 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner private void stopStartedScopes(CdiContainer container) { - while (!this.startedScopes.empty()) + try { - Class<? extends Annotation> scopeAnnotation = this.startedScopes.pop(); - //TODO check if context was started by parent - try - { - container.getContextControl().stopContext(scopeAnnotation); - onScopeStopped(scopeAnnotation); - } - catch (RuntimeException e) + automaticScopeHandlingActive.set(Boolean.TRUE); + + while (!this.startedScopes.empty()) { - Logger logger = Logger.getLogger(CdiTestRunner.class.getName()); - logger.setLevel(Level.SEVERE); - logger.log(Level.SEVERE, "failed to stop scope @" + scopeAnnotation.getName(), e); + Class<? extends Annotation> scopeAnnotation = this.startedScopes.pop(); + //TODO check if context was started by parent + try + { + container.getContextControl().stopContext(scopeAnnotation); + onScopeStopped(scopeAnnotation); + } + catch (RuntimeException e) + { + Logger logger = Logger.getLogger(CdiTestRunner.class.getName()); + logger.setLevel(Level.SEVERE); + logger.log(Level.SEVERE, "failed to stop scope @" + scopeAnnotation.getName(), e); + } } } + finally + { + automaticScopeHandlingActive.remove(); + automaticScopeHandlingActive.set(null); + } } private void onScopeStarted(Class<? extends Annotation> scopeClass) @@ -733,4 +774,9 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner } } } + + public static Boolean isAutomaticScopeHandlingActive() + { + return automaticScopeHandlingActive.get(); + } } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3c16c913/deltaspike/modules/test-control/impl/pom.xml ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/impl/pom.xml b/deltaspike/modules/test-control/impl/pom.xml index dd3ab58..aa569ac 100644 --- a/deltaspike/modules/test-control/impl/pom.xml +++ b/deltaspike/modules/test-control/impl/pom.xml @@ -51,7 +51,7 @@ <dependency> <groupId>org.apache.deltaspike.cdictrl</groupId> <artifactId>deltaspike-cdictrl-api</artifactId> - <scope>test</scope> + <scope>provided</scope> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3c16c913/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsf2TestContainer.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsf2TestContainer.java b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsf2TestContainer.java index ef2d142..ab38bb7 100644 --- a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsf2TestContainer.java +++ b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsf2TestContainer.java @@ -19,6 +19,7 @@ package org.apache.deltaspike.testcontrol.impl.jsf; import org.apache.deltaspike.core.api.config.ConfigResolver; +import org.apache.deltaspike.testcontrol.impl.request.ManuallyHandledRequestEvent; import org.apache.deltaspike.testcontrol.spi.ExternalContainer; import org.apache.myfaces.test.mock.MockApplicationFactory; import org.apache.myfaces.test.mock.MockExceptionHandlerFactory; @@ -37,8 +38,11 @@ import org.apache.myfaces.test.mock.lifecycle.MockLifecycleFactory; import org.apache.myfaces.test.mock.visit.MockVisitContextFactory; import javax.el.ExpressionFactory; +import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.RequestScoped; import javax.enterprise.context.SessionScoped; +import javax.enterprise.event.Observes; +import javax.enterprise.event.Reception; import javax.faces.FactoryFinder; import javax.faces.application.Application; import javax.faces.application.ApplicationFactory; @@ -57,6 +61,7 @@ import java.util.Locale; import java.util.Map; //known restriction: faces-config.xml files are ignored +@ApplicationScoped public class MockedJsf2TestContainer implements ExternalContainer { protected MockServletConfig servletConfig; @@ -285,4 +290,21 @@ public class MockedJsf2TestContainer implements ExternalContainer { return LifecycleFactory.DEFAULT_LIFECYCLE; } + + public void onManuallyHandledRequest( + @Observes(notifyObserver = Reception.IF_EXISTS) ManuallyHandledRequestEvent manuallyHandledRequestEvent) + { + switch (manuallyHandledRequestEvent.getManualAction()) + { + case STARTED: + startScope(RequestScoped.class); + break; + case STOPPED: + stopScope(RequestScoped.class); + break; + default: + throw new IllegalArgumentException("unsupported action: " + + manuallyHandledRequestEvent.getManualAction().name()); + } + } } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3c16c913/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsfTestContainerAdapter.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsfTestContainerAdapter.java b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsfTestContainerAdapter.java index a1e7f20..b68634a 100644 --- a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsfTestContainerAdapter.java +++ b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MockedJsfTestContainerAdapter.java @@ -18,17 +18,22 @@ */ package org.apache.deltaspike.testcontrol.impl.jsf; +import org.apache.deltaspike.testcontrol.impl.request.ManuallyHandledRequestEvent; import org.apache.deltaspike.testcontrol.spi.ExternalContainer; import org.apache.myfaces.test.mock.MockedJsfTestContainer; +import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.RequestScoped; import javax.enterprise.context.SessionScoped; +import javax.enterprise.event.Observes; +import javax.enterprise.event.Reception; import java.lang.annotation.Annotation; /** * Optional adapter for MockedJsfTestContainer * Requires MyFaces-Test v1.0.6 or higher */ +@ApplicationScoped public class MockedJsfTestContainerAdapter implements ExternalContainer { private final MockedJsfTestContainer mockedMyFacesTestContainer = new MockedJsfTestContainer(); @@ -74,4 +79,21 @@ public class MockedJsfTestContainerAdapter implements ExternalContainer { return 1000; //default in ds } + + public void onManuallyHandledRequest( + @Observes(notifyObserver = Reception.IF_EXISTS) ManuallyHandledRequestEvent manuallyHandledRequestEvent) + { + switch (manuallyHandledRequestEvent.getManualAction()) + { + case STARTED: + startScope(RequestScoped.class); + break; + case STOPPED: + stopScope(RequestScoped.class); + break; + default: + throw new IllegalArgumentException("unsupported action: " + + manuallyHandledRequestEvent.getManualAction().name()); + } + } } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3c16c913/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerAdapter.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerAdapter.java b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerAdapter.java index d89ce83..f8dc224 100644 --- a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerAdapter.java +++ b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerAdapter.java @@ -20,6 +20,7 @@ package org.apache.deltaspike.testcontrol.impl.jsf; import org.apache.deltaspike.core.api.config.ConfigResolver; import org.apache.deltaspike.core.util.metadata.AnnotationInstanceProvider; +import org.apache.deltaspike.testcontrol.impl.request.ManuallyHandledRequestEvent; import org.apache.deltaspike.testcontrol.spi.ExternalContainer; import org.apache.deltaspike.testcontrol.spi.TestAware; import org.apache.myfaces.mc.test.core.annotation.TestConfig; @@ -27,7 +28,10 @@ import org.apache.myfaces.mc.test.core.runner.MyFacesContainer; import org.junit.runners.model.TestClass; import javax.el.ExpressionFactory; +import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.RequestScoped; +import javax.enterprise.event.Observes; +import javax.enterprise.event.Reception; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.HashMap; @@ -37,6 +41,7 @@ import java.util.Map; * Optional adapter for MyFacesContainer * Requires MyFaces-Core 2.2.x, MyFaces-Test v1.0.6 or higher as well as org.apache.myfaces.core:myfaces-impl-test */ +@ApplicationScoped public class MyFacesContainerAdapter implements TestAware, ExternalContainer { private static final TestConfig DEFAULT_TEST_CONFIG_LITERAL = AnnotationInstanceProvider.of(TestConfig.class); @@ -159,4 +164,21 @@ public class MyFacesContainerAdapter implements TestAware, ExternalContainer { //not needed } + + public void onManuallyHandledRequest( + @Observes(notifyObserver = Reception.IF_EXISTS) ManuallyHandledRequestEvent manuallyHandledRequestEvent) + { + switch (manuallyHandledRequestEvent.getManualAction()) + { + case STARTED: + startScope(RequestScoped.class); + break; + case STOPPED: + stopScope(RequestScoped.class); + break; + default: + throw new IllegalArgumentException("unsupported action: " + + manuallyHandledRequestEvent.getManualAction().name()); + } + } } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3c16c913/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerPerTestMethodAdapter.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerPerTestMethodAdapter.java b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerPerTestMethodAdapter.java index 139bfee..07fe368 100644 --- a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerPerTestMethodAdapter.java +++ b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/jsf/MyFacesContainerPerTestMethodAdapter.java @@ -18,9 +18,14 @@ */ package org.apache.deltaspike.testcontrol.impl.jsf; +import org.apache.deltaspike.testcontrol.impl.request.ManuallyHandledRequestEvent; import org.apache.deltaspike.testcontrol.spi.ExternalContainer; import org.apache.deltaspike.testcontrol.spi.TestAware; +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.context.RequestScoped; +import javax.enterprise.event.Observes; +import javax.enterprise.event.Reception; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -28,6 +33,7 @@ import java.lang.reflect.Method; * Optional adapter for MyFacesContainer which gets started and stopped for every test-method * Requires MyFaces-Core 2.2.x, MyFaces-Test v1.0.6 or higher as well as org.apache.myfaces.core:myfaces-impl-test */ +@ApplicationScoped public class MyFacesContainerPerTestMethodAdapter implements TestAware, ExternalContainer { private static ThreadLocal<MyFacesContainerAdapter> myFacesContainerAdapterThreadLocal = @@ -81,4 +87,21 @@ public class MyFacesContainerPerTestMethodAdapter implements TestAware, External myFacesContainerAdapterThreadLocal.get().shutdown(); } } + + public void onManuallyHandledRequest( + @Observes(notifyObserver = Reception.IF_EXISTS) ManuallyHandledRequestEvent manuallyHandledRequestEvent) + { + switch (manuallyHandledRequestEvent.getManualAction()) + { + case STARTED: + startScope(RequestScoped.class); + break; + case STOPPED: + stopScope(RequestScoped.class); + break; + default: + throw new IllegalArgumentException("unsupported action: " + + manuallyHandledRequestEvent.getManualAction().name()); + } + } } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3c16c913/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/request/ContextControlDecorator.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/request/ContextControlDecorator.java b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/request/ContextControlDecorator.java new file mode 100644 index 0000000..21534f2 --- /dev/null +++ b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/request/ContextControlDecorator.java @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.deltaspike.testcontrol.impl.request; + +import org.apache.deltaspike.cdise.api.ContextControl; +import org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner; + +import javax.decorator.Decorator; +import javax.decorator.Delegate; +import javax.enterprise.context.RequestScoped; +import javax.enterprise.event.Event; +import javax.inject.Inject; +import java.lang.annotation.Annotation; + +/** + * Needed to allow the manual usage of + * ContextControl#stopContext(RequestScoped.class) + * and + * ContextControl#startContext(RequestScoped.class) + * within a test-method. + * That can be useful in combination with the integration of myfaces-test for page-bean tests. + */ +@Decorator +//don't use an abstract decorator to keep the compatibility with old version of owb/weld +public class ContextControlDecorator implements ContextControl +{ + @Inject + @Delegate + private ContextControl wrapped; + + @Inject + private Event<ManuallyHandledRequestEvent> manualRequestEvent; + + @Override + public void startContexts() + { + wrapped.startContexts(); + } + + @Override + public void stopContexts() + { + wrapped.stopContexts(); + } + + @Override + public void startContext(Class<? extends Annotation> scopeClass) + { + wrapped.startContext(scopeClass); + + if (isManuallyHandledRequest(scopeClass)) + { + manualRequestEvent.fire(new ManuallyHandledRequestEvent(ManuallyHandledRequestEvent.ManualAction.STARTED)); + } + } + + @Override + public void stopContext(Class<? extends Annotation> scopeClass) + { + wrapped.stopContext(scopeClass); + + if (isManuallyHandledRequest(scopeClass)) + { + manualRequestEvent.fire(new ManuallyHandledRequestEvent(ManuallyHandledRequestEvent.ManualAction.STOPPED)); + } + } + + private boolean isManuallyHandledRequest(Class<? extends Annotation> scopeClass) + { + return RequestScoped.class.equals(scopeClass) && + !Boolean.TRUE.equals(CdiTestRunner.isAutomaticScopeHandlingActive()); + } +} http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3c16c913/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/request/ManuallyHandledRequestEvent.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/request/ManuallyHandledRequestEvent.java b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/request/ManuallyHandledRequestEvent.java new file mode 100644 index 0000000..c0700b1 --- /dev/null +++ b/deltaspike/modules/test-control/impl/src/main/java/org/apache/deltaspike/testcontrol/impl/request/ManuallyHandledRequestEvent.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.deltaspike.testcontrol.impl.request; + +public class ManuallyHandledRequestEvent +{ + private final ManualAction manualAction; + + public ManuallyHandledRequestEvent(ManualAction manualAction) + { + this.manualAction = manualAction; + } + + public ManualAction getManualAction() + { + return manualAction; + } + + public static enum ManualAction + { + STARTED, STOPPED + } +} http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3c16c913/deltaspike/modules/test-control/impl/src/main/resources/META-INF/beans.xml ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/impl/src/main/resources/META-INF/beans.xml b/deltaspike/modules/test-control/impl/src/main/resources/META-INF/beans.xml index 4070730..0fd5332 100644 --- a/deltaspike/modules/test-control/impl/src/main/resources/META-INF/beans.xml +++ b/deltaspike/modules/test-control/impl/src/main/resources/META-INF/beans.xml @@ -20,4 +20,9 @@ <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> + + <decorators> + <class>org.apache.deltaspike.testcontrol.impl.request.ContextControlDecorator</class> + </decorators> + </beans>
