Author: rmannibucau
Date: Sat Apr 27 18:28:41 2013
New Revision: 1476654

URL: http://svn.apache.org/r1476654
Log:
TOMEE-915 TOMEE-916 rework bean manager for webapps in ear + fixing ear lib 
finder creation

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java?rev=1476654&r1=1476653&r2=1476654&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
 Sat Apr 27 18:28:41 2013
@@ -53,6 +53,7 @@ public class AppInfo extends InfoObject 
     public final Properties jmx = new Properties();
     public final Set<String> mbeans = new TreeSet<String>();
     public final Set<String> jaxRsProviders = new TreeSet<String>();
+    public final Set<String> jsfClasses = new TreeSet<String>();
     public final Set<String> eventClassesNeedingAppClassloader = new 
TreeSet<String>();
     public boolean webAppAlone;
 }

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java?rev=1476654&r1=1476653&r2=1476654&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
 Sat Apr 27 18:28:41 2013
@@ -17,47 +17,26 @@
 package org.apache.openejb.cdi;
 
 import org.apache.openejb.util.reflection.Reflections;
-import org.apache.webbeans.component.BeanManagerBean;
 import org.apache.webbeans.component.BuildInOwbBean;
-import org.apache.webbeans.component.ConversationBean;
-import org.apache.webbeans.component.InjectionPointBean;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.context.creational.CreationalContextImpl;
-import org.apache.webbeans.portable.events.generics.GenericBeanEvent;
-import org.apache.webbeans.util.WebBeansUtil;
 
 import javax.el.ELResolver;
 import javax.el.ExpressionFactory;
 import javax.enterprise.context.spi.Context;
 import javax.enterprise.context.spi.Contextual;
 import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.UnsatisfiedResolutionException;
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.Decorator;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.InjectionTarget;
-import javax.enterprise.inject.spi.InterceptionType;
-import javax.enterprise.inject.spi.Interceptor;
-import javax.enterprise.inject.spi.ObserverMethod;
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 
 public class WebappBeanManager extends BeanManagerImpl {
     private final WebappWebBeansContext webappCtx;
-    private final ThreadLocal<Boolean> internalUse = new 
ThreadLocal<Boolean>() {
-        @Override
-        public Boolean initialValue() {
-            return false;
-        }
-    };
     private Set<Bean<?>> deploymentBeans;
-    private boolean started = false; // just to send events faster
 
     public WebappBeanManager(WebappWebBeansContext ctx) {
         super(ctx);
@@ -67,20 +46,6 @@ public class WebappBeanManager extends B
     }
 
     @Override
-    public Object getReference(Bean<?> bean, Type beanType, 
CreationalContext<?> ctx) {
-        Object ref;
-        try {
-            ref = getParentBm().getReference(bean, beanType, ctx);
-            if (ref == null) {
-                ref = super.getReference(bean, beanType, ctx);
-            }
-        } catch (RuntimeException e) {
-            ref = super.getReference(bean, beanType, ctx);
-        }
-        return ref;
-    }
-
-    @Override
     public Object getInjectableReference(InjectionPoint injectionPoint, 
CreationalContext<?> ctx) {
         try {
             return super.getInjectableReference(injectionPoint, ctx);
@@ -103,173 +68,6 @@ public class WebappBeanManager extends B
     }
 
     @Override
-    public Set<Bean<?>> getBeans(Type beanType, Annotation... qualifiers) {
-        final Set<Bean<?>> beans = new HashSet<Bean<?>>();
-        internalUse.set(true);
-        try {
-            beans.addAll(super.getBeans(beanType, qualifiers));
-        } finally {
-            internalUse.set(false);
-        }
-        if (!internalUse.get()) {
-            beans.addAll(getParentBm().getBeans(beanType, qualifiers));
-        }
-        internalUse.remove();
-        return beans;
-    }
-
-    @Override
-    public Set<Bean<?>> getBeans(String name) {
-        final Set<Bean<?>> beans = new HashSet<Bean<?>>();
-        internalUse.set(true);
-        try {
-            beans.addAll(super.getBeans(name));
-        } finally {
-            internalUse.set(false);
-        }
-        if (!internalUse.get()) {
-            beans.addAll(getParentBm().getBeans(name));
-        }
-        internalUse.remove();
-        return beans;
-    }
-
-    @Override
-    public Bean<?> getPassivationCapableBean(String id) {
-        try {
-            return getParentBm().getPassivationCapableBean(id);
-        } catch (RuntimeException e) {
-            return super.getPassivationCapableBean(id);
-        }
-    }
-
-    @Override
-    public <X> Bean<? extends X> resolve(Set<Bean<? extends X>> beans) {
-        try {
-            return super.resolve(beans);
-        } catch (RuntimeException e) {
-            try {
-                return getParentBm().resolve(beans);
-            } catch (RuntimeException ignored) {
-                throw e;
-            }
-        }
-    }
-
-    @Override
-    public void fireEvent(Object event, Annotation... qualifiers) {
-        super.fireEvent(event, qualifiers);
-
-        // don't propagate to parent extension events since extensions are 
already here (loaded from spi)
-        if (started || !isExtensionEvent(event.getClass())) {
-            getParentBm().fireEvent(event, qualifiers);
-        }
-    }
-
-    private static boolean isExtensionEvent(final Type type) {
-        if (!(type instanceof Class<?>)) {
-            return false;
-        }
-
-        final Class<?> aClass = (Class<?>) type;
-        if (WebBeansUtil.isExtensionEventType(aClass)
-                || 
WebBeansUtil.isExtensionProducerOrObserverEventType(aClass)) {
-            return true;
-        }
-
-        final Class<?>[] itfs = aClass.getInterfaces();
-        if (itfs != null) {
-            for (Class<?> i : itfs) {
-                if (GenericBeanEvent.class.equals(i)
-                        || WebBeansUtil.isExtensionEventType(i)
-                        || WebBeansUtil.isDefaultExtensionBeanEventType(i)
-                        || 
WebBeansUtil.isDefaultExtensionProducerOrObserverEventType(i)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public <T> Set<ObserverMethod<? super T>> resolveObserverMethods(T event, 
Annotation... qualifiers) {
-        final Set<ObserverMethod<? super T>> mtds = new 
HashSet<ObserverMethod<? super T>>();
-        internalUse.set(true);
-        try {
-            mtds.addAll(super.resolveObserverMethods(event, qualifiers));
-        } finally {
-            internalUse.set(false);
-        }
-        if (!internalUse.get()) {
-            Set<ObserverMethod<? super T>> c = 
getParentBm().resolveObserverMethods(event, qualifiers);
-            for (ObserverMethod<? super T> o : c) {
-                if (!isExtensionEvent(o.getObservedType())) {
-                    mtds.add(o);
-                }
-            }
-        }
-        internalUse.remove();
-        return mtds;
-    }
-
-    @Override
-    public List<Decorator<?>> resolveDecorators(Set<Type> types, Annotation... 
qualifiers) {
-        final List<Decorator<?>> decorators = new ArrayList<Decorator<?>>();
-        internalUse.set(true);
-        try {
-            decorators.addAll(super.resolveDecorators(types, qualifiers));
-        } finally {
-            internalUse.set(false);
-        }
-        if (!internalUse.get()) {
-            decorators.addAll(getParentBm().resolveDecorators(types, 
qualifiers));
-        }
-        return decorators;
-    }
-
-    @Override
-    public List<Interceptor<?>> resolveInterceptors(InterceptionType type, 
Annotation... qualifiers) {
-        final List<Interceptor<?>> interceptors = new 
ArrayList<Interceptor<?>>();
-        internalUse.set(true);
-        try {
-            interceptors.addAll(super.resolveInterceptors(type, qualifiers));
-        } finally {
-            internalUse.set(false);
-        }
-        if (!internalUse.get()) {
-            interceptors.addAll(getParentBm().resolveInterceptors(type, 
qualifiers));
-        }
-        internalUse.remove();
-        return interceptors;
-    }
-
-    @Override
-    public void validate(InjectionPoint injectionPoint) {
-        try {
-            super.validate(injectionPoint);
-        } catch (UnsatisfiedResolutionException ure) {
-            try {
-                getParentBm().validate(injectionPoint); // prevent injections 
from webapp only if called directly
-            } catch (UnsatisfiedResolutionException ure2) {
-                throw ure;
-            }
-        }
-    }
-
-    @Override
-    public boolean isScope(Class<? extends Annotation> annotationType) {
-        try {
-            return super.isScope(annotationType);
-        } catch (RuntimeException e) {
-            try {
-                return getParentBm().isScope(annotationType);
-            } catch (RuntimeException ignored) {
-                throw e;
-            }
-        }
-    }
-
-    @Override
     public boolean isNormalScope(Class<? extends Annotation> annotationType) {
         try {
             return super.isNormalScope(annotationType);
@@ -350,22 +148,6 @@ public class WebappBeanManager extends B
     }
 
     @Override
-    public Set<Annotation> getStereotypeDefinition(Class<? extends Annotation> 
stereotype) {
-        final Set<Annotation> mtds = new HashSet<Annotation>();
-        internalUse.set(true);
-        try {
-            mtds.addAll(super.getStereotypeDefinition(stereotype));
-        } finally {
-            internalUse.set(false);
-        }
-        if (!internalUse.get()) {
-            mtds.addAll(getParentBm().getStereotypeDefinition(stereotype));
-        }
-        internalUse.remove();
-        return mtds;
-    }
-
-    @Override
     public Context getContext(Class<? extends Annotation> scope) {
         try {
             return super.getContext(scope);
@@ -441,21 +223,17 @@ public class WebappBeanManager extends B
 
     public void afterStart() {
         deploymentBeans = new CopyOnWriteArraySet<Bean<?>>(); // override 
parent one with a "webapp" bean list
-        for (Bean<?> bean : getParentBm().getBeans()) {
-            if (bean instanceof BeanManagerBean || bean instanceof 
BuildInOwbBean
-                    || bean instanceof ConversationBean || bean instanceof 
InjectionPointBean) {
-                continue;
+        for (final Bean<?> bean : getParentBm().getBeans()) {
+            if (!BuildInOwbBean.class.isInstance(bean)) {
+                deploymentBeans.add(bean);
             }
-            deploymentBeans.add(bean);
         }
         deploymentBeans.addAll(super.getBeans());
 
         webappCtx.getBeanManagerImpl().getInjectionResolver().clearCaches(); 
// to force new resolution with new beans
-
-        started = true;
     }
 
     public void beforeStop() {
-        started = false;
+        // no-op
     }
 }

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1476654&r1=1476653&r2=1476654&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 Sat Apr 27 18:28:41 2013
@@ -409,7 +409,7 @@ public class AnnotationDeployer implemen
 
     public static class DiscoverAnnotatedBeans implements DynamicDeployer {
         public AppModule deploy(AppModule appModule) throws OpenEJBException {
-            if (!appModule.isWebapp() && appModule.getEjbModules() == null) {
+            if (!appModule.isWebapp() && !appModule.getWebModules().isEmpty()) 
{ // need to scan for jsf stuff at least
                 try {
                     
appModule.setEarLibFinder(FinderFactory.createFinder(appModule));
                 } catch (final Exception e) {

Modified: 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1476654&r1=1476653&r2=1476654&view=diff
==============================================================================
--- 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 (original)
+++ 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 Sat Apr 27 18:28:41 2013
@@ -1899,7 +1899,7 @@ public class TomcatWebAppBuilder impleme
      *
      * @param standardContext tomcat context instance
      */
-    private void    loadWebModule(final AppModule appModule, final 
StandardContext standardContext) {
+    private void loadWebModule(final AppModule appModule, final 
StandardContext standardContext) {
         final WebModule webModule = appModule.getWebModules().get(0);
         final WebApp webApp = webModule.getWebApp();
 


Reply via email to