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 2012/11/29 16:57:35 UTC
svn commit: r1415222 - in
/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb:
assembler/classic/ cdi/ config/
Author: rmannibucau
Date: Thu Nov 29 15:57:33 2012
New Revision: 1415222
URL: http://svn.apache.org/viewvc?rev=1415222&view=rev
Log:
TOMEE-615 better support of alternative + specialization in webapp for ear
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/StartupObject.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java?rev=1415222&r1=1415221&r2=1415222&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java Thu Nov 29 15:57:33 2012
@@ -38,4 +38,5 @@ public class BeansInfo extends InfoObjec
public final List<String> duplicatedDecorators = new ArrayList<String>();
public final List<String> duplicatedAlternativeClasses = new ArrayList<String>();
public final List<String> duplicatedAlternativeStereotypes = new ArrayList<String>();
+ public boolean webapp = false;
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1415222&r1=1415221&r2=1415222&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java Thu Nov 29 15:57:33 2012
@@ -74,7 +74,7 @@ public class CdiScanner implements Scann
comparator = new DefaultClassLoaderComparator(classLoader);
}
- WebBeansContext webBeansContext = startupObject.getAppContext().getWebBeansContext();
+ final WebBeansContext webBeansContext = startupObject.getWebBeansContext();
final AlternativesManager alternativesManager = webBeansContext.getAlternativesManager();
final DecoratorsManager decoratorsManager = webBeansContext.getDecoratorsManager();
final InterceptorsManager interceptorsManager = webBeansContext.getInterceptorsManager();
@@ -124,7 +124,7 @@ public class CdiScanner implements Scann
} /* else { don't do it, check is done when we know the beans.xml path --> org.apache.openejb.config.DeploymentLoader.addBeansXmls
throw new WebBeansConfigurationException("Interceptor class : " + clazz.getName() + " is already defined");
}*/
- } else {
+ } else if (beans.webapp && startupObject.isFromWebApp()) {
throw new WebBeansConfigurationException("Could not load interceptor class: " + className);
}
}
@@ -137,7 +137,7 @@ public class CdiScanner implements Scann
decoratorsManager.addNewDecorator(clazz);
classes.add(clazz);
} // same than interceptors regarding throw new WebBeansConfigurationException("Decorator class : " + clazz.getName() + " is already defined");
- } else {
+ } else if (beans.webapp && startupObject.isFromWebApp()) {
throw new WebBeansConfigurationException("Could not load decorator class: " + className);
}
}
@@ -148,7 +148,7 @@ public class CdiScanner implements Scann
if (clazz != null) {
alternativesManager.addStereoTypeAlternative(clazz, null, null);
classes.add(clazz);
- } else {
+ } else if (beans.webapp && startupObject.isFromWebApp()) {
throw new WebBeansConfigurationException("Could not load alternativeStereotype class: " + className);
}
}
@@ -158,7 +158,7 @@ public class CdiScanner implements Scann
if (clazz != null) {
alternativesManager.addClazzAlternative(clazz, null, null);
classes.add(clazz);
- } else {
+ } else if (beans.webapp && startupObject.isFromWebApp()) {
throw new WebBeansConfigurationException("Could not load alternative class: " + className);
}
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/StartupObject.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/StartupObject.java?rev=1415222&r1=1415221&r2=1415222&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/StartupObject.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/StartupObject.java Thu Nov 29 15:57:33 2012
@@ -66,10 +66,21 @@ public class StartupObject {
return webContext;
}
+ public WebBeansContext getWebBeansContext() {
+ if (isFromWebApp()) {
+ return webContext.getWebbeansContext();
+ }
+ return appContext.getWebBeansContext();
+ }
+
public ClassLoader getClassLoader() {
- if (webContext != null) {
+ if (isFromWebApp()) {
return webContext.getClassLoader();
}
return appContext.getClassLoader();
}
+
+ public boolean isFromWebApp() {
+ return webContext != null;
+ }
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java?rev=1415222&r1=1415221&r2=1415222&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java Thu Nov 29 15:57:33 2012
@@ -372,6 +372,12 @@ public class WebappBeanManager extends B
@Override
public Set<Bean<?>> getComponents() {
+ if (deploymentBeans.isEmpty()) {
+ // probably not yet merged (afterStart())
+ // so reuse parent beans
+ // this can happen for validations
+ return super.getBeans();
+ }
return deploymentBeans;
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1415222&r1=1415221&r2=1415222&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Thu Nov 29 15:57:33 2012
@@ -95,6 +95,8 @@ import static org.apache.openejb.util.UR
public class DeploymentLoader implements DeploymentFilterable {
public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP_CONFIG, "org.apache.openejb.util.resources");
public static final String OPENEJB_ALTDD_PREFIX = "openejb.altdd.prefix";
+ public static final String OPENEJB_ORIGIN_WEBAPP = "openejb.webapp.origin";
+
private static final String ddDir = "META-INF/";
private boolean scanManagedBeans = true;
private static final Collection<String> KNOWN_DESCRIPTORS = Arrays.asList("app-ctx.xml", "module.properties", "application.properties", "web.xml", "ejb-jar.xml", "openejb-jar.xml", "env-entries.properties", "beans.xml", "ra.xml", "application.xml", "application-client.xml", "persistence-fragment.xml", "persistence.xml", "validation.xml", NewLoaderLogic.EXCLUSION_FILE);
@@ -668,6 +670,7 @@ public class DeploymentLoader implements
// than an ear file, so the ear-style code we were previously
// using doesn't exactly work anymore.
final EjbModule webEjbModule = new EjbModule(webModule.getClassLoader(), webModule.getModuleId(), webModule.getJarLocation(), null, null);
+ webEjbModule.getProperties().put(OPENEJB_ORIGIN_WEBAPP, "true");
webEjbModule.getAltDDs().putAll(webModule.getAltDDs());
appModule.getEjbModules().add(webEjbModule);
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java?rev=1415222&r1=1415221&r2=1415222&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java Thu Nov 29 15:57:33 2012
@@ -206,6 +206,7 @@ public class EjbJarInfoBuilder {
if (jar.getBeans() != null) {
ejbJar.beans = new BeansInfo();
+ ejbJar.beans.webapp = Boolean.TRUE.toString().equals(jar.getProperties().getProperty(DeploymentLoader.OPENEJB_ORIGIN_WEBAPP, Boolean.FALSE.toString()));
ejbJar.beans.interceptors.addAll(jar.getBeans().getInterceptors());
ejbJar.beans.decorators.addAll(jar.getBeans().getDecorators());