[webbeans-commits] Webbeans SVN: r2939 - in ri/trunk/impl/src/main/java/org/jboss/webbeans: event and 2 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Wed Jul 1 10:13:22 EDT 2009


Author: pete.muir at jboss.org
Date: 2009-07-01 10:13:21 -0400 (Wed, 01 Jul 2009)
New Revision: 2939

Added:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Observers.java
Removed:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventManager.java
Modified:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventObserver.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeObserverResolver.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeResolver.java
Log:
Remove EventManager and tidy up TypeSafeResolver

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java	2009-07-01 13:45:45 UTC (rev 2938)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java	2009-07-01 14:13:21 UTC (rev 2939)
@@ -73,9 +73,9 @@
 import org.jboss.webbeans.bootstrap.api.ServiceRegistry;
 import org.jboss.webbeans.context.ApplicationContext;
 import org.jboss.webbeans.context.CreationalContextImpl;
+import org.jboss.webbeans.context.DependentContext;
 import org.jboss.webbeans.el.Namespace;
 import org.jboss.webbeans.el.WebBeansELResolverImpl;
-import org.jboss.webbeans.event.EventManager;
 import org.jboss.webbeans.event.EventObserver;
 import org.jboss.webbeans.event.ObserverImpl;
 import org.jboss.webbeans.introspector.WBAnnotated;
@@ -91,6 +91,7 @@
 import org.jboss.webbeans.resolution.TypeSafeObserverResolver;
 import org.jboss.webbeans.resolution.TypeSafeResolver;
 import org.jboss.webbeans.util.Beans;
+import org.jboss.webbeans.util.Observers;
 import org.jboss.webbeans.util.Proxies;
 import org.jboss.webbeans.util.Reflections;
 import org.jboss.webbeans.util.collections.multi.ConcurrentListHashMultiMap;
@@ -200,7 +201,6 @@
     * Activity scoped services 
     * *************************
     */
-   private transient final EventManager eventManager;
    private transient final TypeSafeResolver<Bean<?>> beanResolver;
    private transient final TypeSafeResolver<DecoratorBean<?>> decoratorResolver;
    private transient final TypeSafeResolver<EventObserver<?>> observerResolver;
@@ -215,7 +215,7 @@
    private transient final List<Bean<?>> beans;
    private transient final List<DecoratorBean<?>> decorators;
    private final transient Namespace rootNamespace;
-   private final transient List<EventObserver<?>> registeredObservers;
+   private final transient List<EventObserver<?>> observers;
    private final transient Set<BeanManagerImpl> childActivities;
    private final Integer id;
 
@@ -260,7 +260,7 @@
       beans.addAll(parentManager.getBeans());
       
       List<EventObserver<?>> registeredObservers = new CopyOnWriteArrayList<EventObserver<?>>();
