You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2009/07/07 21:46:06 UTC

svn commit: r791957 [2/2] - in /incubator/openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/component/ main/java/org/apache/webbeans/component/creation/ main/java/org/apache/webbeans/config/ main/java/org/apache/webbeans/lifecycle/ ma...

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java Tue Jul  7 19:46:05 2009
@@ -16,7 +16,9 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
 import java.net.URL;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
@@ -24,15 +26,24 @@
 
 import javax.enterprise.context.ScopeType;
 import javax.enterprise.inject.deployment.Specializes;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.Decorator;
 import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.Producer;
 import javax.enterprise.inject.stereotype.Model;
 import javax.interceptor.Interceptor;
 
 import org.apache.webbeans.WebBeansConstants;
 import org.apache.webbeans.component.ManagedBean;
+import org.apache.webbeans.component.ProducerFieldBean;
+import org.apache.webbeans.component.ProducerMethodBean;
 import org.apache.webbeans.component.WebBeansType;
+import org.apache.webbeans.component.creation.ManagedBeanCreatorImpl;
+import org.apache.webbeans.component.creation.BeanCreator.MetaDataProvider;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.decorator.DecoratorUtil;
 import org.apache.webbeans.decorator.WebBeansDecorator;
@@ -43,6 +54,18 @@
 import org.apache.webbeans.exception.inject.InconsistentSpecializationException;
 import org.apache.webbeans.intercept.webbeans.WebBeansInterceptor;
 import org.apache.webbeans.logger.WebBeansLogger;
+import org.apache.webbeans.portable.AnnotatedElementFactory;
+import org.apache.webbeans.portable.creation.InjectionTargetProducer;
+import org.apache.webbeans.portable.events.ProcessAnnotatedTypeImpl;
+import org.apache.webbeans.portable.events.ProcessBeanImpl;
+import org.apache.webbeans.portable.events.ProcessInjectionTargetImpl;
+import org.apache.webbeans.portable.events.ProcessManagedBeanImpl;
+import org.apache.webbeans.portable.events.ProcessProducerFieldImpl;
+import org.apache.webbeans.portable.events.ProcessProducerImpl;
+import org.apache.webbeans.portable.events.ProcessProducerMethodImpl;
+import org.apache.webbeans.portable.events.discovery.AfterBeanDiscoveryImpl;
+import org.apache.webbeans.portable.events.discovery.AfterDeploymentValidationImpl;
+import org.apache.webbeans.portable.events.discovery.BeforeBeanDiscoveryImpl;
 import org.apache.webbeans.spi.JNDIService;
 import org.apache.webbeans.spi.ServiceLoader;
 import org.apache.webbeans.spi.deployer.MetaDataDiscoveryService;
@@ -60,12 +83,20 @@
 @SuppressWarnings("unchecked")
 public class WebBeansContainerDeployer
 {
-    private static WebBeansLogger logger = WebBeansLogger.getLogger(WebBeansContainerDeployer.class);
+    //Logger instance
+    private static final WebBeansLogger logger = WebBeansLogger.getLogger(WebBeansContainerDeployer.class);
 
+    /**Deployment is started or not*/
     protected boolean deployed = false;
 
+    /**XML Configurator*/
     protected WebBeansXMLConfigurator xmlConfigurator = null;
 
+    /**
+     * Creates a new deployer with given xml configurator.
+     * 
+     * @param xmlConfigurator xml configurator
+     */
     public WebBeansContainerDeployer(WebBeansXMLConfigurator xmlConfigurator)
     {
         this.xmlConfigurator = xmlConfigurator;
@@ -99,22 +130,35 @@
                 JNDIService service = ServiceLoader.getService(JNDIService.class);
                 service.bind(WebBeansConstants.WEB_BEANS_MANAGER_JNDI_NAME, BeanManagerImpl.getManager());
 
+                //Fire Event
+                fireBeforeBeanDiscoveryEvent();
+                
+                //Deploy bean from XML. Also configures deployments, interceptors, decorators.
                 deployFromXML(scanner);
+                
+                //Checking stereotype conditions
                 checkStereoTypes(scanner);
+                
+                //Configure Interceptors
                 configureInterceptors(scanner);
+                
+                //Configure Decorators
                 configureDecorators(scanner);
+                                
+                //Discover classpath classes
                 deployFromClassPath(scanner);
                 
+                //Check Specialization
                 checkSpecializations(scanner);
                 
-                //Fire @Initialized Event
-                fireInitializeEvent();
+                //Fire Event
+                fireAfterBeanDiscoveryEvent();
                 
                 //Validate injection Points
                 validateInjectionPoints();
                 
-                //Fire @Deployed Event
-                fireDeployedEvent();
+                //Fire Event
+                fireAfterDeploymentValidationEvent();
                 
                 deployed = true;
             }
@@ -137,20 +181,37 @@
         }
     }
     
