Skip to content

Commit

Permalink
Remove EventManager and tidy up TypeSafeResolver
Browse files Browse the repository at this point in the history
git-svn-id: http://anonsvn.jboss.org/repos/weld/ri/trunk@2939 1c488680-804c-0410-94cd-c6b725194a0e
  • Loading branch information
pmuir committed Jul 1, 2009
1 parent f97123f commit d550173
Show file tree
Hide file tree
Showing 7 changed files with 128 additions and 149 deletions.
38 changes: 24 additions & 14 deletions impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -200,7 +201,6 @@ public String toString()
* 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;
Expand All @@ -215,7 +215,7 @@ public String toString()
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;

Expand Down Expand Up @@ -260,7 +260,7 @@ public static BeanManagerImpl newChildManager(BeanManagerImpl parentManager)
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(
Expand Down Expand Up @@ -297,7 +297,7 @@ private BeanManagerImpl(ServiceRegistry serviceRegistry, List<Bean<?>> beans, Li
this.contexts = contexts;
this.currentActivities = currentActivities;
this.specializedBeans = specializedBeans;
this.registeredObservers = registeredObservers;
this.observers = registeredObservers;
setEnabledDeploymentTypes(enabledDeploymentTypes);
setEnabledDecoratorClasses(enabledDecoratorClasses);
this.rootNamespace = rootNamespace;
Expand All @@ -308,7 +308,6 @@ private BeanManagerImpl(ServiceRegistry serviceRegistry, List<Bean<?>> beans, Li
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>>()
Expand Down Expand Up @@ -599,7 +598,7 @@ public void addContext(Context context)
@Deprecated
public void addObserver(Observer<?> observer, Annotation... bindings)
{
addObserver(observer, eventManager.getTypeOfObserver(observer), bindings);
addObserver(observer, Observers.getTypeOfObserver(observer), bindings);
}

/**
Expand All @@ -626,7 +625,9 @@ public <T> void addObserver(ObserverImpl<T> observer)
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);
Expand Down Expand Up @@ -665,11 +666,20 @@ public void fireEvent(Object event, Annotation... bindings)
}
}

// 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);
}
}

/**
Expand Down Expand Up @@ -1038,9 +1048,9 @@ public Integer getId()
return id;
}

public List<EventObserver<?>> getRegisteredObservers()
public List<EventObserver<?>> getObservers()
{
return registeredObservers;
return observers;
}

public Namespace getRootNamespace()
Expand Down
115 changes: 0 additions & 115 deletions impl/src/main/java/org/jboss/webbeans/event/EventManager.java

This file was deleted.

Expand Up @@ -50,6 +50,11 @@ public class EventObserver<T>
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.
Expand All @@ -58,7 +63,7 @@ public class EventObserver<T>
* @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;
Expand Down
Expand Up @@ -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;

Expand All @@ -32,6 +35,14 @@ public class TypeSafeBeanResolver<T extends Bean<?>> extends TypeSafeResolver<T>
{

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)
{
Expand Down Expand Up @@ -59,4 +70,16 @@ protected Set<T> filterResult(Set<T> matched)
return Beans.retainHighestPrecedenceBeans(matched, manager.getEnabledDeploymentTypes());
}

@Override
protected Iterable<ResolvableTransformer> getTransformers()
{
return TRANSFORMERS;
}

@Override
protected Set<T> sortResult(Set<T> matched)
{
return matched;
}

}
Expand Up @@ -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;
Expand Down Expand Up @@ -50,4 +53,22 @@ public BeanManagerImpl getManager()
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;
}

}
Expand Up @@ -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;

/**
Expand Down Expand Up @@ -72,9 +70,6 @@ public boolean equals(Object obj)

// The beans to search
private final Iterable<? extends T> iterable;

// Annotation transformers used to mutate annotations during resolution
private final Set<ResolvableTransformer> transformers;

/**
* Constructor
Expand All @@ -84,9 +79,7 @@ public TypeSafeResolver(Iterable<? extends T> allBeans)
{
this.iterable = allBeans;
this.resolved = new ConcurrentCache<MatchingResolvable, Set<T>>();
this.transformers = new HashSet<ResolvableTransformer>();
transformers.add(EventBean.TRANSFORMER);
transformers.add(InstanceBean.TRANSFORMER);

}

/**
Expand Down Expand Up @@ -119,25 +112,20 @@ public Set<T> call() throws Exception
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
Expand Down

0 comments on commit d550173

Please sign in to comment.