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 2014/10/08 17:47:20 UTC
svn commit: r1630151 - in
/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb:
cdi/CdiScanner.java testing/ApplicationComposers.java
Author: rmannibucau
Date: Wed Oct 8 15:47:20 2014
New Revision: 1630151
URL: http://svn.apache.org/r1630151
Log:
TOMEE-1389 better CDI integration for app composer and tets enrichment
Modified:
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
Modified: tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1630151&r1=1630150&r2=1630151&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java Wed Oct 8 15:47:20 2014
@@ -94,8 +94,7 @@ public class CdiScanner implements Scann
for (final EjbJarInfo ejbJar : appInfo.ejbJars) {
final BeansInfo beans = ejbJar.beans;
-
- if (beans == null) {
+ if (beans == null || "false".equalsIgnoreCase(ejbJar.properties.getProperty("openejb.cdi.activated"))) {
continue;
}
Modified: tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java?rev=1630151&r1=1630150&r2=1630151&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java Wed Oct 8 15:47:20 2014
@@ -45,6 +45,7 @@ import org.apache.openejb.config.sys.Ope
import org.apache.openejb.core.LocalInitialContextFactory;
import org.apache.openejb.core.Operation;
import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.core.WebContext;
import org.apache.openejb.core.ivm.naming.InitContextFactory;
import org.apache.openejb.injection.FallbackPropertyInjector;
import org.apache.openejb.jee.Application;
@@ -334,6 +335,7 @@ public final class ApplicationComposers
ejbDeployment.setDeploymentId(testClass.getName());
final EjbModule ejbModule = new EjbModule(ejbJar, openejbJar);
+ ejbModule.getProperties().setProperty("openejb.cdi.activated", "false");
final FinderFactory.OpenEJBAnnotationFinder finder = new FinderFactory.OpenEJBAnnotationFinder(new ClassesArchive(ancestors(testClass)));
ejbModule.setFinder(finder);
if (finder.findMetaAnnotatedFields(Inject.class).size()
@@ -752,22 +754,7 @@ public final class ApplicationComposers
final BeanContext context = containerSystem.getBeanContext(testClass.getName());
- final ThreadContext callContext = new ThreadContext(context, null, Operation.INJECTION);
- final ThreadContext oldContext = ThreadContext.enter(callContext);
- try {
- final InjectionProcessor processor = new InjectionProcessor(inputTestInstance, context.getInjections(), context.getJndiContext());
-
- processor.createInstance();
- try {
- OWBInjector.inject(appContext.getBeanManager(), inputTestInstance, null);
- } catch (final Throwable t) {
- // TODO handle this differently
- // this is temporary till the injector can be rewritten
- t.printStackTrace();
- }
- } finally {
- ThreadContext.exit(oldContext);
- }
+ enrich(inputTestInstance, context);
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, InitContextFactory.class.getName());
@@ -798,6 +785,39 @@ public final class ApplicationComposers
testClassFinders.put(this, testClassFinder);
}
+ private void enrich(final Object inputTestInstance, final BeanContext context) throws org.apache.openejb.OpenEJBException {
+ final ThreadContext callContext = new ThreadContext(context, null, Operation.INJECTION);
+ final ThreadContext oldContext = ThreadContext.enter(callContext);
+ try {
+ final InjectionProcessor processor = new InjectionProcessor(inputTestInstance, context.getInjections(), context.getJndiContext());
+ processor.createInstance();
+
+ Throwable error = null;
+ try {
+ OWBInjector.inject(appContext.getBeanManager(), inputTestInstance, null);
+ } catch (final Throwable t) {
+ error = t;
+ }
+ for (final WebContext web : appContext.getWebContexts()) {
+ try {
+ OWBInjector.inject(web.getWebBeansContext().getBeanManagerImpl(), inputTestInstance, null);
+ // hourra, we enriched correctly the test then cleanup error state and quit
+ error = null;
+ break;
+ } catch (final Throwable t) {
+ if (error == null) {
+ error = t;
+ } // else keep original one
+ }
+ }
+ if (error != null) {
+ error.printStackTrace();
+ }
+ } finally {
+ ThreadContext.exit(oldContext);
+ }
+ }
+
private Collection<File> findFiles(final Jars jarsAnnotation) {
if (jarsAnnotation == null) {
return null;