You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2011/03/23 18:10:05 UTC

svn commit: r1084643 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/event/ main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans/newtests/specalization/ test/java/org/apache/webbeans/newtests/specalization/observer/

Author: struberg
Date: Wed Mar 23 17:10:05 2011
New Revision: 1084643

URL: http://svn.apache.org/viewvc?rev=1084643&view=rev
Log:
OWB-550 cleanup specialization and events

We must not send events to disabled beans.

Added:
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java   (with props)
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java?rev=1084643&r1=1084642&r2=1084643&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java Wed Mar 23 17:10:05 2011
@@ -187,12 +187,16 @@ public class ObserverMethodImpl<T> imple
     {
         logger.trace("Notifying with event payload : [{0}]", event);
         
-        AbstractOwbBean<Object> baseComponent = (AbstractOwbBean<Object>) bean;
-        AbstractOwbBean<Object> specializedComponent = null;
+        AbstractOwbBean<Object> component = (AbstractOwbBean<Object>) bean;
+        if (!bean.isEnabled())
+        {
+            return;
+        }
+
         Object object = null;
         
         CreationalContext<Object> creationalContext = null;
-        List<ObserverParams> methodArgsMap = null;
+        List<ObserverParams> methodArgsMap;
         if(annotatedMethod == null)
         {
             methodArgsMap = getMethodArguments(event);
@@ -229,11 +233,10 @@ public class ObserverMethodImpl<T> imple
             else
             {
                 BeanManagerImpl manager = bean.getWebBeansContext().getBeanManagerImpl();
-                specializedComponent = (AbstractOwbBean<Object>)WebBeansUtil.getMostSpecializedBean(manager, baseComponent);        
-                Context context = null;
+                Context context;
                 try
                 {
-                    context = manager.getContext(specializedComponent.getScope());
+                    context = manager.getContext(component.getScope());
                 }
                 catch (ContextNotActiveException cnae)
                 {
@@ -244,14 +247,14 @@ public class ObserverMethodImpl<T> imple
                 
 
                 // on Reception.IF_EXISTS: ignore this bean if a the contextual instance doesn't already exist
-                object = context.get(specializedComponent);
+                object = context.get(component);
 
                 if (ifExist && object == null)
                 {
                     return;
                 }
 
-                creationalContext = manager.createCreationalContext(specializedComponent);
+                creationalContext = manager.createCreationalContext(component);
 
                 if (isPrivateMethod)
                 {
@@ -260,7 +263,7 @@ public class ObserverMethodImpl<T> imple
                     // proxy private methods (thus the invocation on the contextual reference would fail)
                     if (object == null)
                     {
-                        object = context.get(specializedComponent, creationalContext);
+                        object = context.get(component, creationalContext);
                     }
                 }
                 else
@@ -269,7 +272,7 @@ public class ObserverMethodImpl<T> imple
                     // we need to pick the contextual reference because of section 7.2:
                     //  "Invocations of producer, disposer and observer methods by the container are
                     //  business method invocations and are in- tercepted by method interceptors and decorators."
-                    object = manager.getReference(specializedComponent, specializedComponent.getBeanClass(), creationalContext);
+                    object = manager.getReference(component, component.getBeanClass(), creationalContext);
                 }
 
                 if (object != null)
@@ -286,9 +289,9 @@ public class ObserverMethodImpl<T> imple
         finally
         {
             //Destory bean instance
-            if (baseComponent.getScope().equals(Dependent.class) && object != null)
+            if (component.getScope().equals(Dependent.class) && object != null)
             {
-                baseComponent.destroy(object,creationalContext);
+                component.destroy(object, creationalContext);
             }
             
             //Destroy observer method dependent instances

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=1084643&r1=1084642&r2=1084643&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 Wed Mar 23 17:10:05 2011
@@ -135,7 +135,6 @@ import org.apache.webbeans.exception.hel
 import org.apache.webbeans.exception.inject.DefinitionException;
 import org.apache.webbeans.exception.inject.DeploymentException;
 import org.apache.webbeans.exception.inject.InconsistentSpecializationException;
-import org.apache.webbeans.exception.inject.NullableDependencyException;
 import org.apache.webbeans.inject.AlternativesManager;
 import org.apache.webbeans.intercept.InterceptorData;
 import org.apache.webbeans.intercept.InterceptorDataImpl;
@@ -1319,39 +1318,6 @@ public final class WebBeansUtil
         return false;
     }
 
-    /**
-     * Returns true if array contains the StereoType meta annotation
-     *
-     * @return true if array contains the StereoType meta annotation
-     */
-    @Deprecated
-    public static boolean isComponentHasStereoType(OwbBean<?> component)
-    {
-        return WebBeansContext.getInstance().getAnnotationManager().isComponentHasStereoType(component);
-    }
-
-    /**
-     * Returns bean stereotypes.
-     * @param bean bean instance
-     * @return bean stereotypes
-     */
-    @Deprecated
-    public static Annotation[] getComponentStereoTypes(OwbBean<?> bean)
-    {
-        return WebBeansContext.getInstance().getAnnotationManager().getComponentStereoTypes(bean);
-    }
-
-    /**
-     * Returns true if name exists,false otherwise.
-     * @param bean bean instance
-     * @return true if name exists
-     */
-    @Deprecated
-    public static boolean hasNamedOnStereoTypes(OwbBean<?> bean)
-    {
-        return WebBeansContext.getInstance().getAnnotationManager().hasNamedOnStereoTypes(bean);
-    }
-
     public static String getManagedBeanDefaultName(String clazzName)
     {
         Asserts.assertNotNull(clazzName);
@@ -1399,28 +1365,6 @@ public final class WebBeansUtil
     }
 
     /**
-     * Validates that given class obeys stereotype model
-     * defined by the specification.
-     * @param clazz stereotype class
-     */
-    @Deprecated
-    public static void checkStereoTypeClass(Class<? extends Annotation> clazz)
-    {
-        WebBeansContext.getInstance().getAnnotationManager().checkStereoTypeClass(clazz, clazz.getDeclaredAnnotations());
-    }
-
-    /**
-     * Validates that given class obeys stereotype model
-     * defined by the specification.
-     * @param clazz stereotype class
-     */
-    @Deprecated
-    public static void checkStereoTypeClass(Class<? extends Annotation> clazz, Annotation...annotations)
-    {
-        WebBeansContext.getInstance().getAnnotationManager().checkStereoTypeClass(clazz, annotations);
-    }
-
-    /**
      * Return true if a list of beans are directly specialized/extended each other.
      *
      * @param beans, a set of specialized beans.
@@ -1917,21 +1861,6 @@ public final class WebBeansUtil
         return webBeansContext.getSecurityService().doPrivilegedGetDeclaredConstructor(clazz);
     }
 
-    public static void checkNullable(Class<?> type, AbstractOwbBean<?> component)
-    {
-        Asserts.assertNotNull(type, "type parameter can not be null");
-        Asserts.assertNotNull(component, "component parameter can not be null");
-
-        if (type.isPrimitive())
-        {
-            if (component.isNullable())
-            {
-                throw new NullableDependencyException("Injection point for primitive type resolves webbeans component "
-                        + "with return type : " + component.getReturnType().getName() + " with nullable");
-            }
-        }
-    }
-
     /**
      * Configures the producer method specialization.
      *
@@ -1989,18 +1918,6 @@ public final class WebBeansUtil
 
     }
 
-    @Deprecated
-    public static void checkInterceptorResolverParams(Annotation... interceptorBindings)
-    {
-        WebBeansContext.getInstance().getAnnotationManager().checkInterceptorResolverParams(interceptorBindings);
-    }
-
-    @Deprecated
-    public static void checkDecoratorResolverParams(Set<Type> apiTypes, Annotation... qualifiers)
-    {
-        WebBeansContext.getInstance().getAnnotationManager().checkDecoratorResolverParams(apiTypes, qualifiers);
-    }
-
     /**
      * Returns true if instance injection point false otherwise.
      *
@@ -2027,7 +1944,7 @@ public final class WebBeansUtil
             return false;
         }
 
-        Class<?> rawType = null;
+        Class<?> rawType;
 
         if(ClassUtil.isParametrizedType(injectionPoint.getType()))
         {
@@ -2065,7 +1982,7 @@ public final class WebBeansUtil
         Class<?> clazz = injectionTargetEvent.getAnnotatedType().getJavaClass();
         if (webBeansContext.getInterceptorsManager().isInterceptorEnabled(clazz))
         {
-            ManagedBean<T> component = null;
+            ManagedBean<T> component;
 
             webBeansContext.getInterceptorUtil().checkInterceptorConditions(clazz);
             component = defineManagedBean(managedBeanCreator, injectionTargetEvent, false);
@@ -2201,88 +2118,6 @@ public final class WebBeansUtil
         }
     }
 
-    public static boolean isManagedBean(AbstractOwbBean<?> component)
-    {
-        if(component.getWebBeansType().equals(WebBeansType.MANAGED) ||
-                component.getWebBeansType().equals(WebBeansType.INTERCEPTOR) ||
-                component.getWebBeansType().equals(WebBeansType.DECORATOR))
-        {
-            return true;
-        }
-
-        return false;
-    }
-
-    public static boolean isProducerBean(AbstractOwbBean<?> bean)
-    {
-        if(bean.getWebBeansType().equals(WebBeansType.PRODUCERFIELD) ||
-                bean.getWebBeansType().equals(WebBeansType.PRODUCERMETHOD))
-        {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns true if bean is an enterprise bean, false otherwise.
-     * @param bean bean instance
-     * @return true if bean is an enterprise bean
-     */
-    public static boolean isEnterpriseBean(AbstractOwbBean<?> bean)
-    {
-        Asserts.assertNotNull(bean,"Bean is null");
-
-        if(bean.getWebBeansType().equals(WebBeansType.ENTERPRISE))
-        {
-            return true;
-        }
-
-        return false;
-    }
-
-//    public static void addInjectedImplicitEventComponent(InjectionPoint injectionPoint)
-//    {
-//        Type type = injectionPoint.getType();
-//
-//        if(!(type instanceof ParameterizedType))
-//        {
-//            return;
-//        }
-//
-//        Type[] args = new Type[0];
-//
-//        Class<?> clazz = null;
-//        if (type instanceof ParameterizedType)
-//        {
-//            ParameterizedType pt = (ParameterizedType) type;
-//            args = pt.getActualTypeArguments();
-//        }
-//
-//        clazz = (Class<?>)args[0];
-//
-//        Annotation[] qualifiers = new Annotation[injectionPoint.getQualifiers().size()];
-//        qualifiers = injectionPoint.getQualifiers().toArray(qualifiers);
-//
-//        Bean<?> bean = createObservableImplicitComponent(EventImpl.class, clazz, qualifiers);
-//        BeanManagerImpl.getManager().addBean(bean);
-//    }
-
-
-//    public static <T> void addInjectedImplicitInstanceComponent(InjectionPoint injectionPoint)
-//    {
-//        ParameterizedType genericType = (ParameterizedType)injectionPoint.getType();
-//
-//        Class<Instance<T>> clazz = (Class<Instance<T>>)genericType.getRawType();
-//
-//        Annotation[] qualifiers = new Annotation[injectionPoint.getQualifiers().size()];
-//        qualifiers = injectionPoint.getQualifiers().toArray(qualifiers);
-//
-//        Bean<Instance<T>> bean = createInstanceComponent(genericType,clazz, genericType.getActualTypeArguments()[0], qualifiers);
-//        BeanManagerImpl.getManager().addBean(bean);
-//
-//    }
-
     public static Bean<?> getMostSpecializedBean(BeanManager manager, Bean<?> component)
     {
         Set<Bean<?>> beans = manager.getBeans(component.getBeanClass(),
@@ -2436,24 +2271,6 @@ public final class WebBeansUtil
         }
     }
 
-    /**
-     * Returns true if bean instance is an enterprise bean instance
-     * false otherwise.
-     * @param beanInstance bean instance
-     * @return true if bean instance is an enterprise bean instance
-     */
-    public static boolean isBeanHasEnterpriseMarker(Object beanInstance)
-    {
-        Asserts.assertNotNull(beanInstance,"Bean instance is null");
-
-        if(beanInstance instanceof EnterpriseBeanMarker)
-        {
-            return true;
-        }
-
-        return false;
-    }
-
     public static void checkInjectionPointNamedQualifier(InjectionPoint injectionPoint)
     {
         Set<Annotation> qualifierset = injectionPoint.getQualifiers();
@@ -3117,7 +2934,6 @@ public final class WebBeansUtil
         managedBeanCreator.defineDisposalMethods(); //Define disposal method after adding producers
     }
 
-
     @SuppressWarnings("unchecked")
     public <T> ManagedBean<T> defineAbstractDecorator(AnnotatedType<T> type)
     {

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java?rev=1084643&r1=1084642&r2=1084643&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java Wed Mar 23 17:10:05 2011
@@ -32,7 +32,8 @@ import junit.framework.Assert;
 import org.apache.webbeans.newtests.AbstractUnitTest;
 import org.junit.Test;
 
-public class AlternativeSpecializesProducerTest extends AbstractUnitTest {
+public class AlternativeSpecializesProducerTest extends AbstractUnitTest
+{
 
     private static final String PACKAGE_NAME = AlternativeSpecializesProducerTest.class.getPackage().getName();
 
@@ -65,7 +66,6 @@ public class AlternativeSpecializesProdu
         Assert.assertTrue(pen.getID().contains("premium"));
         
         shutDownContainer();
-    	
     }
 
 }

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java?rev=1084643&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java Wed Mar 23 17:10:05 2011
@@ -0,0 +1,39 @@
+/*
+ * 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.newtests.specalization.observer;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.event.Observes;
+import java.io.Serializable;
+
+@ApplicationScoped
+public class BeanA implements Serializable
+{
+    private static final long serialVersionUID = 9096367220631667211L;
+
+    protected void observeTestEvent(@Observes TestEvent testEvent)
+    {
+        testEvent.addInvocation(getBeanName());
+    }
+
+    public String getBeanName()
+    {
+        return getClass().getSimpleName();
+    }
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java?rev=1084643&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java Wed Mar 23 17:10:05 2011
@@ -0,0 +1,36 @@
+/*
+ * 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.newtests.specalization.observer;
+
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Specializes;
+
+@Specializes
+@ApplicationScoped
+public class BeanB extends BeanA
+{
+    private static final long serialVersionUID = 821164664338581947L;
+
+    @Override
+    public String getBeanName()
+    {
+        return super.getBeanName() + ":[specialize]";
+    }
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java?rev=1084643&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java Wed Mar 23 17:10:05 2011
@@ -0,0 +1,53 @@
+/*
+ * 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.newtests.specalization.observer;
+
+import org.apache.webbeans.newtests.AbstractUnitTest;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.enterprise.inject.spi.Bean;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Set;
+
+
+public class ObserverTest extends AbstractUnitTest
+{
+
+    @Test
+    public void testObserverMethodsInSpecializedBeans()
+    {
+        Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+        beanClasses.add(BeanA.class);
+        beanClasses.add(BeanB.class);
+        startContainer(beanClasses, null);
+
+        Set<Bean<?>> beans = getBeanManager().getBeans(BeanA.class);
+        Assert.assertEquals(1, beans.size());
+
+        TestEvent testEvent = new TestEvent();
+        getBeanManager().fireEvent(testEvent);
+
+        Assert.assertEquals(1, testEvent.getCalledObservers().size());
+        Assert.assertTrue(testEvent.getCalledObservers().iterator().next().endsWith(":[specialize]"));
+
+        shutDownContainer();
+    }
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java?rev=1084643&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java Wed Mar 23 17:10:05 2011
@@ -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.newtests.specalization.observer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestEvent
+{
+    private List<String> calledObserverNames = new ArrayList<String>();
+
+    public void addInvocation(String observerName)
+    {
+        this.calledObserverNames.add(observerName);
+    }
+
+    public List<String> getCalledObservers()
+    {
+        return calledObserverNames;
+    }
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native