You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2014/12/22 09:18:57 UTC

svn commit: r1647256 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/config/ main/java/org/apache/webbeans/container/ main/java/org/apache/webbeans/inject/impl/ main/java/org/apache/webbeans/portable/events/ main/java/org/apac...

Author: rmannibucau
Date: Mon Dec 22 08:18:57 2014
New Revision: 1647256

URL: http://svn.apache.org/r1647256
Log:
making container event usable only in their observed view - to remove if the spec thinks it is optional but today it is not

Added:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/EventBase.java
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionPointImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionTargetImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessManagedBeanImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSyntheticAnnotatedTypeImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterDeploymentValidationImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterTypeDiscoveryImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessProducer.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/injectiontarget/ProcessInjectionTargetTest.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java Mon Dec 22 08:18:57 2014
@@ -570,7 +570,9 @@ public class BeansDeployer
     private void fireBeforeBeanDiscoveryEvent()
     {
         BeanManagerImpl manager = webBeansContext.getBeanManagerImpl();
-        manager.fireLifecycleEvent(new BeforeBeanDiscoveryImpl(webBeansContext));
+        BeforeBeanDiscoveryImpl event = new BeforeBeanDiscoveryImpl(webBeansContext);
+        manager.fireLifecycleEvent(event);
+        event.setStarted();
     }
     
     /**
@@ -604,11 +606,13 @@ public class BeansDeployer
         Collections.reverse(interceptors);
         Collections.reverse(decorators);
         Collections.reverse(alternatives);
-        manager.fireLifecycleEvent(new AfterTypeDiscoveryImpl(webBeansContext, newAt,
-                interceptors, decorators, alternatives));
+        final AfterTypeDiscoveryImpl event = new AfterTypeDiscoveryImpl(webBeansContext, newAt,
+                interceptors, decorators, alternatives);
+        manager.fireLifecycleEvent(event);
         // reverse to keep "selection" order - decorator and interceptors considers it in their sorting.
         // NOTE: from here priorityClass.getSorted() MUST NOT be recomputed (ie no priorityClass.add(...))
         Collections.reverse(alternatives);
+        event.setStarted();
 
         // we do not need to set back the sortedAlternatives to the AlternativesManager as the API
         // and all layers in between use a mutable List. Not very elegant but spec conform.
@@ -623,14 +627,16 @@ public class BeansDeployer
      */
     private void fireAfterDeploymentValidationEvent()
     {
-        BeanManagerImpl manager = webBeansContext.getBeanManagerImpl();
+        final BeanManagerImpl manager = webBeansContext.getBeanManagerImpl();
         manager.setAfterDeploymentValidationFired(true);
-        manager.fireLifecycleEvent(new AfterDeploymentValidationImpl(manager));
+        final AfterDeploymentValidationImpl event = new AfterDeploymentValidationImpl(manager);
+        manager.fireLifecycleEvent(event);
 
         webBeansContext.getWebBeansUtil().inspectErrorStack(
             "There are errors that are added by AfterDeploymentValidation event observers. Look at logs for further details");
 
         packageVetoCache.clear(); // no more needed, free the memory
+        event.setStarted();
     }
     
     /**
@@ -874,7 +880,7 @@ public class BeansDeployer
                         {
                             annotatedTypes.add(processAnnotatedEvent.getAnnotatedType());
                         }
-                        processAnnotatedEvent.setAfter();
+                        processAnnotatedEvent.setStarted();
                     }
                     else
                     {
@@ -963,8 +969,6 @@ public class BeansDeployer
      */
     private void addAdditionalAnnotatedTypes(Collection<AnnotatedType<?>> toDeploy, List<AnnotatedType<?>> annotatedTypes)
     {
-        BeanManagerImpl beanManager = webBeansContext.getBeanManagerImpl();
-
         for (AnnotatedType<?> annotatedType : toDeploy)
         {
             // Fires ProcessAnnotatedType
@@ -980,7 +984,10 @@ public class BeansDeployer
                 }
                 annotatedTypes.add(changedAnnotatedType);
             }
-
+            if (processAnnotatedEvent != null)
+            {
+                processAnnotatedEvent.setStarted();
+            }
         }
     }
 