-    private void fireInitializeEvent()
+    /**
+     * Fires event before bean discovery.
+     */
+    private void fireBeforeBeanDiscoveryEvent()
     {
-        //BeanManager manager = ManagerImpl.getManager();
-        //manager.fireEvent(manager, new Annotation[] { new BeforeBeanDiscoveryLiteral() });
+        BeanManager manager = BeanManagerImpl.getManager();
+        manager.fireEvent(new BeforeBeanDiscoveryImpl(),new Annotation[0]);
     }
     
-    
-    private void fireDeployedEvent()
+    /**
+     * Fires event after bean discovery.
+     */
+    private void fireAfterBeanDiscoveryEvent()
     {
-        //BeanManager manager = ManagerImpl.getManager();
-        //manager.fireEvent(manager, new Annotation[] { new AfterBeanDiscoveryLiteral() });        
+        BeanManager manager = BeanManagerImpl.getManager();
+        manager.fireEvent(new AfterBeanDiscoveryImpl(),new Annotation[0]);
         
     }
     
+    /**
+     * Fires event after deployment valdiation.
+     */
+    private void fireAfterDeploymentValidationEvent()
+    {
+        BeanManager manager = BeanManagerImpl.getManager();
+        manager.fireEvent(new AfterDeploymentValidationImpl(),new Annotation[0]);        
+    }
+    
+    /**
+     * Validate all injection points.
+     */
     private void validateInjectionPoints()
     {
         logger.info("Validation of injection points are started");
@@ -196,7 +257,11 @@
         logger.info("All injection points are validated succesfully");
     }
     
-
+    /**
+     * Validates beans.
+     * 
+     * @param beans deployed beans
+     */
     private void validate(Set<Bean<?>> beans)
     {
         BeanManagerImpl manager = BeanManagerImpl.getManager();
@@ -217,7 +282,12 @@
         
     }
     
-
+    /**
+     * Discovers and deploys classes from class path.
+     * 
+     * @param scanner discovery scanner
+     * @throws ClassNotFoundException if class not found
+     */
     protected void deployFromClassPath(MetaDataDiscoveryService scanner) throws ClassNotFoundException
     {
         logger.info("Deploying configurations from class files is started");
@@ -242,10 +312,10 @@
                     continue;
                 }
                 
-                if (SimpleWebBeansConfigurator.isSimpleWebBean(implClass))
+                if (ManagedBeanConfigurator.isSimpleWebBean(implClass))
                 {
                     logger.info("Simple WebBeans Component with class name : " + componentClassName + " is found");
-                    defineSimpleWebBeans(implClass);
+                    defineManagedBean(implClass);
                 }
                 else if (EJBWebBeansConfigurator.isEJBWebBean(implClass))
                 {
@@ -258,7 +328,15 @@
         logger.info("Deploying configurations from class files is ended");
 
     }
-
+    
+    /**
+     * Discovers and deploys classes from XML.
+     * 
+     * NOTE : Currently XML file is just used for configuring.
+     * 
+     * @param scanner discovery scanner
+     * @throws WebBeansDeploymentException if exception
+     */
     protected void deployFromXML(MetaDataDiscoveryService scanner) throws WebBeansDeploymentException
     {
         logger.info("Deploying configurations from XML files is started");
@@ -298,7 +376,13 @@
 
         logger.info("Deploying configurations from XML is ended succesfully");
     }
-
+    
+    /**
+     * Discovers and deploys interceptors.
+     * 
+     * @param scanner discovery scanner
+     * @throws ClassNotFoundException if class not found
+     */
     protected void configureInterceptors(MetaDataDiscoveryService scanner) throws ClassNotFoundException
     {
         logger.info("Configuring the Interceptors is started");
@@ -315,7 +399,7 @@
 
                 logger.info("Simple WebBeans Interceptor Component with class name : " + interceptorClazz + " is found");
 
-                defineSimpleWebBeansInterceptors(implClass);
+                defineInterceptors(implClass);
             }
         }
 
