[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