-      registeredObservers.addAll(parentManager.getRegisteredObservers());
+      registeredObservers.addAll(parentManager.getObservers());
       Namespace rootNamespace = new Namespace(parentManager.getRootNamespace());
 
       return new BeanManagerImpl(
@@ -297,7 +297,7 @@
       this.contexts = contexts;
       this.currentActivities = currentActivities;
       this.specializedBeans = specializedBeans;
-      this.registeredObservers = registeredObservers;
+      this.observers = registeredObservers;
       setEnabledDeploymentTypes(enabledDeploymentTypes);
       setEnabledDecoratorClasses(enabledDecoratorClasses);
       this.rootNamespace = rootNamespace;
@@ -308,7 +308,6 @@
       this.decoratorResolver = new TypeSafeDecoratorResolver(this, decorators);
       this.observerResolver = new TypeSafeObserverResolver(this, registeredObservers);
       this.nameBasedResolver = new NameBasedResolver(this, beans);
-      this.eventManager = new EventManager(this);
       this.webbeansELResolver = new WebBeansELResolverImpl(this);
       this.childActivities = new CopyOnWriteArraySet<BeanManagerImpl>();
       this.currentInjectionPoint = new ThreadLocal<Stack<InjectionPoint>>()
@@ -599,7 +598,7 @@
    @Deprecated
    public void addObserver(Observer<?> observer, Annotation... bindings)
    {
-      addObserver(observer, eventManager.getTypeOfObserver(observer), bindings);
+      addObserver(observer, Observers.getTypeOfObserver(observer), bindings);
    }
 
    /**
@@ -626,7 +625,9 @@
    public void addObserver(Observer<?> observer, Type eventType, Annotation... bindings)
    {
       checkEventType(eventType);
-      this.eventManager.addObserver(observer, eventType, bindings);
+      EventObserver<?> eventObserver = EventObserver.of(observer, eventType, this, bindings);
+      observers.add(eventObserver);
+      log.trace("Added observer " + observer + " observing event type " + eventType);
       for (BeanManagerImpl childActivity : childActivities)
       {
          childActivity.addObserver(observer, eventType, bindings);
@@ -665,11 +666,20 @@
          }
       }
 
-      // Get the observers for this event. Although resolveObservers is
-      // parameterized, this method is not, so we have to use
-      // Observer<Object> for observers.
       Set<Observer<Object>> observers = resolveObservers(event, bindings);
-      eventManager.notifyObservers(observers, event);
+      try
+      {
+         DependentContext.instance().setActive(true);
+         for (Observer<Object> observer : observers)
+         {
+            observer.notify(event);
+         }
+      }
+      finally
+      {
+         // TODO This breaks SE shutdown, also we need to tidy up how dependent context is activated....
+         DependentContext.instance().setActive(false);
+      }
    }
 
    /**
@@ -1038,9 +1048,9 @@
       return id;
    }
    
-   public List<EventObserver<?>> getRegisteredObservers()
+   public List<EventObserver<?>> getObservers()
    {
-      return registeredObservers;
+      return observers;
    }
    
    public Namespace getRootNamespace()

Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventManager.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventManager.java	2009-07-01 13:45:45 UTC (rev 2938)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventManager.java	2009-07-01 14:13:21 UTC (rev 2939)
@@ -1,115 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.event;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.Set;
-
-import javax.enterprise.event.Observer;
-
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.context.DependentContext;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
-
-/**
- * The event bus is where observers are registered and events are fired.
- * 
- * @author David Allen
- * 
- */
-public class EventManager
-{
-   private static Log log = Logging.getLog(EventManager.class);
-   
-   private final BeanManagerImpl manager;
-
-
-   /**
-    * Initializes a new instance of the EventManager.
-    */
-   public EventManager(BeanManagerImpl manager)
-   {
-      this.manager = manager;
-   }
-
-   /**
-    * Adds an observer to the event bus so that it receives event notifications.
-    * 
-    * @param observer The observer that should receive events
-    * @param eventType The event type the observer is interested in
-    * @param bindings The bindings the observer wants to filter on
-    */
-   public <T> void addObserver(Observer<T> observer, Type eventType, Annotation... bindings)
-   {
-      EventObserver<T> eventObserver = new EventObserver<T>(observer, eventType, manager, bindings);
-      manager.getRegisteredObservers().add(eventObserver);
-      log.debug("Added observer " + observer + " observing event type " + eventType);
-   }
-
-   /**
-    * Iterates over the interested observers. If an observer is transactional
-    * and there is a transaction currently in progress, the event is deferred.
-    * In other cases, the observer is notified immediately.
-    * 
-    * @param observers The interested observers
-    * @param event The event type
-    */
-   public <T> void notifyObservers(Set<Observer<T>> observers, T event)
-   {
-      try
-      {
-         DependentContext.instance().setActive(true);
-         for (Observer<T> observer : observers)
-         {
-            observer.notify(event);
-         }
-      }
-      finally
-      {
-         // TODO This breaks SE shutdown, also we need to tidy up how dependent context is activated....
-         //DependentContext.instance().setActive(false);
-      }
-   }
-
-   @Override
-   public String toString()
-   {
-      StringBuilder buffer = new StringBuilder();
-      buffer.append("Event manager\n");
-      buffer.append(manager.getRegisteredObservers().toString());
-      return buffer.toString();
-   }
-
-   public Type getTypeOfObserver(Observer<?> observer)
-   {
-      for (Type type : observer.getClass().getGenericInterfaces())
-      {
-         if (type instanceof ParameterizedType)
-         {
-            ParameterizedType ptype = (ParameterizedType) type;
-            if (Observer.class.isAssignableFrom((Class<?>) ptype.getRawType()))
-            {
-               return ptype.getActualTypeArguments()[0];
-            }
-         }
-      }
-      throw new RuntimeException("Cannot find observer's event type: " + observer);
-   }
-}

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventObserver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventObserver.java	2009-07-01 13:45:45 UTC (rev 2938)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventObserver.java	2009-07-01 14:13:21 UTC (rev 2939)
@@ -50,6 +50,11 @@
    private final Set<Annotation> eventBindings;
    private final Observer<T> observer;
    private final BeanManagerImpl manager;
+   
+   public static <T> EventObserver<T> of(Observer<T> observer, final Type eventType, BeanManagerImpl manager, final Annotation[] eventBindings)
+   {
+      return new EventObserver<T>(observer, eventType, manager, eventBindings);
+   }
 
    /**
     * Constructs a new wrapper for an observer.
@@ -58,7 +63,7 @@
     * @param eventType The class of event being observed
     * @param eventBindings The array of annotation event bindings, if any
     */
-   public EventObserver(final Observer<T> observer, final Type eventType, BeanManagerImpl manager, final Annotation... eventBindings)
+   private EventObserver(final Observer<T> observer, final Type eventType, BeanManagerImpl manager, final Annotation... eventBindings)
    {
       this.observer = observer;
       this.eventType = eventType;

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java	2009-07-01 13:45:45 UTC (rev 2938)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java	2009-07-01 14:13:21 UTC (rev 2939)
@@ -16,11 +16,14 @@
  */
 package org.jboss.webbeans.resolution;
 
+import java.util.HashSet;
 import java.util.Set;
 
 import javax.enterprise.inject.spi.Bean;
 
 import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.bean.standard.EventBean;
+import org.jboss.webbeans.bean.standard.InstanceBean;
 import org.jboss.webbeans.util.Beans;
 import org.jboss.webbeans.util.Reflections;
 
@@ -32,6 +35,14 @@
 {
 
    private final BeanManagerImpl manager;
+   public static final Set<ResolvableTransformer> TRANSFORMERS;
+   
+   static
+   {
+      TRANSFORMERS = new HashSet<ResolvableTransformer>();
+      TRANSFORMERS.add(EventBean.TRANSFORMER);
+      TRANSFORMERS.add(InstanceBean.TRANSFORMER);
+   }
 
    public TypeSafeBeanResolver(BeanManagerImpl manager, Iterable<T> beans)
    {
@@ -59,4 +70,16 @@
       return Beans.retainHighestPrecedenceBeans(matched, manager.getEnabledDeploymentTypes());
    }
 
+   @Override
+   protected Iterable<ResolvableTransformer> getTransformers()
+   {
+      return TRANSFORMERS;
+   }
+
+   @Override
+   protected Set<T> sortResult(Set<T> matched)
+   {
+      return matched;
+   }
+
 }

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeObserverResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeObserverResolver.java	2009-07-01 13:45:45 UTC (rev 2938)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeObserverResolver.java	2009-07-01 14:13:21 UTC (rev 2939)
@@ -16,6 +16,9 @@
  */
 package org.jboss.webbeans.resolution;
 
+import java.util.Collections;
+import java.util.Set;
+
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.event.EventObserver;
 import org.jboss.webbeans.util.Beans;
@@ -50,4 +53,22 @@
       return manager;
    }
 
+   @Override
+   protected Set<EventObserver<?>> filterResult(Set<EventObserver<?>> matched)
+   {
+      return matched;
+   }
+
+   @Override
+   protected Iterable<ResolvableTransformer> getTransformers()
+   {
+      return Collections.emptySet();
+   }
+
+   @Override
+   protected Set<EventObserver<?>> sortResult(Set<EventObserver<?>> matched)
+   {
+      return matched;
+   }
+
 }

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeResolver.java	2009-07-01 13:45:45 UTC (rev 2938)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeResolver.java	2009-07-01 14:13:21 UTC (rev 2939)
@@ -21,8 +21,6 @@
 import java.util.Set;
 import java.util.concurrent.Callable;
 