@@ -323,6 +407,12 @@
 
     }
 
+    /**
+     * Discovers and deploys decorators.
+     * 
+     * @param scanner discovery scanner
+     * @throws ClassNotFoundException if class not found
+     */
     protected void configureDecorators(MetaDataDiscoveryService scanner) throws ClassNotFoundException
     {
         logger.info("Configuring the Decorators is started");
@@ -337,7 +427,7 @@
                 Class<?> implClass = ClassUtil.getClassFromName(decoratorClazz);
                 logger.info("Simple WebBeans Decorator Component with class name : " + decoratorClazz + " is found");
 
-                defineSimpleWebBeansDecorators(implClass);
+                defineDecorators(implClass);
             }
         }
 
@@ -500,22 +590,148 @@
         StereoTypeManager.getInstance().addStereoTypeModel(model);        
     }
     
-    protected <T> void defineSimpleWebBeans(Class<T> clazz)
+    /**
+     * Defines and creates a new {@link ManagedBean}.
+     * 
+     * <p>
+     * It fires each event that is defined in the specification
+     * section 11.5, <b>Container Lifecycle Events</b>
+     * </p>
+     * 
+     * @param <T> bean class
+     * @param clazz managed bean class
+     */
+    protected <T> void defineManagedBean(Class<T> clazz)
     {
-        ManagedBean<T> component = null;
-
         if (!AnnotationUtil.isAnnotationExistOnClass(clazz, Interceptor.class) && !AnnotationUtil.isAnnotationExistOnClass(clazz, javax.decorator.Decorator.class))
         {
-            component = SimpleWebBeansConfigurator.define(clazz, WebBeansType.SIMPLE);
-            if (component != null)
+            AnnotatedType<T> annotatedType = AnnotatedElementFactory.newAnnotatedType(clazz);
+                        
+            ProcessAnnotatedTypeImpl<T> processAnnotatedEvent = new ProcessAnnotatedTypeImpl<T>(annotatedType);
+            
+            //Fires ProcessAnnotatedType
+            BeanManagerImpl.getManager().fireEvent(processAnnotatedEvent, new Annotation[0]);
+            
+            ManagedBean<T> managedBean = new ManagedBean<T>(clazz,WebBeansType.MANAGED);            
+            ManagedBeanCreatorImpl<T> managedBeanCreator = new ManagedBeanCreatorImpl<T>(managedBean);
+            
+            if(processAnnotatedEvent.isVeto())
+            {
+                return;
+            }
+            
+            if(processAnnotatedEvent.isSet())
+            {
+                managedBeanCreator.setMetaDataProvider(MetaDataProvider.THIRDPARTY);
+            }
+            
+            InjectionTargetProducer<T> injectionTarget = new InjectionTargetProducer<T>(managedBean);
+            ProcessInjectionTargetImpl<T> processInjectionTargetEvent = new ProcessInjectionTargetImpl<T>(injectionTarget,annotatedType);
+            
+            //Fires ProcessInjectionTarget
+            BeanManagerImpl.getManager().fireEvent(processInjectionTargetEvent, new Annotation[0]);
+            
+            if(processInjectionTargetEvent.isSet())
+            {
+                managedBeanCreator.setInjectedTarget(processInjectionTargetEvent.getInjectionTarget());
+            }
+            
+            Set<ProducerMethodBean<?>> producerMethods = managedBeanCreator.defineProducerMethods();
+            Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods = new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>(); 
+            for(ProducerMethodBean<?> producerMethod : producerMethods)
+            {
+                AnnotatedMethod<?> method = AnnotatedElementFactory.newAnnotatedMethod(producerMethod.getCreatorMethod(), producerMethod.getParent().getReturnType());
+                ProcessProducerImpl<?, ?> producerEvent = new ProcessProducerImpl(method);
+                
+                //Fires ProcessProducer for methods
+                BeanManagerImpl.getManager().fireEvent(producerEvent, new Annotation[0]);
+                
+                annotatedMethods.put(producerMethod, method);
+                
+                if(producerEvent.isProducerSet())
+                {
+                    producerMethod.setProducer((Producer) managedBeanCreator.getProducer());
+                }
+                
+                producerEvent.setProducerSet(false);
+            }
+            
+            Set<ProducerFieldBean<?>> producerFields = managedBeanCreator.defineProducerFields();
+            Map<ProducerFieldBean<?>,AnnotatedField<?>> annotatedFields = new HashMap<ProducerFieldBean<?>, AnnotatedField<?>>();
+            for(ProducerFieldBean<?> producerField : producerFields)
             {
-                BeanManagerImpl.getManager().addBean(WebBeansUtil.createNewSimpleBeanComponent(component));
+                AnnotatedField<?> field = AnnotatedElementFactory.newAnnotatedField(producerField.getCreatorField(), producerField.getParent().getReturnType());
+                ProcessProducerImpl<?, ?> producerEvent = new ProcessProducerImpl(field);
+                
+                //Fires ProcessProducer for fields
+                BeanManagerImpl.getManager().fireEvent(producerEvent, new Annotation[0]);
                 
-                DecoratorUtil.checkSimpleWebBeanDecoratorConditions(component);
+                annotatedFields.put(producerField, field);
+                
+                if(producerEvent.isProducerSet())
+                {
+                    producerField.setProducer((Producer) managedBeanCreator.getProducer());
+                }
+                
+                producerEvent.setProducerSet(false);
+            }
 
-                /* I have added this into the ComponentImpl.afterCreate(); */
-                // DefinitionUtil.defineSimpleWebBeanInterceptorStack(component);
-                BeanManagerImpl.getManager().addBean(component);
+            ProcessBeanImpl<T> processBeanEvent = new ProcessManagedBeanImpl<T>(managedBean,annotatedType);
+            
+            //Fires ProcessManagedBean
+            BeanManagerImpl.getManager().fireEvent(processBeanEvent, new Annotation[0]);
+            
+            for(ProducerMethodBean<?> bean : annotatedMethods.keySet())
+            {
+                AnnotatedMethod<?> annotatedMethod = annotatedMethods.get(bean);                
+                Method disposal = bean.getDisposalMethod();
+                AnnotatedMethod<?> disposalAnnotated = AnnotatedElementFactory.newAnnotatedMethod(disposal, bean.getParent().getReturnType());
+                
+                ProcessProducerMethodImpl<?, ?> processProducerMethodEvent = new ProcessProducerMethodImpl(bean,annotatedMethod,disposalAnnotated.getParameters().get(0));
+
+                //Fires ProcessProducer
+                BeanManagerImpl.getManager().fireEvent(processProducerMethodEvent, new Annotation[0]);
+            }
+            
+            for(ProducerFieldBean<?> bean : annotatedFields.keySet())
+            {
+                AnnotatedField<?> field = annotatedFields.get(bean);
+                
+                ProcessProducerFieldImpl<?, ?> processProducerFieldEvent = new ProcessProducerFieldImpl(bean,field);
+                
+                //Fire ProcessProducer
+                BeanManagerImpl.getManager().fireEvent(processProducerFieldEvent, new Annotation[0]);
+            }
+            
+            managedBeanCreator.defineSerializable();
+            managedBeanCreator.defineStereoTypes();
+            Class<? extends Annotation> deploymentType = managedBeanCreator.defineDeploymentType("There are more than one @DeploymentType annotation in ManagedBean implementation class : " + managedBean.getReturnType().getName());
+            managedBeanCreator.defineApiType();
+            managedBeanCreator.defineScopeType("ManagedBean implementation class : " + clazz.getName() + " stereotypes must declare same @ScopeType annotations");
+            managedBeanCreator.defineBindingType();
+            managedBeanCreator.defineName(WebBeansUtil.getSimpleWebBeanDefaultName(clazz.getSimpleName()));
+            managedBeanCreator.defineConstructor();            
+            Set<ProducerMethodBean<?>> producerMethodBeans = annotatedMethods.keySet();        
+            Set<ProducerFieldBean<?>> producerFieldBeans = annotatedFields.keySet();            
+            managedBeanCreator.defineDisposalMethods();
+            managedBeanCreator.defineInjectedFields();
+            managedBeanCreator.defineInjectedMethods();
+            managedBeanCreator.defineObserverMethods();
+            
+            //Set InjectionTarget that is used by the container to inject dependencies!
+            if(managedBeanCreator.isInjectionTargetSet())
+            {
+                managedBean.setInjectionTarget(managedBeanCreator.getInjectedTarget());   
+            }
+            
+            // Check if the deployment type is enabled.
+            if (WebBeansUtil.isDeploymentTypeEnabled(deploymentType))
+            {                
+                BeanManagerImpl.getManager().addBean(WebBeansUtil.createNewSimpleBeanComponent(managedBean));                
+                DecoratorUtil.checkSimpleWebBeanDecoratorConditions(managedBean);
+                BeanManagerImpl.getManager().addBean(managedBean);
+                BeanManagerImpl.getManager().getBeans().addAll(producerMethodBeans);
+                BeanManagerImpl.getManager().getBeans().addAll(producerFieldBeans);
             }
         }
     }