@@ -1210,7 +1217,7 @@ public class BeansDeployer
                 }
 
                 annotatedType = processAnnotatedEvent.getAnnotatedType();
-                processAnnotatedEvent.setAfter();
+                processAnnotatedEvent.setStarted();
 
                 Set<Annotation> annTypeAnnotations = annotatedType.getAnnotations();
                 if (annTypeAnnotations != null)
@@ -1384,7 +1391,7 @@ public class BeansDeployer
         if(webBeansContext.getWebBeansUtil().supportsJavaEeComponentInjections(beanClass))
         {
             //Fires ProcessInjectionTarget
-            webBeansContext.getWebBeansUtil().fireProcessInjectionTargetEventForJavaEeComponents(beanClass);
+            webBeansContext.getWebBeansUtil().fireProcessInjectionTargetEventForJavaEeComponents(beanClass).setStarted();
             webBeansContext.getWebBeansUtil().inspectErrorStack(
                 "There are errors that are added by ProcessInjectionTarget event observers. Look at logs for further details");
 
@@ -1510,6 +1517,7 @@ public class BeansDeployer
                 //Fires ProcessManagedBean
                 ProcessBeanImpl<T> processBeanEvent = new GProcessManagedBean(managedBean, annotatedType);
                 beanManager.fireEvent(processBeanEvent, true);
+                processBeanEvent.setStarted();
                 webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessManagedBean event observers for " +
                         "managed beans. Look at logs for further details");
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java Mon Dec 22 08:18:57 2014
@@ -86,6 +86,7 @@ import org.apache.webbeans.portable.Anno
 import org.apache.webbeans.portable.InjectionTargetImpl;
 import org.apache.webbeans.portable.LazyInterceptorDefinedInjectionTarget;
 import org.apache.webbeans.portable.events.discovery.ErrorStack;
+import org.apache.webbeans.portable.events.generics.GProcessInjectionTarget;
 import org.apache.webbeans.spi.adaptor.ELAdaptor;
 import org.apache.webbeans.spi.plugins.OpenWebBeansEjbPlugin;
 import org.apache.webbeans.util.AnnotationUtil;
@@ -1189,7 +1190,10 @@ public class BeanManagerImpl implements
         {
             throw new IllegalArgumentException(ie);
         }
-        return webBeansContext.getWebBeansUtil().fireProcessInjectionTargetEvent(injectionTarget, type).getInjectionTarget();
+        GProcessInjectionTarget event = webBeansContext.getWebBeansUtil().fireProcessInjectionTargetEvent(injectionTarget, type);
+        final InjectionTarget it = event.getInjectionTarget();
+        event.setStarted();
+        return it;
     }
 
     @Override

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java Mon Dec 22 08:18:57 2014
@@ -23,6 +23,7 @@ import javax.enterprise.inject.spi.Injec
 import org.apache.webbeans.component.ManagedBean;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.portable.InjectionTargetImpl;
+import org.apache.webbeans.portable.events.generics.GProcessInjectionTarget;
 import org.apache.webbeans.util.Asserts;
 
 import javax.annotation.PostConstruct;
@@ -64,7 +65,10 @@ public class InjectionTargetFactoryImpl<
         {
             ManagedBean.class.cast(bean).setOriginalInjectionTarget(injectionTarget);
         }
-        return webBeansContext.getWebBeansUtil().fireProcessInjectionTargetEvent(injectionTarget, annotatedType).getInjectionTarget();
+        final GProcessInjectionTarget event = webBeansContext.getWebBeansUtil().fireProcessInjectionTargetEvent(injectionTarget, annotatedType);
+        final InjectionTarget it = event.getInjectionTarget();
+        event.setStarted();
+        return it;
     }
 
     public Set<InjectionPoint> createInjectionPoints(Bean<T> bean)

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java Mon Dec 22 08:18:57 2014
@@ -22,6 +22,7 @@ import org.apache.webbeans.annotation.An
 import org.apache.webbeans.annotation.NamedLiteral;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.portable.events.generics.GProcessInjectionPoint;
 import org.apache.webbeans.util.AnnotationUtil;
 import org.apache.webbeans.util.Asserts;
 
