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/08/10 23:19:11 UTC
svn commit: r1617164 - in
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb:
cdi/CdiScanner.java config/FinderFactory.java
testing/ApplicationComposers.java
Author: rmannibucau
Date: Sun Aug 10 21:19:11 2014
New Revision: 1617164
URL: http://svn.apache.org/r1617164
Log:
fixing AppComposer - basically we need to init ourself AnnotationFinder + ensuring CDI default discovery mode doesn't break backward compatibility
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1617164&r1=1617163&r2=1617164&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java Sun Aug 10 21:19:11 2014
@@ -191,7 +191,8 @@ public class CdiScanner implements Scann
final BeanArchiveService.BeanArchiveInformation information;
if (openejb) {
final OpenEJBBeanInfoService beanInfoService = OpenEJBBeanInfoService.class.cast(beanArchiveService);
- information = beanInfoService.createBeanArchiveInformation(beans, classLoader, discoveryModes.get(key));
+ final String mode = discoveryModes.get(key);
+ information = beanInfoService.createBeanArchiveInformation(beans, classLoader, mode == null? "ALL" : mode); // this fallback is 100% for tests, TODO: get rid of it (AppComposer)
// TODO: log a warn is discoveryModes.get(key) == null
beanInfoService.getBeanArchiveInfo().put(key, information);
} else {
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1617164&r1=1617163&r2=1617164&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java Sun Aug 10 21:19:11 2014
@@ -94,6 +94,7 @@ public class FinderFactory {
}
finder.link();
} else {
+ // TODO: error. Here it means we'll not find anything
finder = new AnnotationFinder(new ClassesArchive());
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java?rev=1617164&r1=1617163&r2=1617164&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java Sun Aug 10 21:19:11 2014
@@ -34,6 +34,7 @@ import org.apache.openejb.config.Configu
import org.apache.openejb.config.ConnectorModule;
import org.apache.openejb.config.DeploymentLoader;
import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.FinderFactory;
import org.apache.openejb.config.PersistenceModule;
import org.apache.openejb.config.WebModule;
import org.apache.openejb.config.sys.JSonConfigReader;
@@ -97,6 +98,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -311,7 +313,9 @@ public final class ApplicationComposers
final EjbDeployment ejbDeployment = openejbJar.addEjbDeployment(testBean);
ejbDeployment.setDeploymentId(testClass.getName());
- appModule.getEjbModules().add(new EjbModule(ejbJar, openejbJar));
+ final EjbModule ejbModule = new EjbModule(ejbJar, openejbJar);
+ ejbModule.setFinder(new FinderFactory.OpenEJBAnnotationFinder(new ClassesArchive(testClass)));
+ appModule.getEjbModules().add(ejbModule);
}
// For the moment we just take the first @Configuration method
@@ -631,11 +635,18 @@ public final class ApplicationComposers
appModule = newModule;
}
- // copy ejb into beans if cdi is activated
+ // copy ejb into beans if cdi is activated and init finder
for (final EjbModule ejb : appModule.getEjbModules()) {
+ final Collection<Class<?>> finderClasses = new HashSet<>();
+
+ final EnterpriseBean[] enterpriseBeans = ejb.getEjbJar().getEnterpriseBeans();
+ for (final EnterpriseBean bean : enterpriseBeans) {
+ finderClasses.add(loader.loadClass(bean.getEjbClass()));
+ }
+
final Beans beans = ejb.getBeans();
if (beans != null && ejb.getEjbJar() != null) {
- for (final EnterpriseBean bean : ejb.getEjbJar().getEnterpriseBeans()) {
+ for (final EnterpriseBean bean : enterpriseBeans) {
boolean found = false;
for (final List<String> mc : beans.getManagedClasses().values()) {
if (mc.contains(bean.getEjbClass())) {
@@ -648,7 +659,15 @@ public final class ApplicationComposers
beans.addManagedClass(bean.getEjbClass());
}
}
+
+ for (final List<String> managedClasses : beans.getManagedClasses().values()) {
+ for (final String name : managedClasses) {
+ finderClasses.add(loader.loadClass(name));
+ }
+ }
}
+
+ ejb.setFinder(new FinderFactory.OpenEJBAnnotationFinder(new ClassesArchive(finderClasses.toArray(new Class<?>[finderClasses.size()]))));
}
if (webModulesNb > 0 && SystemInstance.get().getComponent(WebAppBuilder.class) == null) {