@@ -525,14 +741,14 @@
      * 
      * @param clazz interceptor class
      */
-    protected <T> void defineSimpleWebBeansInterceptors(Class<T> clazz)
+    protected <T> void defineInterceptors(Class<T> clazz)
     {
-        WebBeansUtil.defineSimpleWebBeansInterceptors(clazz);
+        WebBeansUtil.defineInterceptors(clazz);
     }
 
-    protected <T> void defineSimpleWebBeansDecorators(Class<T> clazz)
+    protected <T> void defineDecorators(Class<T> clazz)
     {
-        WebBeansUtil.defineSimpleWebBeansDecorators(clazz);
+        WebBeansUtil.defineDecorators(clazz);
     }
 
     protected void defineEnterpriseWebBeans()

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/WebBeansLifeCycle.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/WebBeansLifeCycle.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/WebBeansLifeCycle.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/WebBeansLifeCycle.java Tue Jul  7 19:46:05 2009
@@ -13,6 +13,7 @@
  */
 package org.apache.webbeans.lifecycle;
 
+import java.lang.annotation.Annotation;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.concurrent.Executors;
@@ -40,6 +41,7 @@
 import org.apache.webbeans.logger.WebBeansLogger;
 import org.apache.webbeans.plugins.PluginLoader;
 import org.apache.webbeans.portable.events.ExtensionLoader;