@@ -133,7 +134,9 @@ public class InjectionPointFactory
 
         if (fireEvent)
         {
-            injectionPoint = webBeansContext.getWebBeansUtil().fireProcessInjectionPointEvent(injectionPoint).getInjectionPoint();
+            final GProcessInjectionPoint event = webBeansContext.getWebBeansUtil().fireProcessInjectionPointEvent(injectionPoint);
+            injectionPoint = event.getInjectionPoint();
+            event.setStarted();
         }
 
         return injectionPoint;

Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/EventBase.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/EventBase.java?rev=1647256&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/EventBase.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/EventBase.java Mon Dec 22 08:18:57 2014
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.portable.events;
+
+public abstract class EventBase
+{
+    private boolean started;
+
+    public void setStarted()
+    {
+        started = true;
+    }
+
+    protected void checkState()
+    {
+        if (started)
+        {
+            throw new IllegalStateException("only call container event methods in their correct lifecycle");
+        }
+    }
+}

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java Mon Dec 22 08:18:57 2014
@@ -26,7 +26,7 @@ import javax.enterprise.inject.spi.Proce
  * 
  * @param <X> bean class info
  */
-public class ProcessAnnotatedTypeImpl<X> implements ProcessAnnotatedType<X>
+public class ProcessAnnotatedTypeImpl<X> extends EventBase implements ProcessAnnotatedType<X>
 {
     /**Annotated Type*/
     private AnnotatedType<X> annotatedType = null;
@@ -57,6 +57,7 @@ public class ProcessAnnotatedTypeImpl<X>
     @Override
     public AnnotatedType<X> getAnnotatedType()
     {
+        checkState();
         return annotatedType;
     }
 
@@ -66,6 +67,7 @@ public class ProcessAnnotatedTypeImpl<X>
     @Override
     public void setAnnotatedType(AnnotatedType<X> type)
     {
+        checkState();
         annotatedType = type;
         modifiedAnnotatedType = true;
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java Mon Dec 22 08:18:57 2014
@@ -22,7 +22,7 @@ import javax.enterprise.inject.spi.Annot
 import javax.enterprise.inject.spi.BeanAttributes;
 import javax.enterprise.inject.spi.ProcessBeanAttributes;
 
-public class ProcessBeanAttributesImpl<T> implements ProcessBeanAttributes<T>
+public class ProcessBeanAttributesImpl<T> extends EventBase implements ProcessBeanAttributes<T>
 {
     private Annotated annotated;
     private BeanAttributes<T> attributes;
@@ -38,30 +38,35 @@ public class ProcessBeanAttributesImpl<T
     @Override
     public Annotated getAnnotated()
     {
+        checkState();
         return annotated;
     }
 
     @Override
     public BeanAttributes<T> getBeanAttributes()
     {
+        checkState();
         return attributes;
     }
 
     @Override
     public void setBeanAttributes(final BeanAttributes<T> tBeanAttributes)
     {
+        checkState();
         attributes = tBeanAttributes;
     }
 
     @Override
     public void veto()
     {
+        checkState();
         veto = true;
     }
 
     @Override
     public void addDefinitionError(final Throwable throwable)
     {
+        checkState();
         definitionError = throwable;
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanImpl.java Mon Dec 22 08:18:57 2014
@@ -31,14 +31,14 @@ import org.apache.webbeans.config.WebBea
  *
  * @param <X> bean class info
  */
-public  class ProcessBeanImpl<X> implements ProcessBean<X>
+public  class ProcessBeanImpl<X> extends EventBase implements ProcessBean<X>
 {
     /**Annotated instance. Can be AnnotatedType, AnnotatedMethod or AnnotatedField*/
     private final Annotated annotated;
     
     /**ManagedBean, SessionBean, ProducerMethodBean, ProducerFieldBean*/
     private final Bean<X> bean;
-    
+
     protected ProcessBeanImpl(Bean<X> bean, Annotated annotated)
     {
         this.bean = bean;
@@ -51,6 +51,7 @@ public  class ProcessBeanImpl<X> impleme
     @Override
     public void addDefinitionError(Throwable t)
     {
+        checkState();
         WebBeansContext.getInstance().getBeanManagerImpl().getErrorStack().pushError(t);
     }
 
@@ -60,6 +61,7 @@ public  class ProcessBeanImpl<X> impleme
     @Override
     public Annotated getAnnotated()
     {
+        checkState();
         return annotated;
     }
 
@@ -69,6 +71,7 @@ public  class ProcessBeanImpl<X> impleme
     @Override
     public Bean<X> getBean()
     {
+        checkState();
         return bean;
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionPointImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionPointImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionPointImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionPointImpl.java Mon Dec 22 08:18:57 2014
@@ -30,7 +30,7 @@ import javax.enterprise.inject.spi.Proce
  * @param <T> bean class
  * @param <X> declared type
  */
-public class ProcessInjectionPointImpl<T, X> implements ProcessInjectionPoint<T, X>
+public class ProcessInjectionPointImpl<T, X> extends EventBase implements ProcessInjectionPoint<T, X>
 {
 
     private InjectionPoint injectionPoint;
@@ -48,6 +48,7 @@ public class ProcessInjectionPointImpl<T
     @Override
     public InjectionPoint getInjectionPoint()
     {
+        checkState();
         return injectionPoint;
     }
 
@@ -57,6 +58,7 @@ public class ProcessInjectionPointImpl<T
     @Override
     public void setInjectionPoint(InjectionPoint injectionPoint)
     {
+        checkState();
         this.injectionPoint = injectionPoint;
     }
 
@@ -66,6 +68,7 @@ public class ProcessInjectionPointImpl<T
     @Override
     public void addDefinitionError(Throwable t)
     {
+        checkState();
         WebBeansContext.getInstance().getBeanManagerImpl().getErrorStack().pushError(t);
     }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionTargetImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionTargetImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionTargetImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionTargetImpl.java Mon Dec 22 08:18:57 2014
@@ -31,7 +31,7 @@ import org.apache.webbeans.config.WebBea
  *
  * @param <X> bean class info
  */
-public class ProcessInjectionTargetImpl<X> implements ProcessInjectionTarget<X>
+public class ProcessInjectionTargetImpl<X> extends EventBase implements ProcessInjectionTarget<X>
 {
     /**Annotated type instance that is used by container to read meta-data*/
     private final AnnotatedType<X> annotatedType;
@@ -56,29 +56,37 @@ public class ProcessInjectionTargetImpl<
     /**
      * {@inheritDoc}
      */
+    @Override
     public void addDefinitionError(Throwable t)
     {
+        checkState();
         WebBeansContext.getInstance().getBeanManagerImpl().getErrorStack().pushError(t);
     }
 
+    @Override
     public AnnotatedType<X> getAnnotatedType()
     {
+        checkState();
         return annotatedType;
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public InjectionTarget<X> getInjectionTarget()
     {
+        checkState();
         return injectionTarget;
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public void setInjectionTarget(InjectionTarget<X> injectionTarget)
     {
+        checkState();
         this.injectionTarget = injectionTarget;
         set = true;
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessManagedBeanImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessManagedBeanImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessManagedBeanImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessManagedBeanImpl.java Mon Dec 22 08:18:57 2014
@@ -47,6 +47,7 @@ public class ProcessManagedBeanImpl<X> e
     @Override
     public AnnotatedType<X> getAnnotatedBeanClass()
     {
+        checkState();
         return annotatedBeanClass;
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java Mon Dec 22 08:18:57 2014
@@ -32,7 +32,7 @@ import org.apache.webbeans.config.WebBea
  * @param <X> declared bean class
  * @param <T> event type
  */
-public class ProcessObserverMethodImpl<T,X> implements ProcessObserverMethod<T, X>
+public class ProcessObserverMethodImpl<T,X> extends EventBase implements ProcessObserverMethod<T, X>
 {
     /**Observer annotated method*/
     private final AnnotatedMethod<X> annotatedMethod;
@@ -52,6 +52,7 @@ public class ProcessObserverMethodImpl<T
     @Override
     public void addDefinitionError(Throwable t)
     {
+        checkState();
         WebBeansContext.getInstance().getBeanManagerImpl().getErrorStack().pushError(t);
     }
 
@@ -61,6 +62,7 @@ public class ProcessObserverMethodImpl<T
     @Override
     public AnnotatedMethod<X> getAnnotatedMethod()
     {
+        checkState();
         return annotatedMethod;
     }
 
@@ -70,6 +72,7 @@ public class ProcessObserverMethodImpl<T
     @Override
     public ObserverMethod<T> getObserverMethod()
     {
+        checkState();
         return observerMethod;
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java Mon Dec 22 08:18:57 2014
@@ -50,6 +50,7 @@ public class ProcessProducerFieldImpl<X,
     @Override
     public AnnotatedField<X> getAnnotatedProducerField()
     {
+        checkState();
         return annotatedField;
     }
 
@@ -58,6 +59,7 @@ public class ProcessProducerFieldImpl<X,
      */
     public AnnotatedParameter<X> getAnnotatedDisposedParameter()
     {
+        checkState();
         return annotatedParameter;
     }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerImpl.java Mon Dec 22 08:18:57 2014
@@ -32,7 +32,7 @@ import org.apache.webbeans.config.WebBea
  * @param <X> bean class
  * @param <T> producer return type class
  */
-public class ProcessProducerImpl<X,T> implements ProcessProducer<X, T>
+public class ProcessProducerImpl<X,T> extends EventBase implements ProcessProducer<X, T>
 {
     /**Annotated method or annotated field according to producer method or field*/
     private final AnnotatedMember<X> annotateMember;
@@ -52,6 +52,7 @@ public class ProcessProducerImpl<X,T> im
     @Override
     public void addDefinitionError(Throwable t)
     {
+        checkState();
         WebBeansContext.getInstance().getBeanManagerImpl().getErrorStack().pushError(t);
     }
 
@@ -61,6 +62,7 @@ public class ProcessProducerImpl<X,T> im
     @Override
     public AnnotatedMember<X> getAnnotatedMember()
     {
+        checkState();
         return annotateMember;
     }
 
@@ -70,6 +72,7 @@ public class ProcessProducerImpl<X,T> im
     @Override
     public Producer<T> getProducer()
     {
+        checkState();
         return producer;
     }
 
@@ -79,6 +82,7 @@ public class ProcessProducerImpl<X,T> im
     @Override
     public void setProducer(Producer<T> producer)
     {
+        checkState();
         this.producer = producer;
     }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java Mon Dec 22 08:18:57 2014
@@ -53,6 +53,7 @@ public class ProcessProducerMethodImpl<X
     @Override
     public AnnotatedParameter<X> getAnnotatedDisposedParameter()
     {
+        checkState();
         return annotatedDisposedParameter;
     }
 
@@ -62,6 +63,7 @@ public class ProcessProducerMethodImpl<X
     @Override
     public AnnotatedMethod<X> getAnnotatedProducerMethod()
     {
+        checkState();
         return annotatedProducerMethod;
     }
     

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java Mon Dec 22 08:18:57 2014
@@ -56,6 +56,7 @@ public class ProcessSessionBeanImpl<X> e
     @Override
     public String getEjbName()
     {
+        checkState();
         return ejbName;
     }
     
@@ -65,6 +66,7 @@ public class ProcessSessionBeanImpl<X> e
     @Override
     public SessionBeanType getSessionBeanType()
     {
+        checkState();
         return type;
     }
 
@@ -74,6 +76,7 @@ public class ProcessSessionBeanImpl<X> e
     @Override
     public AnnotatedType<Object> getAnnotatedBeanClass()
     {
+        checkState();
         return annotatedBeanClass;
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSyntheticAnnotatedTypeImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSyntheticAnnotatedTypeImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSyntheticAnnotatedTypeImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSyntheticAnnotatedTypeImpl.java Mon Dec 22 08:18:57 2014
@@ -27,7 +27,7 @@ import javax.enterprise.inject.spi.Proce
  *
  * @param <X> bean class info
  */
-public class ProcessSyntheticAnnotatedTypeImpl<X> implements ProcessSyntheticAnnotatedType<X>
+public class ProcessSyntheticAnnotatedTypeImpl<X> extends EventBase implements ProcessSyntheticAnnotatedType<X>
 {
 
     private Extension source;
@@ -55,6 +55,7 @@ public class ProcessSyntheticAnnotatedTy
     @Override
     public Extension getSource()
     {
+        checkState();
         return source;
     }
 
@@ -64,6 +65,7 @@ public class ProcessSyntheticAnnotatedTy
     @Override
     public AnnotatedType<X> getAnnotatedType()
     {
+        checkState();
         return annotatedType;
     }
 
@@ -73,6 +75,7 @@ public class ProcessSyntheticAnnotatedTy
     @Override
     public void setAnnotatedType(AnnotatedType<X> type)
     {
+        checkState();
         annotatedType = type;
         modifiedAnnotatedType = true;
     }
@@ -93,6 +96,7 @@ public class ProcessSyntheticAnnotatedTy
     @Override
     public void veto()
     {
+        checkState();
         veto = true;
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterDeploymentValidationImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterDeploymentValidationImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterDeploymentValidationImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterDeploymentValidationImpl.java Mon Dec 22 08:18:57 2014
@@ -32,18 +32,28 @@ import org.apache.webbeans.container.Bea
 public class AfterDeploymentValidationImpl implements AfterDeploymentValidation
 {
     private final BeanManagerImpl beanManagerImpl;
+    private boolean started;
 
     public AfterDeploymentValidationImpl(BeanManagerImpl beanManagerImpl)
     {
         this.beanManagerImpl = beanManagerImpl;
     }
 
+    public void setStarted()
+    {
+        started = true;
+    }
+
     /**
      * {@inheritDoc}
      */
     @Override
     public void addDeploymentProblem(Throwable t)
     {
+        if (started)
+        {
+            throw new IllegalStateException("Only call container eevnt methods in their lifecycle");
+        }
         beanManagerImpl.getErrorStack().pushError(t);
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterTypeDiscoveryImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterTypeDiscoveryImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterTypeDiscoveryImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterTypeDiscoveryImpl.java Mon Dec 22 08:18:57 2014
@@ -23,12 +23,13 @@ import javax.enterprise.inject.spi.Annot
 import java.util.List;
 
 import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.portable.events.EventBase;
 
 /**
  * OWB fires this event after all AnnotatedTypes from scanned classes
  * got picked up.
  */
-public class AfterTypeDiscoveryImpl implements AfterTypeDiscovery, ExtensionAware
+public class AfterTypeDiscoveryImpl extends EventBase implements AfterTypeDiscovery, ExtensionAware
 {
     private final WebBeansContext webBeansContext;
     private final List<Class<?>> sortedAlternatives;
@@ -53,24 +54,28 @@ public class AfterTypeDiscoveryImpl impl
     @Override
     public List<Class<?>> getAlternatives()
     {
+        checkState();
         return sortedAlternatives;
     }
 
     @Override
     public List<Class<?>> getInterceptors()
     {
+        checkState();
         return sortedInterceptors;
     }
 
     @Override
     public List<Class<?>> getDecorators()
     {
+        checkState();
         return sortedDecorators;
     }
 
     @Override
     public void addAnnotatedType(AnnotatedType<?> type, String id)
     {
+        checkState();
         webBeansContext.getBeanManagerImpl().addAdditionalAnnotatedType(extension, type, id);
         newAt.add(type);
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java Mon Dec 22 08:18:57 2014
@@ -40,19 +40,28 @@ public class BeforeBeanDiscoveryImpl imp
     private BeanManagerImpl beanManager = null;
     private final WebBeansContext webBeansContext;
     private Object extension;
+    private boolean started;
 
     public BeforeBeanDiscoveryImpl(WebBeansContext webBeansContext)
     {
         this.webBeansContext = webBeansContext;
         beanManager = this.webBeansContext.getBeanManagerImpl();
     }
-    
+
+    public void setStarted()
+    {
+        started = true;
+    }
     /**
      * {@inheritDoc}
      */
     @Override
     public void addAnnotatedType(AnnotatedType<?> type)
     {
+        if (started)
+        {
+            throw new IllegalStateException("Only call container eevnt methods in their lifecycle");
+        }
         beanManager.addAdditionalAnnotatedType(extension, type);
     }
 
@@ -62,6 +71,10 @@ public class BeforeBeanDiscoveryImpl imp
     @Override
     public void addQualifier(Class<? extends Annotation> qualifier)
     {
+        if (started)
+        {
+            throw new IllegalStateException("Only call container eevnt methods in their lifecycle");
+        }
         beanManager.addAdditionalQualifier(qualifier);
         
     }
@@ -72,6 +85,10 @@ public class BeforeBeanDiscoveryImpl imp
     @Override
     public void addInterceptorBinding(Class<? extends Annotation> binding, Annotation... bindingDef)
     {
+        if (started)
+        {
+            throw new IllegalStateException("Only call container eevnt methods in their lifecycle");
+        }
         webBeansContext.getInterceptorsManager().addInterceptorBindingType(binding, bindingDef);
     }
 
@@ -81,6 +98,10 @@ public class BeforeBeanDiscoveryImpl imp
     @Override
     public void addScope(Class<? extends Annotation> scope, boolean normal, boolean passivating)
     {
+        if (started)
+        {
+            throw new IllegalStateException("Only call container eevnt methods in their lifecycle");
+        }
         ExternalScope additionalScope = new ExternalScope(scope, normal, passivating); 
         beanManager.addAdditionalScope(additionalScope);
     }
@@ -91,6 +112,10 @@ public class BeforeBeanDiscoveryImpl imp
     @Override
     public void addStereotype(Class<? extends Annotation> stereotype, Annotation... stereotypeDef)
     {
+        if (started)
+        {
+            throw new IllegalStateException("Only call container eevnt methods in their lifecycle");
+        }
         webBeansContext.getAnnotationManager().checkStereoTypeClass(stereotype, stereotypeDef);
         StereoTypeModel model = new StereoTypeModel(webBeansContext, stereotype, stereotypeDef);
         webBeansContext.getStereoTypeManager().addStereoTypeModel(model);
@@ -99,16 +124,26 @@ public class BeforeBeanDiscoveryImpl imp
     /**
      * {@inheritDoc}
      */
+    @Override
     public void addAnnotatedType(AnnotatedType<?> annotatedType, String id)
     {
+        if (started)
+        {
+            throw new IllegalStateException("Only call container eevnt methods in their lifecycle");
+        }
         beanManager.addAdditionalAnnotatedType(extension, annotatedType, id);
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public void addInterceptorBinding(AnnotatedType<? extends Annotation> annotatedType)
     {
+        if (started)
+        {
+            throw new IllegalStateException("Only call container eevnt methods in their lifecycle");
+        }
         // TODO extract inherited types
         webBeansContext.getInterceptorsManager().addInterceptorBindingType(annotatedType);
     }
@@ -116,8 +151,13 @@ public class BeforeBeanDiscoveryImpl imp
     /**
      * {@inheritDoc}
      */
+    @Override
     public void addQualifier(AnnotatedType<? extends Annotation> annotatedType)
     {
+        if (started)
+        {
+            throw new IllegalStateException("Only call container eevnt methods in their lifecycle");
+        }
         beanManager.addAdditionalQualifier(annotatedType.getJavaClass());
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java Mon Dec 22 08:18:57 2014
@@ -25,45 +25,26 @@ import org.apache.webbeans.portable.even
 @SuppressWarnings("unchecked")
 public class GProcessAnnotatedType extends ProcessAnnotatedTypeImpl implements GenericBeanEvent
 {
-    private boolean after = false;
-
     public GProcessAnnotatedType(AnnotatedType annotatedType )
     {
         super(annotatedType);
     }
 
-    public void setAfter()
-    {
-        this.after = true;
-    }
-
     @Override
     public AnnotatedType getAnnotatedType()
     {
-        if (after)
-        {
-            throw new IllegalStateException("Can't call ProcessAnnotatedType.getAnnotatedType() after the event");
-        }
         return super.getAnnotatedType();
     }
 
     @Override
     public void setAnnotatedType(AnnotatedType type)
     {
-        if (after)
-        {
-            throw new IllegalStateException("Can't call ProcessAnnotatedType.setAnnotatedType(at) after the event");
-        }
         super.setAnnotatedType(type);
     }
 
     @Override
     public void veto()
     {
-        if (after)
-        {
-            throw new IllegalStateException("Can't call ProcessAnnotatedType.veto() after the event");
-        }
         super.veto();
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessProducer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessProducer.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessProducer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessProducer.java Mon Dec 22 08:18:57 2014
@@ -35,12 +35,14 @@ public class GProcessProducer extends Pr
     @Override
     public Class<?> getBeanClass()
     {
+        checkState();
         return getAnnotatedMember().getDeclaringType().getJavaClass();
     }
 
     @Override
     public Class<?> getProducerOrObserverType()
     {
+        checkState();
         return ClassUtil.getClazz(getAnnotatedMember().getBaseType());
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Mon Dec 22 08:18:57 2014
@@ -1056,7 +1056,9 @@ public final class WebBeansUtil
         //Fires ProcessProducer
         webBeansContext.getBeanManagerImpl().fireEvent(processProducerEvent, true, AnnotationUtil.EMPTY_ANNOTATION_ARRAY);
         webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessProducer event observers. Look at logs for further details");
-        return processProducerEvent.getProducer();
+        Producer prod = processProducerEvent.getProducer();
+        processProducerEvent.setStarted();
+        return prod;
     }
 
     public void fireProcessProducerMethodBeanEvent(Map<ProducerMethodBean<?>, AnnotatedMethod<?>> annotatedMethods, AnnotatedType<?> annotatedType)
@@ -1087,6 +1089,7 @@ public final class WebBeansUtil
 
             //Fires ProcessProducer
             webBeansContext.getBeanManagerImpl().fireEvent(processProducerMethodEvent, true, AnnotationUtil.EMPTY_ANNOTATION_ARRAY);
+            processProducerMethodEvent.setStarted();
         }
     }
 
@@ -1101,6 +1104,7 @@ public final class WebBeansUtil
 
             //Fires ProcessProducer
             webBeansContext.getBeanManagerImpl().fireEvent(event, true, AnnotationUtil.EMPTY_ANNOTATION_ARRAY);
+            event.setStarted();
         }
     }
 
@@ -1116,6 +1120,7 @@ public final class WebBeansUtil
 
             //Fire ProcessProducer
             webBeansContext.getBeanManagerImpl().fireEvent(processProducerFieldEvent, true, AnnotationUtil.EMPTY_ANNOTATION_ARRAY);
+            processProducerFieldEvent.setStarted();
         }
     }
 
@@ -1808,6 +1813,7 @@ public final class WebBeansUtil
         {
             beanAttributes = ba;
         }
+        event.setStarted();
         if (event.isVeto())
         {
             return null;

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/injectiontarget/ProcessInjectionTargetTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/injectiontarget/ProcessInjectionTargetTest.java?rev=1647256&r1=1647255&r2=1647256&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/injectiontarget/ProcessInjectionTargetTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/injectiontarget/ProcessInjectionTargetTest.java Mon Dec 22 08:18:57 2014
@@ -36,14 +36,13 @@ import org.junit.Test;
 public class ProcessInjectionTargetTest extends AbstractUnitTest
 {
     @Test
-    public void testInjectionTargetIsValid() throws Exception
-    {
+    public void testInjectionTargetIsValid() throws Exception {
         InjectionTargetExtension injectionTargetExtension = new InjectionTargetExtension();
         addExtension(injectionTargetExtension);
         startContainer(SomeBean.class, SomeOtherBean.class);
 
-        Assert.assertNotNull(injectionTargetExtension.getProcessInjectionTarget());
-        InjectionTarget injectionTarget = injectionTargetExtension.getProcessInjectionTarget().getInjectionTarget();
+        Assert.assertNotNull(injectionTargetExtension.getInjectionTarget());
+        InjectionTarget injectionTarget = injectionTargetExtension.getInjectionTarget();
         Assert.assertNotNull(injectionTarget);
         Assert.assertNotNull(injectionTarget.getInjectionPoints());
         Assert.assertEquals(1, injectionTarget.getInjectionPoints().size());
@@ -51,17 +50,16 @@ public class ProcessInjectionTargetTest
 
     public static class InjectionTargetExtension implements Extension
     {
-        private ProcessInjectionTarget processInjectionTarget;
+        private InjectionTarget injectionTarget;
 
 
         public void observePit(@Observes ProcessInjectionTarget<SomeBean> pit)
         {
-            this.processInjectionTarget = pit;
+            this.injectionTarget = pit.getInjectionTarget();
         }
 
-        public ProcessInjectionTarget getProcessInjectionTarget()
-        {
-            return processInjectionTarget;
+        public InjectionTarget getInjectionTarget() {
+            return injectionTarget;
         }
     }