-import org.jboss.webbeans.bean.standard.EventBean;
-import org.jboss.webbeans.bean.standard.InstanceBean;
 import org.jboss.webbeans.util.collections.ConcurrentCache;
 
 /**
@@ -72,9 +70,6 @@
    
    // The beans to search
    private final Iterable<? extends T> iterable;
-   
-   // Annotation transformers used to mutate annotations during resolution
-   private final Set<ResolvableTransformer> transformers;
 
    /**
     * Constructor
@@ -84,9 +79,7 @@
    {
       this.iterable = allBeans;
       this.resolved = new ConcurrentCache<MatchingResolvable, Set<T>>();
-      this.transformers = new HashSet<ResolvableTransformer>();
-      transformers.add(EventBean.TRANSFORMER);
-      transformers.add(InstanceBean.TRANSFORMER);
+      
    }
 
    /**
@@ -119,25 +112,20 @@
       return Collections.unmodifiableSet(beans);
    }
    
-   private Resolvable transform(Resolvable resolvable)
+   protected Resolvable transform(Resolvable resolvable)
    {
-      for (ResolvableTransformer transformer : transformers)
+      for (ResolvableTransformer transformer : getTransformers())
       {
          resolvable = transformer.transform(resolvable);
       }
       return resolvable;
    }
    
-   protected Set<T> filterResult(Set<T> matched)
-   {
-      //matchedBeans = Beans.retainHighestPrecedenceBeans(matchedBeans, manager.getEnabledDeploymentTypes());
-      return matched;
-   }
+   protected abstract Iterable<ResolvableTransformer> getTransformers();
+   
+   protected abstract Set<T> filterResult(Set<T> matched);
 
-   protected Set<T> sortResult(Set<T> matched)
-   {
-      return matched;
-   }
+   protected abstract Set<T> sortResult(Set<T> matched);
 
    /**
     * Gets the matching beans for binding criteria from a list of beans

Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Observers.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Observers.java	                        (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Observers.java	2009-07-01 14:13:21 UTC (rev 2939)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.webbeans.util;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+
+import javax.enterprise.event.Observer;
+
+/**
+ * @author pmuir
+ *
+ */
+public class Observers
+{
+
+   public static Type getTypeOfObserver(Observer<?> observer)
+   {
+      for (Type type : observer.getClass().getGenericInterfaces())
+      {
+         if (type instanceof ParameterizedType)
+         {
+            ParameterizedType ptype = (ParameterizedType) type;
+            if (Observer.class.isAssignableFrom((Class<?>) ptype.getRawType()))
+            {
+               return ptype.getActualTypeArguments()[0];
+            }
+         }
+      }
+      throw new RuntimeException("Cannot find observer's event type: " + observer);
+   }
+   
+}


Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Observers.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the weld-commits mailing list