+import org.apache.webbeans.portable.events.discovery.BeforeShutDownImpl;
 import org.apache.webbeans.servlet.WebBeansConfigurationListener;
 import org.apache.webbeans.spi.JNDIService;
 import org.apache.webbeans.spi.ServiceLoader;
@@ -188,6 +190,9 @@
 
     public void applicationEnded(ServletContextEvent event)
     {
+        //Fire shut down
+        this.rootManager.fireEvent(new BeforeShutDownImpl(), new Annotation[0]);
+                
         service.shutdownNow();
 
         ContextFactory.destroyApplicationContext(event.getServletContext());

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java Tue Jul  7 19:46:05 2009
@@ -35,6 +35,16 @@
     private boolean set = false;
 
     /**
+     * Creates a new instance with the given annotated type.
+     * 
+     * @param annotatedType annotated type
+     */
+    public ProcessAnnotatedTypeImpl(AnnotatedType<X> annotatedType)
+    {
+        this.annotatedType = annotatedType;
+    }
+    
+    /**
      * {@inheritDoc}
      */
     @Override

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanImpl.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanImpl.java Tue Jul  7 19:46:05 2009
@@ -27,10 +27,16 @@
 public  abstract class ProcessBeanImpl<X> implements ProcessBean<X>
 {
     /**Annotated instance. Can be AnnotatedType, AnnotatedMethod or AnnotatedField*/
-    private Annotated annotated;
+    private final Annotated annotated;
     
     /**ManagedBean, SessionBean, ProducerMethodBean, ProducerFieldBean*/
-    private Bean<X> bean;
+    private final Bean<X> bean;
+    
+    protected ProcessBeanImpl(Bean<X> bean, Annotated annotated)
+    {
+        this.bean = bean;
+        this.annotated = annotated;
+    }
     
     /**
      * {@inheritDoc}

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionTargetImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionTargetImpl.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionTargetImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionTargetImpl.java Tue Jul  7 19:46:05 2009
@@ -27,7 +27,7 @@
 public class ProcessInjectionTargetImpl<X> implements ProcessInjectionTarget<X>
 {
     /**Annotated type instance that is used by container to read meta-data*/
-    private AnnotatedType<X> annotatedType = null;
+    private final AnnotatedType<X> annotatedType;
     
     /**Injection target that is used by container to inject dependencies*/
     private InjectionTarget<X> injectionTarget = null;
@@ -36,6 +36,17 @@
     private boolean set = false;
     
     /**
+     * Creates a new instance.
+     * 
+     * @param injectionTarget injection target
+     */
+    public ProcessInjectionTargetImpl(InjectionTarget<X> injectionTarget, AnnotatedType<X> annotatedType)
+    {
+        this.injectionTarget = injectionTarget;
+        this.annotatedType = annotatedType;
+    }
+    
+    /**
      * {@inheritDoc}
      */
     @Override

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessManagedBeanImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessManagedBeanImpl.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessManagedBeanImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessManagedBeanImpl.java Tue Jul  7 19:46:05 2009
@@ -16,6 +16,8 @@
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.ProcessManagedBean;
 
+import org.apache.webbeans.component.ManagedBean;
+
 /**
  * Implementation of {@link ProcessManagedBean}.
  * 
@@ -26,8 +28,14 @@
 public class ProcessManagedBeanImpl<X> extends ProcessBeanImpl<X> implements ProcessManagedBean<X>
 {
     /**Annotated managed bean class*/
-    private AnnotatedType<X> annotatedBeanClass;
+    private final AnnotatedType<X> annotatedBeanClass;
 
+    public ProcessManagedBeanImpl(ManagedBean<X> bean, AnnotatedType<X> annotatedType)
+    {        
+        super(bean, annotatedType);
+        this.annotatedBeanClass = annotatedType;
+    }
+    
     /**
      * {@inheritDoc}
      */

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java Tue Jul  7 19:46:05 2009
@@ -28,11 +28,17 @@
 public class ProcessObserverMethodImpl<X,T> implements ProcessObserverMethod<X, T>
 {
     /**Observer annotated method*/
-    private AnnotatedMethod<X> annotatedMethod;
+    private final AnnotatedMethod<X> annotatedMethod;
     
     /**ObserverMethod instance*/
-    private ObserverMethod<X, T> observerMethod;
+    private final ObserverMethod<X, T> observerMethod;
 
+    public ProcessObserverMethodImpl(AnnotatedMethod<X> annotatedMethod,ObserverMethod<X, T> observerMethod)
+    {
+        this.annotatedMethod = annotatedMethod;
+        this.observerMethod = observerMethod;
+    }
+    
     /**
      * {@inheritDoc}
      */

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java Tue Jul  7 19:46:05 2009
@@ -16,6 +16,8 @@
 import javax.enterprise.inject.spi.AnnotatedField;
 import javax.enterprise.inject.spi.ProcessProducerField;
 
+import org.apache.webbeans.component.ProducerFieldBean;
+
 /**
  * Implementation of the {@link ProcessProducerField}.
  * 
@@ -27,8 +29,14 @@
 public class ProcessProducerFieldImpl<X,T> extends ProcessBeanImpl<T> implements ProcessProducerField<X, T>
 {
     /**Annotated field*/
-    private AnnotatedField<X> annotatedField;
+    private final AnnotatedField<X> annotatedField;
 
+    public ProcessProducerFieldImpl(ProducerFieldBean<T> bean, AnnotatedField<X> annotatedField)
+    {
+        super(bean, annotatedField);
+        this.annotatedField = annotatedField;
+    }
+    
     /**
      * {@inheritDoc}
      */

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerImpl.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerImpl.java Tue Jul  7 19:46:05 2009
@@ -28,7 +28,7 @@
 public class ProcessProducerImpl<X,T> implements ProcessProducer<X, T>
 {
     /**Annotated method or annotated field according to producer method or field*/
-    private AnnotatedMember<X> annotateMember = null;
+    private final AnnotatedMember<X> annotateMember;
     
     /**Used by container to produce instance for producer method or field*/
     private Producer<T> producer = null;
@@ -36,6 +36,11 @@
     /**Set or not*/
     private boolean set;
 
+    public ProcessProducerImpl(AnnotatedMember<X> annotateMember)
+    {
+        this.annotateMember = annotateMember;
+    }
+    
     /**
      * {@inheritDoc}
      */
@@ -79,9 +84,14 @@
      * 
      * @return set or not
      */
-    public boolean isSet()
+    public boolean isProducerSet()
     {
         return this.set;
     }
+    
+    public void setProducerSet(boolean set)
+    {
+        this.set = set;
+    }
 
 }
\ No newline at end of file

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java Tue Jul  7 19:46:05 2009
@@ -17,6 +17,8 @@
 import javax.enterprise.inject.spi.AnnotatedParameter;
 import javax.enterprise.inject.spi.ProcessProducerMethod;
 
+import org.apache.webbeans.component.ProducerMethodBean;
+
 /**
  * Implementation of {@link ProcessProducerMethod}.
  * 
@@ -28,11 +30,18 @@
 public class ProcessProducerMethodImpl<X,T> extends ProcessBeanImpl<T> implements ProcessProducerMethod<X, T>
 {
     /**Disposed parameter*/
-    private AnnotatedParameter<X> annotatedDisposedParameter;
+    private final AnnotatedParameter<X> annotatedDisposedParameter;
     
     /**Producer method*/
-    private AnnotatedMethod<X> annotatedProducerMethod;
+    private final AnnotatedMethod<X> annotatedProducerMethod;
 
+    public ProcessProducerMethodImpl(ProducerMethodBean<T> bean, AnnotatedMethod<X> method, AnnotatedParameter<X> disposeParameter)
+    {
+        super(bean, method);
+        this.annotatedProducerMethod = method;
+        this.annotatedDisposedParameter = disposeParameter;
+    }
+    
     /**
      * {@inheritDoc}
      */

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java Tue Jul  7 19:46:05 2009
@@ -14,6 +14,7 @@
 package org.apache.webbeans.portable.events;
 
 import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.ProcessSessionBean;
 import javax.enterprise.inject.spi.SessionBeanType;
 
@@ -27,14 +28,22 @@
 public class ProcessSessionBeanImpl<X> extends ProcessBeanImpl<Object> implements ProcessSessionBean<X>
 {
     /**Session bean annotated type*/
-    private AnnotatedType<X> annotatedBeanClass;
+    private final AnnotatedType<X> annotatedBeanClass;
     
     /**Ejb name*/
-    private String ejbName;
+    private final String ejbName;
     
     /**Session bean type*/
-    private SessionBeanType type;
+    private final SessionBeanType type;
 
+    public ProcessSessionBeanImpl(Bean<Object> bean, AnnotatedType<X> annotatedType, String name, SessionBeanType type)
+    {
+        super(bean, annotatedType);
+        this.annotatedBeanClass = annotatedType;
+        this.ejbName = name;
+        this.type = type;
+    }
+    
     /**
      * {@inheritDoc}
      */

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Tue Jul  7 19:46:05 2009
@@ -91,7 +91,7 @@
 import org.apache.webbeans.component.WebBeansType;
 import org.apache.webbeans.config.DefinitionUtil;
 import org.apache.webbeans.config.EJBWebBeansConfigurator;
-import org.apache.webbeans.config.SimpleWebBeansConfigurator;
+import org.apache.webbeans.config.ManagedBeanConfigurator;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.conversation.ConversationImpl;
 import org.apache.webbeans.decorator.DecoratorUtil;
@@ -604,9 +604,9 @@
 
         NewBean<T> comp = null;
 
-        if (SimpleWebBeansConfigurator.isSimpleWebBean(clazz))
+        if (ManagedBeanConfigurator.isSimpleWebBean(clazz))
         {
-            comp = new NewBean<T>(clazz, WebBeansType.SIMPLE);
+            comp = new NewBean<T>(clazz, WebBeansType.MANAGED);
             comp.setConstructor(WebBeansUtil.defineConstructor(clazz));
 
             DefinitionUtil.defineInjectedFields(comp);
@@ -1787,14 +1787,14 @@
     }
 
     @SuppressWarnings("unchecked")
-    public static <T> void defineSimpleWebBeansInterceptors(Class<T> clazz)
+    public static <T> void defineInterceptors(Class<T> clazz)
     {
         if (InterceptorsManager.getInstance().isInterceptorEnabled(clazz))
         {
             ManagedBean<T> component = null;
 
             InterceptorUtil.checkInterceptorConditions(clazz);
-            component = SimpleWebBeansConfigurator.define(clazz, WebBeansType.INTERCEPTOR);
+            component = ManagedBeanConfigurator.define(clazz, WebBeansType.INTERCEPTOR);
 
             if (component != null)
             {
@@ -1805,14 +1805,14 @@
     }
 
     @SuppressWarnings("unchecked")
-    public static <T> void defineSimpleWebBeansDecorators(Class<T> clazz)
+    public static <T> void defineDecorators(Class<T> clazz)
     {
         if (DecoratorsManager.getInstance().isDecoratorEnabled(clazz))
         {
             ManagedBean<T> component = null;
 
             DecoratorUtil.checkDecoratorConditions(clazz);
-            component = SimpleWebBeansConfigurator.define(clazz, WebBeansType.DECORATOR);
+            component = ManagedBeanConfigurator.define(clazz, WebBeansType.DECORATOR);
 
             if (component != null)
             {
@@ -1871,7 +1871,7 @@
     
     public static boolean isSimpleWebBeans(AbstractBean<?> component)
     {
-        if(component.getWebBeansType().equals(WebBeansType.SIMPLE) ||
+        if(component.getWebBeansType().equals(WebBeansType.MANAGED) ||
                 component.getWebBeansType().equals(WebBeansType.INTERCEPTOR) ||
                 component.getWebBeansType().equals(WebBeansType.DECORATOR))
         {

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java Tue Jul  7 19:46:05 2009
@@ -51,7 +51,7 @@
 import org.apache.webbeans.component.xml.XMLManagedBean;
 import org.apache.webbeans.component.xml.XMLProducerBean;
 import org.apache.webbeans.config.DefinitionUtil;
-import org.apache.webbeans.config.SimpleWebBeansConfigurator;
+import org.apache.webbeans.config.ManagedBeanConfigurator;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.decorator.DecoratorsManager;
 import org.apache.webbeans.deployment.DeploymentTypeManager;
@@ -539,7 +539,7 @@
         else
         {
             /* Simple WebBeans */
-            if (SimpleWebBeansConfigurator.isSimpleWebBean(clazz))
+            if (ManagedBeanConfigurator.isSimpleWebBean(clazz))
             {
                 // Configure Simple WebBean
                 configureSimpleWebBean(clazz, webBeanElement);

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestContext.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestContext.java?rev=791957&r1=791956&r2=791957&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestContext.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestContext.java Tue Jul  7 19:46:05 2009
@@ -40,7 +40,7 @@
 import org.apache.webbeans.component.ManagedBean;
 import org.apache.webbeans.component.WebBeansType;
 import org.apache.webbeans.component.xml.XMLManagedBean;
-import org.apache.webbeans.config.SimpleWebBeansConfigurator;
+import org.apache.webbeans.config.ManagedBeanConfigurator;
 import org.apache.webbeans.context.ContextFactory;
 import org.apache.webbeans.context.DependentContext;
 import org.apache.webbeans.decorator.DecoratorUtil;
@@ -314,7 +314,7 @@
     {
         ManagedBean<T> bean = null;
 
-        bean = SimpleWebBeansConfigurator.define(clazz, WebBeansType.SIMPLE);
+        bean = ManagedBeanConfigurator.define(clazz, WebBeansType.MANAGED);
 
         if (bean != null)
         {
@@ -419,13 +419,13 @@
     {
         ManagedBean<T> component = null;
 
-        SimpleWebBeansConfigurator.checkSimpleWebBeanCondition(clazz);
+        ManagedBeanConfigurator.checkSimpleWebBeanCondition(clazz);
         {
             // This is the interceptor class
             if (InterceptorsManager.getInstance().isInterceptorEnabled(clazz))
             {
                 InterceptorUtil.checkInterceptorConditions(clazz);
-                component = SimpleWebBeansConfigurator.define(clazz, WebBeansType.INTERCEPTOR);
+                component = ManagedBeanConfigurator.define(clazz, WebBeansType.INTERCEPTOR);
                 WebBeansInterceptorConfig.configureInterceptorClass((ManagedBean<Object>) component, clazz.getDeclaredAnnotations());
             }
 
@@ -448,7 +448,7 @@
         if (DecoratorsManager.getInstance().isDecoratorEnabled(clazz))
         {
             DecoratorUtil.checkDecoratorConditions(clazz);
-            component = SimpleWebBeansConfigurator.define(clazz, WebBeansType.DECORATOR);
+            component = ManagedBeanConfigurator.define(clazz, WebBeansType.DECORATOR);
 
             if (component != null)
             {