[webbeans-commits] Webbeans SVN: r332 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/bean and 3 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Wed Nov 19 22:20:09 EST 2008
Author: pete.muir at jboss.org
Date: 2008-11-19 22:20:08 -0500 (Wed, 19 Nov 2008)
New Revision: 332
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/MetaDataCache.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/Resolver.java
Removed:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/MergedStereotypes.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/ContextMap.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeploymentTypeTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java
Log:
Lots of tiding up and javadoc
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -10,6 +10,7 @@
import javax.webbeans.AmbiguousDependencyException;
import javax.webbeans.BindingType;
import javax.webbeans.ContextNotActiveException;
+import javax.webbeans.Dependent;
import javax.webbeans.DeploymentException;
import javax.webbeans.DuplicateBindingTypeException;
import javax.webbeans.Observer;
@@ -41,12 +42,21 @@
import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
import org.jboss.webbeans.util.Reflections;
+/**
+ * Implementation of the Web Beans Manager.
+ *
+ * Essentially a singleton for registering Beans, Contexts, Observers,
+ * Interceptors etc. as well as providing resolution
+ *
+ * @author Pete Muir
+ *
+ */
public class ManagerImpl implements Manager
{
private List<Class<? extends Annotation>> enabledDeploymentTypes;
- private ModelManager modelManager;
+ private MetaDataCache metaDataCache;
private EventBus eventBus;
- private ResolutionManager resolutionManager;
+ private Resolver resolver;
private ContextMap contextMap;
private ProxyPool proxyPool;
private List<Bean<?>> beans;
@@ -55,27 +65,34 @@
public ManagerImpl()
{
- this.modelManager = new ModelManager();
+ this.metaDataCache = new MetaDataCache();
this.beans = new CopyOnWriteArrayList<Bean<?>>();
this.eventBus = new EventBus();
- this.resolutionManager = new ResolutionManager(this);
+ this.resolver = new Resolver(this);
this.proxyPool = new ProxyPool(this);
this.decorators = new HashSet<Decorator>();
this.interceptors = new HashSet<Interceptor>();
- initEnabledDeploymentTypes(null);
+ initEnabledDeploymentTypes();
initContexts();
- addStandardBeans();
+ initStandardBeans();
}
- protected void addStandardBeans()
+ /**
+ * Add any beans provided by the Web Beans RI to the registry
+ */
+ protected void initStandardBeans()
{
addBean( new SimpleBean<DefaultEnterpriseBeanLookup>( DefaultEnterpriseBeanLookup.class, this ) );
}
+ /**
+ * Set up the enabled deployment types, if none are specified by the user,
+ * the default @Production and @Standard are used
+ */
protected void initEnabledDeploymentTypes(Class<? extends Annotation> ... enabledDeploymentTypes)
{
this.enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
- if (enabledDeploymentTypes == null)
+ if (enabledDeploymentTypes.length == 0)
{
this.enabledDeploymentTypes.add(0, Standard.class);
this.enabledDeploymentTypes.add(1, Production.class);
@@ -93,6 +110,11 @@
}
}
+ /**
+ * Set up the contexts. By default, the built in contexts are set up, but a
+ * mock ManagerImpl may override this method to allow tests to set up
+ * other contexts
+ */
protected void initContexts(Context... contexts)
{
this.contextMap = new ContextMap();
@@ -112,63 +134,78 @@
}
}
+ /**
+ * @see javax.webbeans.manager.Manager#addBean(javax.webbeans.manager.Bean)
+ */
public Manager addBean(Bean<?> bean)
{
if (beans.contains(bean))
{
return this;
}
- getResolutionManager().clear();
+ resolver.clear();
beans.add(bean);
return this;
}
-// public <T> void removeObserver(Observer<T> observer)
-// {
-//
-// }
-
+ /**
+ * Resolve the disposal method for the given producer method
+ * @param <T>
+ * @param apiType
+ * @param bindingTypes
+ * @return
+ */
public <T> Set<AnnotatedMethod<Object>> resolveDisposalMethods(Class<T> apiType, Annotation... bindingTypes)
{
return new HashSet<AnnotatedMethod<Object>>();
}
+ /**
+ * @see javax.webbeans.manager.Manager#resolveObservers(java.lang.Object, java.lang.annotation.Annotation[])
+ */
public <T> Set<Observer<T>> resolveObservers(T event, Annotation... bindings)
{
return (Set<Observer<T>>) eventBus.getObservers(event, bindings);
}
+ /**
+ * A strongly ordered list of enabled deployment types
+ */
public List<Class<? extends Annotation>> getEnabledDeploymentTypes()
{
return enabledDeploymentTypes;
}
-
- public ModelManager getModelManager()
+
+ public MetaDataCache getMetaDataCache()
{
- return this.modelManager;
+ return this.metaDataCache;
}
+ /**
+ * @see javax.webbeans.manager.Manager#resolveByType(java.lang.Class, java.lang.annotation.Annotation[])
+ */
public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... bindingTypes)
{
return resolveByType(new AnnotatedClassImpl<T>(type, type, bindingTypes), bindingTypes);
}
+ /**
+ * @see javax.webbeans.manager.Manager#resolveByType(javax.webbeans.TypeLiteral, java.lang.annotation.Annotation[])
+ */
public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> type, Annotation... bindingTypes)
{
return resolveByType(new AnnotatedClassImpl<T>(type.getRawType(), type.getType(), bindingTypes), bindingTypes);
}
+ /**
+ * Check the resolution request is valid, and then ask the resolver to
+ * perform the resolution
+ */
public <T> Set<Bean<T>> resolveByType(AnnotatedItem<T, ?> element, Annotation... bindingTypes)
{
- checkBindingAnnotations(element, bindingTypes);
- return getResolutionManager().get(element);
- }
-
- private void checkBindingAnnotations(AnnotatedItem<?, ?> element, Annotation... bindingTypes)
- {
for (Annotation annotation : element.getAnnotations())
{
- if (!modelManager.getBindingTypeModel(annotation.annotationType()).isValid())
+ if (!metaDataCache.getBindingTypeModel(annotation.annotationType()).isValid())
{
throw new IllegalArgumentException("Not a binding type " + annotation);
}
@@ -177,13 +214,9 @@
{
throw new DuplicateBindingTypeException(element.toString());
}
+ return resolver.get(element);
}
- public ResolutionManager getResolutionManager()
- {
- return resolutionManager;
- }
-
/**
* Wraps a collection of beans into a thread safe list.
* Since this overwrites any existing list of beans in the manager,
@@ -192,16 +225,22 @@
*/
public Manager setBeans(Set<AbstractBean<?, ?>> beans) {
this.beans = new CopyOnWriteArrayList<Bean<?>>(beans);
- getResolutionManager().clear();
- addStandardBeans();
+ resolver.clear();
+ initStandardBeans();
return this;
}
+ /**
+ * The beans registered with the Web Bean manager
+ */
public List<Bean<?>> getBeans()
{
return beans;
}
+ /**
+ * @see javax.webbeans.manager.Manager#addContext(javax.webbeans.manager.Context)
+ */
public Manager addContext(Context context)
{
List<Context> contexts = contextMap.get(context.getScopeType());
@@ -214,24 +253,36 @@
return this;
}
+ /**
+ * @see javax.webbeans.manager.Manager#addDecorator(javax.webbeans.manager.Decorator)
+ */
public Manager addDecorator(Decorator decorator)
{
decorators.add(decorator);
return this;
}
+ /**
+ * @see javax.webbeans.manager.Manager#addInterceptor(javax.webbeans.manager.Interceptor)
+ */
public Manager addInterceptor(Interceptor interceptor)
{
interceptors.add(interceptor);
return this;
}
+ /**
+ * @see javax.webbeans.manager.Manager#addObserver(javax.webbeans.Observer, java.lang.Class, java.lang.annotation.Annotation[])
+ */
public <T> Manager addObserver(Observer<T> observer, Class<T> eventType, Annotation... bindings)
{
this.eventBus.addObserver(observer, eventType, bindings);
return this;
}
+ /**
+ * @see javax.webbeans.manager.Manager#addObserver(javax.webbeans.Observer, javax.webbeans.TypeLiteral, java.lang.annotation.Annotation[])
+ */
public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> eventType, Annotation... bindings)
{
// TODO Using the eventType TypeLiteral<T>, the Class<T> object must be
@@ -240,6 +291,9 @@
return this;
}
+ /**
+ * @see javax.webbeans.manager.Manager#fireEvent(java.lang.Object, java.lang.annotation.Annotation[])
+ */
public void fireEvent(Object event, Annotation... bindings)
{
// Check the event object for template parameters which are not allowed by
@@ -255,6 +309,9 @@
this.eventBus.notifyObservers(observers, event);
}
+ /**
+ * @see javax.webbeans.manager.Manager#getContext(java.lang.Class)
+ */
public Context getContext(Class<? extends Annotation> scopeType)
{
List<Context> contexts = contextMap.get(scopeType);
@@ -281,12 +338,15 @@
return activeContexts.get(0);
}
+ /**
+ * @see javax.webbeans.manager.Manager#getInstance(javax.webbeans.manager.Bean)
+ */
public <T> T getInstance(Bean<T> bean)
{
try
{
- contextMap.getDependentContext().setActive(true);
- if (getModelManager().getScopeModel(bean.getScopeType()).isNormal())
+ contextMap.getBuiltInContext(Dependent.class).setActive(true);
+ if (getMetaDataCache().getScopeModel(bean.getScopeType()).isNormal())
{
return (T) proxyPool.getClientProxy(bean);
}
@@ -297,10 +357,13 @@
}
finally
{
- contextMap.getDependentContext().setActive(false);
+ contextMap.getBuiltInContext(Dependent.class).setActive(false);
}
}
+ /**
+ * @see javax.webbeans.manager.Manager#getInstanceByName(java.lang.String)
+ */
public Object getInstanceByName(String name)
{
Set<Bean<?>> beans = resolveByName(name);
@@ -318,16 +381,27 @@
}
}
+ /**
+ * @see javax.webbeans.manager.Manager#getInstanceByType(java.lang.Class, java.lang.annotation.Annotation[])
+ */
public <T> T getInstanceByType(Class<T> type, Annotation... bindingTypes)
{
return getInstanceByType(new AnnotatedClassImpl<T>(type, type, bindingTypes), bindingTypes);
}
+ /**
+ * @see javax.webbeans.manager.Manager#getInstanceByType(javax.webbeans.TypeLiteral, java.lang.annotation.Annotation[])
+ */
public <T> T getInstanceByType(TypeLiteral<T> type, Annotation... bindingTypes)
{
return getInstanceByType(new AnnotatedClassImpl<T>(type.getRawType(), type.getType(), bindingTypes), bindingTypes);
}
+ /**
+ * Resolve an instance, verify that the resolved bean can be instantiated,
+ * and return
+ *
+ */
public <T> T getInstanceByType(AnnotatedItem<T, ?> element, Annotation... bindingTypes)
{
Set<Bean<T>> beans = resolveByType(element, bindingTypes);
@@ -342,7 +416,7 @@
else
{
Bean<T> bean = beans.iterator().next();
- if (getModelManager().getScopeModel(bean.getScopeType()).isNormal() && !element.isProxyable())
+ if (getMetaDataCache().getScopeModel(bean.getScopeType()).isNormal() && !element.isProxyable())
{
throw new UnproxyableDependencyException(element + "Unable to proxy");
}
@@ -353,12 +427,18 @@
}
}
+ /**
+ * @see javax.webbeans.manager.Manager#removeObserver(javax.webbeans.Observer, java.lang.Class, java.lang.annotation.Annotation[])
+ */
public <T> Manager removeObserver(Observer<T> observer, Class<T> eventType, Annotation... bindings)
{
this.eventBus.removeObserver(observer, eventType, bindings);
return this;
}
+ /**
+ * @see javax.webbeans.manager.Manager#removeObserver(javax.webbeans.Observer, javax.webbeans.TypeLiteral, java.lang.annotation.Annotation[])
+ */
public <T> Manager removeObserver(Observer<T> observer, TypeLiteral<T> eventType, Annotation... bindings)
{
// TODO The Class<T> for the event type must be retrieved from the
@@ -367,21 +447,39 @@
return this;
}
+ /**
+ * @see javax.webbeans.manager.Manager#resolveByName(java.lang.String)
+ */
public Set<Bean<?>> resolveByName(String name)
{
- return getResolutionManager().get(name);
+ return resolver.get(name);
}
+ /**
+ * @see javax.webbeans.manager.Manager#resolveDecorators(java.util.Set, java.lang.annotation.Annotation[])
+ */
public List<Decorator> resolveDecorators(Set<Class<?>> types, Annotation... bindingTypes)
{
// TODO Auto-generated method stub
return null;
}
+ /**
+ * @see javax.webbeans.manager.Manager#resolveInterceptors(javax.webbeans.manager.InterceptionType, java.lang.annotation.Annotation[])
+ */
public List<Interceptor> resolveInterceptors(InterceptionType type, Annotation... interceptorBindings)
{
// TODO Auto-generated method stub
return null;
}
+
+ /**
+ * Get the web bean resolver
+ * @return
+ */
+ public Resolver getResolver()
+ {
+ return resolver;
+ }
}
Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/MetaDataCache.java (from rev 315, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/MetaDataCache.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/MetaDataCache.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -0,0 +1,149 @@
+package org.jboss.webbeans;
+
+import java.lang.annotation.Annotation;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.webbeans.ejb.EjbMetaData;
+import org.jboss.webbeans.model.AnnotationModel;
+import org.jboss.webbeans.model.BindingTypeModel;
+import org.jboss.webbeans.model.ScopeModel;
+import org.jboss.webbeans.model.StereotypeModel;
+
+import com.google.common.collect.ForwardingMap;
+
+public class MetaDataCache
+{
+
+ @SuppressWarnings("unchecked")
+ private abstract class AnnotationModelMap<T extends AnnotationModel<?>> extends ForwardingMap<Class<? extends Annotation>, T>
+ {
+
+ Map<Class<? extends Annotation>, T> delegate;
+
+ public AnnotationModelMap()
+ {
+ delegate = new HashMap<Class<? extends Annotation>, T>();
+ }
+
+ public <S extends Annotation> T putIfAbsent(Class<S> key)
+ {
+ if (!containsKey(key))
+ {
+ T model = createAnnotationModel(key);
+ super.put(key, model);
+ return model;
+ }
+ return (T) super.get(key);
+ }
+
+ protected abstract <S extends Annotation> T createAnnotationModel(Class<S> type);
+
+ @Override
+ protected Map<Class<? extends Annotation>, T> delegate()
+ {
+ return delegate;
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private class ScopeModelMap extends AnnotationModelMap<ScopeModel<?>>
+ {
+
+ @Override
+ public <S extends Annotation> ScopeModel<S> putIfAbsent(Class<S> key)
+ {
+ return (ScopeModel<S>) super.putIfAbsent(key);
+ }
+
+ @Override
+ protected <S extends Annotation> ScopeModel<?> createAnnotationModel(Class<S> type)
+ {
+ return new ScopeModel<S>(type);
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private class BindingTypeModelMap extends AnnotationModelMap<BindingTypeModel<?>>
+ {
+
+ @Override
+ public <S extends Annotation> BindingTypeModel<S> putIfAbsent(Class<S> key)
+ {
+ return (BindingTypeModel<S>) super.putIfAbsent(key);
+ }
+
+ @Override
+ protected <S extends Annotation> BindingTypeModel<?> createAnnotationModel(Class<S> type)
+ {
+ return new BindingTypeModel<S>(type);
+ }
+
+ }
+
+ private class EjbMetaDataMap extends ForwardingMap<Class<?>, EjbMetaData<?>>
+ {
+
+ private Map<Class<?>, EjbMetaData<?>> delegate;
+
+ public EjbMetaDataMap()
+ {
+ delegate = new HashMap<Class<?>, EjbMetaData<?>>();
+ }
+
+ @Override
+ protected Map<Class<?>, EjbMetaData<?>> delegate()
+ {
+ return delegate;
+ }
+
+ public <T> EjbMetaData<T> putIfAbsent(Class<T> key)
+ {
+ if (!containsKey(key))
+ {
+ EjbMetaData<T> ejbMetaData = new EjbMetaData<T>(key);
+ super.put(key, ejbMetaData);
+ return ejbMetaData;
+ }
+ return (EjbMetaData<T>) super.get(key);
+ }
+
+ }
+
+ private Map<Class<? extends Annotation>, StereotypeModel<?>> stereotypes = new HashMap<Class<? extends Annotation>, StereotypeModel<?>>();
+
+ private ScopeModelMap scopes = new ScopeModelMap();
+
+ private BindingTypeModelMap bindingTypes = new BindingTypeModelMap();
+
+ private EjbMetaDataMap ejbMetaDataMap = new EjbMetaDataMap();
+
+
+ public void addStereotype(StereotypeModel<?> stereotype)
+ {
+ stereotypes.put(stereotype.getType(), stereotype);
+ }
+
+ public StereotypeModel<?> getStereotype(Class<? extends Annotation> annotationType)
+ {
+ return stereotypes.get(annotationType);
+ }
+
+ public <T extends Annotation> ScopeModel<T> getScopeModel(Class<T> scopeType)
+ {
+ return scopes.putIfAbsent(scopeType);
+ }
+
+ public <T extends Annotation> BindingTypeModel<T> getBindingTypeModel(Class<T> bindingType)
+ {
+ return bindingTypes.putIfAbsent(bindingType);
+ }
+
+ public <T> EjbMetaData<T> getEjbMetaData(Class<T> clazz)
+ {
+ return ejbMetaDataMap.putIfAbsent(clazz);
+ }
+
+}
Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -1,149 +0,0 @@
-package org.jboss.webbeans;
-
-import java.lang.annotation.Annotation;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.jboss.webbeans.ejb.EjbMetaData;
-import org.jboss.webbeans.model.AnnotationModel;
-import org.jboss.webbeans.model.BindingTypeModel;
-import org.jboss.webbeans.model.ScopeModel;
-import org.jboss.webbeans.model.StereotypeModel;
-
-import com.google.common.collect.ForwardingMap;
-
-public class ModelManager
-{
-
- @SuppressWarnings("unchecked")
- private abstract class AnnotationModelMap<T extends AnnotationModel<?>> extends ForwardingMap<Class<? extends Annotation>, T>
- {
-
- Map<Class<? extends Annotation>, T> delegate;
-
- public AnnotationModelMap()
- {
- delegate = new HashMap<Class<? extends Annotation>, T>();
- }
-
- public <S extends Annotation> T putIfAbsent(Class<S> key)
- {
- if (!containsKey(key))
- {
- T model = createAnnotationModel(key);
- super.put(key, model);
- return model;
- }
- return (T) super.get(key);
- }
-
- protected abstract <S extends Annotation> T createAnnotationModel(Class<S> type);
-
- @Override
- protected Map<Class<? extends Annotation>, T> delegate()
- {
- return delegate;
- }
-
- }
-
- @SuppressWarnings("unchecked")
- private class ScopeModelMap extends AnnotationModelMap<ScopeModel<?>>
- {
-
- @Override
- public <S extends Annotation> ScopeModel<S> putIfAbsent(Class<S> key)
- {
- return (ScopeModel<S>) super.putIfAbsent(key);
- }
-
- @Override
- protected <S extends Annotation> ScopeModel<?> createAnnotationModel(Class<S> type)
- {
- return new ScopeModel<S>(type);
- }
-
- }
-
- @SuppressWarnings("unchecked")
- private class BindingTypeModelMap extends AnnotationModelMap<BindingTypeModel<?>>
- {
-
- @Override
- public <S extends Annotation> BindingTypeModel<S> putIfAbsent(Class<S> key)
- {
- return (BindingTypeModel<S>) super.putIfAbsent(key);
- }
-
- @Override
- protected <S extends Annotation> BindingTypeModel<?> createAnnotationModel(Class<S> type)
- {
- return new BindingTypeModel<S>(type);
- }
-
- }
-
- private class EjbMetaDataMap extends ForwardingMap<Class<?>, EjbMetaData<?>>
- {
-
- private Map<Class<?>, EjbMetaData<?>> delegate;
-
- public EjbMetaDataMap()
- {
- delegate = new HashMap<Class<?>, EjbMetaData<?>>();
- }
-
- @Override
- protected Map<Class<?>, EjbMetaData<?>> delegate()
- {
- return delegate;
- }
-
- public <T> EjbMetaData<T> putIfAbsent(Class<T> key)
- {
- if (!containsKey(key))
- {
- EjbMetaData<T> ejbMetaData = new EjbMetaData<T>(key);
- super.put(key, ejbMetaData);
- return ejbMetaData;
- }
- return (EjbMetaData<T>) super.get(key);
- }
-
- }
-
- private Map<Class<? extends Annotation>, StereotypeModel<?>> stereotypes = new HashMap<Class<? extends Annotation>, StereotypeModel<?>>();
-
- private ScopeModelMap scopes = new ScopeModelMap();
-
- private BindingTypeModelMap bindingTypes = new BindingTypeModelMap();
-
- private EjbMetaDataMap ejbMetaDataMap = new EjbMetaDataMap();
-
-
- public void addStereotype(StereotypeModel<?> stereotype)
- {
- stereotypes.put(stereotype.getType(), stereotype);
- }
-
- public StereotypeModel<?> getStereotype(Class<? extends Annotation> annotationType)
- {
- return stereotypes.get(annotationType);
- }
-
- public <T extends Annotation> ScopeModel<T> getScopeModel(Class<T> scopeType)
- {
- return scopes.putIfAbsent(scopeType);
- }
-
- public <T extends Annotation> BindingTypeModel<T> getBindingTypeModel(Class<T> bindingType)
- {
- return bindingTypes.putIfAbsent(bindingType);
- }
-
- public <T> EjbMetaData<T> getEjbMetaData(Class<T> clazz)
- {
- return ejbMetaDataMap.putIfAbsent(clazz);
- }
-
-}
Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -1,267 +0,0 @@
-package org.jboss.webbeans;
-
-import java.lang.annotation.Annotation;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import javax.webbeans.NullableDependencyException;
-import javax.webbeans.manager.Bean;
-
-import org.jboss.webbeans.introspector.AnnotatedItem;
-import org.jboss.webbeans.introspector.ForwardingAnnotatedItem;
-import org.jboss.webbeans.model.BindingTypeModel;
-import org.jboss.webbeans.util.ListComparator;
-
-import com.google.common.collect.ForwardingMap;
-
-public class ResolutionManager
-{
-
- private abstract class ResolvableAnnotatedItem<T, S> extends ForwardingAnnotatedItem<T, S>
- {
-
- @Override
- public boolean equals(Object other)
- {
- // TODO Do we need to check the other direction too?
- if (other instanceof AnnotatedItem)
- {
- AnnotatedItem<?, ?> that = (AnnotatedItem<?, ?>) other;
- return delegate().isAssignableFrom(that) &&
- that.getBindingTypes().equals(this.getBindingTypes());
- }
- else
- {
- return false;
- }
- }
-
- @Override
- public int hashCode()
- {
- return delegate().hashCode();
- }
-
- }
-
- // TODO Why can't we generify Set?
-
- @SuppressWarnings("unchecked")
- private class AnnotatedItemMap extends ForwardingMap<AnnotatedItem<?, ?>, Set>
- {
-
- private Map<AnnotatedItem<?, ?>, Set> delegate;
-
- public AnnotatedItemMap()
- {
- delegate = new HashMap<AnnotatedItem<?, ?>, Set>();
- }
-
- @SuppressWarnings("unchecked")
- public <T> Set<Bean<T>> get(AnnotatedItem<T, ?> key)
- {
- return (Set<Bean<T>>) super.get(key);
- }
-
- @Override
- protected Map<AnnotatedItem<?, ?>, Set> delegate()
- {
- return delegate;
- }
-
- }
-
-
- private AnnotatedItemMap resolvedInjectionPoints;
- private Set<AnnotatedItem<?, ?>> injectionPoints;
-
- private Map<String, Set<Bean<?>>> resolvedNames;
-
- private ManagerImpl manager;
-
- public ResolutionManager(ManagerImpl manager)
- {
- this.injectionPoints = new HashSet<AnnotatedItem<?,?>>();
- this.resolvedInjectionPoints = new AnnotatedItemMap();
- this.manager = manager;
- }
-
- public <T, S> void addInjectionPoint(final AnnotatedItem<T, S> element)
- {
- injectionPoints.add(element);
- }
-
- private <T, S> void registerInjectionPoint(final AnnotatedItem<T, S> element)
- {
- Set<Bean<?>> beans = retainHighestPrecedenceBeans(getMatchingBeans(element, manager.getBeans(), manager.getModelManager()), manager.getEnabledDeploymentTypes());
- if (element.getType().isPrimitive())
- {
- for (Bean<?> bean : beans)
- {
- if (bean.isNullable())
- {
- throw new NullableDependencyException("Primitive injection points resolves to nullable web bean");
- }
- }
- }
- resolvedInjectionPoints.put(new ResolvableAnnotatedItem<T, S>()
- {
-
- @Override
- public AnnotatedItem<T, S> delegate()
- {
- return element;
- }
-
- }, beans);
- }
-
- public void clear()
- {
- resolvedInjectionPoints = new AnnotatedItemMap();
- resolvedNames = new HashMap<String, Set<Bean<?>>>();
- }
-
- public void resolveInjectionPoints()
- {
- for (AnnotatedItem<?, ?> injectable : injectionPoints)
- {
- registerInjectionPoint(injectable);
- }
- }
-
- public <T, S> Set<Bean<T>> get(final AnnotatedItem<T, S> key)
- {
- Set<Bean<T>> beans = new HashSet<Bean<T>>();
-
- AnnotatedItem<T, S> element = new ResolvableAnnotatedItem<T, S>()
- {
-
- @Override
- public AnnotatedItem<T, S> delegate()
- {
- return key;
- }
-
- };
-
- // TODO We don't need this I think
- if (element.getType().equals(Object.class))
- {
- // TODO Fix this cast
- beans = new HashSet<Bean<T>>((List) manager.getBeans());
- }
- else
- {
- if (!resolvedInjectionPoints.containsKey(element))
- {
- registerInjectionPoint(element);
- }
- beans = resolvedInjectionPoints.get(element);
- }
- return Collections.unmodifiableSet(beans);
- }
-
- public Set<Bean<?>> get(String name)
- {
- Set<Bean<?>> beans;
- if (resolvedNames.containsKey(name))
- {
- beans = resolvedNames.get(name);
- }
- else
- {
- beans = new HashSet<Bean<?>>();
- for (Bean<?> bean : manager.getBeans())
- {
- if ( (bean.getName() == null && name == null) || (bean.getName() != null && bean.getName().equals(name)))
- {
- beans.add(bean);
- }
- }
- beans = retainHighestPrecedenceBeans(beans, manager.getEnabledDeploymentTypes());
- resolvedNames.put(name, beans);
-
- }
- return Collections.unmodifiableSet(beans);
- }
-
- private static Set<Bean<?>> retainHighestPrecedenceBeans(Set<Bean<?>> beans, List<Class<? extends Annotation>> enabledDeploymentTypes)
- {
- if (beans.size() > 0)
- {
- SortedSet<Class<? extends Annotation>> possibleDeploymentTypes = new TreeSet<Class<? extends Annotation>>(new ListComparator<Class<? extends Annotation>>(enabledDeploymentTypes));
- for (Bean<?> bean : beans)
- {
- possibleDeploymentTypes.add(bean.getDeploymentType());
- }
- possibleDeploymentTypes.retainAll(enabledDeploymentTypes);
- Set<Bean<?>> trimmed = new HashSet<Bean<?>>();
- if (possibleDeploymentTypes.size() > 0)
- {
- Class<? extends Annotation> highestPrecedencePossibleDeploymentType = possibleDeploymentTypes.last();
-
- for (Bean<?> bean : beans)
- {
- if (bean.getDeploymentType().equals(highestPrecedencePossibleDeploymentType))
- {
- trimmed.add(bean);
- }
- }
- }
- return trimmed;
- }
- else
- {
- return beans;
- }
- }
-
- private static Set<Bean<?>> getMatchingBeans(AnnotatedItem<?, ?> element, List<Bean<?>> beans, ModelManager modelManager)
- {
- Set<Bean<?>> resolvedBeans = new HashSet<Bean<?>>();
- for (Bean<?> bean : beans)
- {
- if (element.isAssignableFrom(bean.getTypes()) && containsAllBindingBindingTypes(element, bean.getBindingTypes(), modelManager))
- {
- resolvedBeans.add(bean);
- }
- }
- return resolvedBeans;
- }
-
- private static boolean containsAllBindingBindingTypes(AnnotatedItem<?, ?> element, Set<Annotation> bindingTypes, ModelManager modelManager)
- {
- for (Annotation bindingType : element.getBindingTypes())
- {
- BindingTypeModel<?> bindingTypeModel = modelManager.getBindingTypeModel(bindingType.annotationType());
- if (bindingTypeModel.getNonBindingTypes().size() > 0)
- {
- boolean matchFound = false;
- for (Annotation otherBindingType : bindingTypes)
- {
- if (bindingTypeModel.isEqual(bindingType, otherBindingType))
- {
- matchFound = true;
- }
- }
- if (!matchFound)
- {
- return false;
- }
- }
- else if (!bindingTypes.contains(bindingType))
- {
- return false;
- }
- }
- return true;
- }
-
-}
Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/Resolver.java (from rev 315, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/Resolver.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/Resolver.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -0,0 +1,297 @@
+package org.jboss.webbeans;
+
+import java.lang.annotation.Annotation;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import javax.webbeans.NullableDependencyException;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.introspector.AnnotatedItem;
+import org.jboss.webbeans.introspector.ForwardingAnnotatedItem;
+import org.jboss.webbeans.model.BindingTypeModel;
+import org.jboss.webbeans.util.ListComparator;
+
+import com.google.common.collect.ForwardingMap;
+
+/**
+ * Implementation of Web Beans type safe and name based bean resolution
+ * @author Pete Muir
+ *
+ */
+public class Resolver
+{
+
+ /**
+ * Extension of an element which bases equality not only on type, but also
+ * on binding type
+ *
+ */
+ private abstract class ResolvableAnnotatedItem<T, S> extends ForwardingAnnotatedItem<T, S>
+ {
+
+ @Override
+ public boolean equals(Object other)
+ {
+ // TODO Do we need to check the other direction too?
+ if (other instanceof AnnotatedItem)
+ {
+ AnnotatedItem<?, ?> that = (AnnotatedItem<?, ?>) other;
+ return delegate().isAssignableFrom(that) &&
+ that.getBindingTypes().equals(this.getBindingTypes());
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return delegate().hashCode();
+ }
+
+ }
+
+ // TODO Why can't we generify Set?
+
+ /**
+ * Type safe map for caching annotation metadata
+ */
+ @SuppressWarnings("unchecked")
+ private class AnnotatedItemMap extends ForwardingMap<AnnotatedItem<?, ?>, Set>
+ {
+
+ private Map<AnnotatedItem<?, ?>, Set> delegate;
+
+ public AnnotatedItemMap()
+ {
+ delegate = new HashMap<AnnotatedItem<?, ?>, Set>();
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> Set<Bean<T>> get(AnnotatedItem<T, ?> key)
+ {
+ return (Set<Bean<T>>) super.get(key);
+ }
+
+ @Override
+ protected Map<AnnotatedItem<?, ?>, Set> delegate()
+ {
+ return delegate;
+ }
+
+ }
+
+ private AnnotatedItemMap resolvedInjectionPoints;
+ private Set<AnnotatedItem<?, ?>> injectionPoints;
+
+ private Map<String, Set<Bean<?>>> resolvedNames;
+
+ private ManagerImpl manager;
+
+ public Resolver(ManagerImpl manager)
+ {
+ this.manager = manager;
+ this.injectionPoints = new HashSet<AnnotatedItem<?,?>>();
+ this.resolvedInjectionPoints = new AnnotatedItemMap();
+ }
+
+ /**
+ * Add multiple injection points for later resolving using
+ * {@link #registerInjectionPoint(AnnotatedItem)}. Useful during bootstrap.
+ */
+ public void addInjectionPoints(Collection<AnnotatedItem<?, ?>> elements)
+ {
+ injectionPoints.addAll(elements);
+ }
+
+ private <T, S> void registerInjectionPoint(final AnnotatedItem<T, S> element)
+ {
+ Set<Bean<?>> beans = retainHighestPrecedenceBeans(getMatchingBeans(element, manager.getBeans(), manager.getMetaDataCache()), manager.getEnabledDeploymentTypes());
+ if (element.getType().isPrimitive())
+ {
+ for (Bean<?> bean : beans)
+ {
+ if (bean.isNullable())
+ {
+ throw new NullableDependencyException("Primitive injection points resolves to nullable web bean");
+ }
+ }
+ }
+ resolvedInjectionPoints.put(new ResolvableAnnotatedItem<T, S>()
+ {
+
+ @Override
+ public AnnotatedItem<T, S> delegate()
+ {
+ return element;
+ }
+
+ }, beans);
+ }
+
+ /**
+ * Reset all cached injection points. You must reset all cached injection
+ * points when you add a bean to the manager
+ */
+ public void clear()
+ {
+ resolvedInjectionPoints = new AnnotatedItemMap();
+ resolvedNames = new HashMap<String, Set<Bean<?>>>();
+ }
+
+ /**
+ * Resolve all injection points added using {@link #addInjectionPoints(Collection)}
+ */
+ public void resolveInjectionPoints()
+ {
+ for (AnnotatedItem<?, ?> injectable : injectionPoints)
+ {
+ registerInjectionPoint(injectable);
+ }
+ }
+
+ /**
+ * Get the possible beans for the given element
+ */
+ public <T, S> Set<Bean<T>> get(final AnnotatedItem<T, S> key)
+ {
+ Set<Bean<T>> beans = new HashSet<Bean<T>>();
+
+ AnnotatedItem<T, S> element = new ResolvableAnnotatedItem<T, S>()
+ {
+
+ @Override
+ public AnnotatedItem<T, S> delegate()
+ {
+ return key;
+ }
+
+ };
+
+ // TODO We don't need this I think
+ if (element.getType().equals(Object.class))
+ {
+ // TODO Fix this cast
+ beans = new HashSet<Bean<T>>((List) manager.getBeans());
+ }
+ else
+ {
+ if (!resolvedInjectionPoints.containsKey(element))
+ {
+ registerInjectionPoint(element);
+ }
+ beans = resolvedInjectionPoints.get(element);
+ }
+ return Collections.unmodifiableSet(beans);
+ }
+
+ /**
+ * Get the possible beans for the given name
+ */
+ public Set<Bean<?>> get(String name)
+ {
+ Set<Bean<?>> beans;
+ if (resolvedNames.containsKey(name))
+ {
+ beans = resolvedNames.get(name);
+ }
+ else
+ {
+ beans = new HashSet<Bean<?>>();
+ for (Bean<?> bean : manager.getBeans())
+ {
+ if ( (bean.getName() == null && name == null) || (bean.getName() != null && bean.getName().equals(name)))
+ {
+ beans.add(bean);
+ }
+ }
+ beans = retainHighestPrecedenceBeans(beans, manager.getEnabledDeploymentTypes());
+ resolvedNames.put(name, beans);
+
+ }
+ return Collections.unmodifiableSet(beans);
+ }
+
+ private static Set<Bean<?>> retainHighestPrecedenceBeans(Set<Bean<?>> beans, List<Class<? extends Annotation>> enabledDeploymentTypes)
+ {
+ if (beans.size() > 0)
+ {
+ SortedSet<Class<? extends Annotation>> possibleDeploymentTypes = new TreeSet<Class<? extends Annotation>>(new ListComparator<Class<? extends Annotation>>(enabledDeploymentTypes));
+ for (Bean<?> bean : beans)
+ {
+ possibleDeploymentTypes.add(bean.getDeploymentType());
+ }
+ possibleDeploymentTypes.retainAll(enabledDeploymentTypes);
+ Set<Bean<?>> trimmed = new HashSet<Bean<?>>();
+ if (possibleDeploymentTypes.size() > 0)
+ {
+ Class<? extends Annotation> highestPrecedencePossibleDeploymentType = possibleDeploymentTypes.last();
+
+ for (Bean<?> bean : beans)
+ {
+ if (bean.getDeploymentType().equals(highestPrecedencePossibleDeploymentType))
+ {
+ trimmed.add(bean);
+ }
+ }
+ }
+ return trimmed;
+ }
+ else
+ {
+ return beans;
+ }
+ }
+
+ private static Set<Bean<?>> getMatchingBeans(AnnotatedItem<?, ?> element, List<Bean<?>> beans, MetaDataCache metaDataCache)
+ {
+ Set<Bean<?>> resolvedBeans = new HashSet<Bean<?>>();
+ for (Bean<?> bean : beans)
+ {
+ if (element.isAssignableFrom(bean.getTypes()) && containsAllBindingBindingTypes(element, bean.getBindingTypes(), metaDataCache))
+ {
+ resolvedBeans.add(bean);
+ }
+ }
+ return resolvedBeans;
+ }
+
+ private static boolean containsAllBindingBindingTypes(AnnotatedItem<?, ?> element, Set<Annotation> bindingTypes, MetaDataCache metaDataCache)
+ {
+ for (Annotation bindingType : element.getBindingTypes())
+ {
+ BindingTypeModel<?> bindingTypeModel = metaDataCache.getBindingTypeModel(bindingType.annotationType());
+ if (bindingTypeModel.getNonBindingTypes().size() > 0)
+ {
+ boolean matchFound = false;
+ for (Annotation otherBindingType : bindingTypes)
+ {
+ if (bindingTypeModel.isEqual(bindingType, otherBindingType))
+ {
+ matchFound = true;
+ }
+ }
+ if (!matchFound)
+ {
+ return false;
+ }
+ }
+ else if (!bindingTypes.contains(bindingType))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/Resolver.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -33,7 +33,7 @@
public abstract class AbstractBean<T, E> extends Bean<T>
{
-
+
private static Set<Class<?>> STANDARD_WEB_BEAN_CLASSES = new HashSet<Class<?>>(Arrays.asList(DefaultEnterpriseBeanLookup.class));
public static Class<? extends Annotation> getDeploymentType(List<Class<? extends Annotation>> enabledDeploymentTypes, Map<Class<? extends Annotation>, Annotation> possibleDeploymentTypes)
@@ -42,7 +42,7 @@
{
if (possibleDeploymentTypes.containsKey((enabledDeploymentTypes.get(i))))
{
- return enabledDeploymentTypes.get(i);
+ return enabledDeploymentTypes.get(i);
}
}
return null;
@@ -79,7 +79,7 @@
mergedStereotypes = new MergedStereotypes<T, E>(getAnnotatedItem().getMetaAnnotations(Stereotype.class), manager);
initType();
initPrimitive();
- log.debug("Building Web Bean bean metadata for " + getType());
+ log.debug("Building Web Bean bean metadata for " + getType());
initBindingTypes();
initName();
initDeploymentType();
@@ -107,7 +107,7 @@
this.bindingTypes.addAll(bindingTypes);
log.trace("Using binding types " + this.bindingTypes + " specified in XML and specialized type");
}
- else
+ else
{
log.trace("Using binding types " + this.bindingTypes + " specified in XML");
}
@@ -134,7 +134,7 @@
return;
}
}
-
+
protected void initDeploymentType()
{
if (isDefinedInXml())
@@ -147,7 +147,7 @@
if (xmlDeploymentTypes.size() == 1)
{
- this.deploymentType = xmlDeploymentTypes.iterator().next().annotationType();
+ this.deploymentType = xmlDeploymentTypes.iterator().next().annotationType();
log.trace("Deployment type " + deploymentType + " specified in XML");
return;
}
@@ -179,10 +179,10 @@
log.trace("Using default @Production deployment type");
return;
}
-
+
protected void initInjectionPoints()
{
- injectionPoints = new HashSet<AnnotatedItem<?,?>>();
+ injectionPoints = new HashSet<AnnotatedItem<?, ?>>();
if (removeMethod != null)
{
for (AnnotatedParameter<?> injectable : removeMethod.getParameters())
@@ -191,14 +191,14 @@
}
}
}
-
+
protected void initName()
{
boolean beanNameDefaulted = false;
if (isDefinedInXml())
{
boolean xmlSpecialization = false;
- if (xmlSpecialization)
+ if (xmlSpecialization)
{
throw new DefinitionException("Name specified for specialized bean (declared in XML)");
}
@@ -251,12 +251,12 @@
return;
}
}
-
+
protected void initPrimitive()
{
this.primitive = Reflections.isPrimitive(getType());
}
-
+
/**
* Return the scope of the bean
*/
@@ -337,12 +337,12 @@
}
protected abstract AnnotatedItem<T, E> getAnnotatedItem();
-
+
public Set<Annotation> getBindingTypes()
{
return bindingTypes;
}
-
+
protected Type getDeclaredBeanType()
{
if (declaredBeanType == null)
@@ -359,7 +359,7 @@
}
return declaredBeanType;
}
-
+
protected abstract String getDefaultName();
public Class<? extends Annotation> getDeploymentType()
@@ -387,24 +387,22 @@
{
return name;
}
-
+
public AnnotatedMethod<?> getRemoveMethod()
{
return removeMethod;
}
-
+
public Class<? extends Annotation> getScopeType()
{
return scopeType;
}
- protected AbstractBean<? extends T, E> getSpecializedType()
+ protected AbstractBean<? extends T, E> getSpecializedType()
{
throw new UnsupportedOperationException();
}
-
-
public Class<T> getType()
{
return type;
@@ -435,7 +433,7 @@
{
return this.getAnnotatedItem().isAssignableFrom(annotatedItem);
}
-
+
protected boolean isDefinedInXml()
{
return false;
@@ -458,5 +456,5 @@
// TODO Auto-generated method stub
return false;
}
-
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -109,14 +109,14 @@
}
if (!isDefinedInXml())
{
- if (!getManager().getModelManager().getEjbMetaData(getAnnotatedItem().getSuperclass().getType()).isEjb())
+ if (!getManager().getMetaDataCache().getEjbMetaData(getAnnotatedItem().getSuperclass().getType()).isEjb())
{
throw new DefinitionException("Annotation defined specializing EJB must have EJB superclass");
}
}
else
{
- if (getManager().getModelManager().getEjbMetaData(getAnnotatedItem().getSuperclass().getType()).isEjb())
+ if (getManager().getMetaDataCache().getEjbMetaData(getAnnotatedItem().getSuperclass().getType()).isEjb())
{
throw new DefinitionException("XML defined specializing EJB must have annotation defined EJB implementation");
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/MergedStereotypes.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/MergedStereotypes.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/MergedStereotypes.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -37,7 +37,7 @@
for (Annotation stereotypeAnnotation : stereotypeAnnotations)
{
// Retrieve and merge all metadata from stereotypes
- StereotypeModel<?> stereotype = manager.getModelManager().getStereotype(stereotypeAnnotation.annotationType());
+ StereotypeModel<?> stereotype = manager.getMetaDataCache().getStereotype(stereotypeAnnotation.annotationType());
if (stereotype == null)
{
throw new IllegalStateException("Stereotype " + stereotypeAnnotation + " not registered with container");
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -9,11 +9,10 @@
import java.util.List;
import java.util.Set;
-import javax.webbeans.manager.Bean;
-
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.bean.AbstractBean;
import org.jboss.webbeans.bean.AbstractClassBean;
+import org.jboss.webbeans.bean.ProducerMethodBean;
import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
import org.jboss.webbeans.introspector.AnnotatedMethod;
import org.jboss.webbeans.log.LogProvider;
@@ -96,6 +95,7 @@
{
Set<AbstractBean<?, ?>> beans = createBeans(classes);
manager.setBeans(beans);
+ manager.getResolver().resolveInjectionPoints();
}
/**
@@ -114,7 +114,7 @@
for (Class<?> clazz : classes)
{
AbstractClassBean<?> bean;
- if (manager.getModelManager().getEjbMetaData(clazz).isEjb())
+ if (manager.getMetaDataCache().getEjbMetaData(clazz).isEjb())
{
bean = createEnterpriseBean(clazz, manager);
}
@@ -123,9 +123,12 @@
bean = createSimpleBean(clazz, manager);
}
beans.add(bean);
+ manager.getResolver().addInjectionPoints(bean.getInjectionPoints());
for (AnnotatedMethod<Object> producerMethod : bean.getProducerMethods())
{
- beans.add(createProducerMethodBean(producerMethod.getType(), producerMethod, manager, bean));
+ ProducerMethodBean<?> producerMethodBean = createProducerMethodBean(producerMethod.getType(), producerMethod, manager, bean);
+ beans.add(producerMethodBean);
+ manager.getResolver().addInjectionPoints(producerMethodBean.getInjectionPoints());
}
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/ContextMap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/ContextMap.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/ContextMap.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -5,7 +5,6 @@
import java.util.List;
import java.util.Map;
-import javax.webbeans.Dependent;
import javax.webbeans.manager.Context;
import com.google.common.collect.ForwardingMap;
@@ -26,9 +25,9 @@
return (List<Context>) super.get(key);
}
- public DependentContext getDependentContext()
+ public DependentContext getBuiltInContext(Class<? extends Annotation> scopeType)
{
- return (DependentContext) get(Dependent.class).iterator().next();
+ return (DependentContext) get(scopeType).iterator().next();
}
@Override
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -47,14 +47,14 @@
protected void addStereotypes()
{
- manager.getModelManager().addStereotype(new StereotypeModel<Decorator>(Decorator.class));
- manager.getModelManager().addStereotype(new StereotypeModel<Interceptor>(Interceptor.class));
- manager.getModelManager().addStereotype(new StereotypeModel<AnimalStereotype>(AnimalStereotype.class));
- manager.getModelManager().addStereotype(new StereotypeModel<HornedMammalStereotype>(HornedMammalStereotype.class));
- manager.getModelManager().addStereotype(new StereotypeModel<MammalStereotype>(MammalStereotype.class));
- manager.getModelManager().addStereotype(new StereotypeModel<FishStereotype>(FishStereotype.class));
- manager.getModelManager().addStereotype(new StereotypeModel<RiverFishStereotype>(RiverFishStereotype.class));
- manager.getModelManager().addStereotype(new StereotypeModel<RequestScopedAnimalStereotype>(RequestScopedAnimalStereotype.class));
+ manager.getMetaDataCache().addStereotype(new StereotypeModel<Decorator>(Decorator.class));
+ manager.getMetaDataCache().addStereotype(new StereotypeModel<Interceptor>(Interceptor.class));
+ manager.getMetaDataCache().addStereotype(new StereotypeModel<AnimalStereotype>(AnimalStereotype.class));
+ manager.getMetaDataCache().addStereotype(new StereotypeModel<HornedMammalStereotype>(HornedMammalStereotype.class));
+ manager.getMetaDataCache().addStereotype(new StereotypeModel<MammalStereotype>(MammalStereotype.class));
+ manager.getMetaDataCache().addStereotype(new StereotypeModel<FishStereotype>(FishStereotype.class));
+ manager.getMetaDataCache().addStereotype(new StereotypeModel<RiverFishStereotype>(RiverFishStereotype.class));
+ manager.getMetaDataCache().addStereotype(new StereotypeModel<RequestScopedAnimalStereotype>(RequestScopedAnimalStereotype.class));
}
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeploymentTypeTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeploymentTypeTest.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeploymentTypeTest.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -115,7 +115,7 @@
@Test @SpecAssertion(section={"2.5.6", "2.5.7"})
public void testDefaultEnabledDeploymentTypes()
{
- manager.setEnabledDeploymentTypes(null);
+ manager.setEnabledDeploymentTypes();
assert manager.getEnabledDeploymentTypes().size() == 2;
assert manager.getEnabledDeploymentTypes().get(0).equals(Standard.class);
assert manager.getEnabledDeploymentTypes().get(1).equals(Production.class);
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -5,7 +5,6 @@
import javax.webbeans.AmbiguousDependencyException;
import javax.webbeans.manager.Bean;
-import org.jboss.webbeans.ResolutionManager;
import org.jboss.webbeans.introspector.AnnotatedClass;
import org.jboss.webbeans.introspector.AnnotatedField;
import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
@@ -35,9 +34,6 @@
manager.addBean(codBean);
manager.addBean(salmonBean);
- ResolutionManager resolutionManager = manager.getResolutionManager();
- resolutionManager.addInjectionPoint(whiteScottishFishField);
-
assert manager.getInstanceByName("foo") == null;
}
@@ -52,9 +48,6 @@
manager.addBean(salmonBean);
manager.addBean(soleBean);
- ResolutionManager resolutionManager = manager.getResolutionManager();
- resolutionManager.addInjectionPoint(whiteScottishFishField);
-
manager.getInstanceByName("whitefish");
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -9,7 +9,6 @@
import javax.webbeans.UnsatisfiedDependencyException;
import javax.webbeans.manager.Bean;
-import org.jboss.webbeans.ResolutionManager;
import org.jboss.webbeans.bindings.CurrentAnnotationLiteral;
import org.jboss.webbeans.introspector.AnnotatedClass;
import org.jboss.webbeans.introspector.AnnotatedField;
@@ -64,10 +63,6 @@
manager.addBean(salmonBean);
manager.addBean(soleBean);
- ResolutionManager resolutionManager = manager.getResolutionManager();
- resolutionManager.addInjectionPoint(whiteScottishFishField);
- resolutionManager.resolveInjectionPoints();
-
manager.getInstanceByType(ScottishFish.class, new AnnotationLiteral<Whitefish>(){});
}
@@ -82,10 +77,6 @@
manager.addBean(salmonBean);
manager.addBean(soleBean);
- ResolutionManager resolutionManager = manager.getResolutionManager();
- resolutionManager.addInjectionPoint(whiteScottishFishField);
- resolutionManager.resolveInjectionPoints();
-
manager.getInstanceByType(Tuna.class, new CurrentAnnotationLiteral());
}
@@ -96,10 +87,6 @@
Bean<Plaice> plaiceBean = createSimpleBean(Plaice.class, manager);
manager.addBean(plaiceBean);
- ResolutionManager resolutionManager = manager.getResolutionManager();
- resolutionManager.addInjectionPoint(plaiceField);
- resolutionManager.resolveInjectionPoints();
-
manager.getInstanceByType(Plaice.class, new AnnotationLiteral<Whitefish>(){});
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java 2008-11-19 21:46:58 UTC (rev 331)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java 2008-11-20 03:20:08 UTC (rev 332)
@@ -12,7 +12,6 @@
import javax.webbeans.TypeLiteral;
import javax.webbeans.manager.Bean;
-import org.jboss.webbeans.ResolutionManager;
import org.jboss.webbeans.bean.SimpleBean;
import org.jboss.webbeans.bindings.CurrentAnnotationLiteral;
import org.jboss.webbeans.introspector.AnnotatedClass;
@@ -67,7 +66,7 @@
AnnotatedField<Tuna> tunaField = new AnnotatedFieldImpl<Tuna>(FishFarm.class.getDeclaredField("tuna"), fishFarmClass);
Bean<Tuna> tunaBean = createSimpleBean(Tuna.class, manager);
manager.addBean(tunaBean);
- Set<Bean<Tuna>> possibleTargets = manager.getResolutionManager().get(tunaField);
+ Set<Bean<Tuna>> possibleTargets = manager.resolveByType(tunaField);
assert possibleTargets.size() == 1;
assert possibleTargets.contains(tunaBean);
}
@@ -94,7 +93,7 @@
manager.addBean(codBean);
manager.addBean(salmonBean);
manager.addBean(soleBean);
- Set<Bean<ScottishFish>> possibleTargets = manager.getResolutionManager().get(whiteScottishFishField);
+ Set<Bean<ScottishFish>> possibleTargets = manager.resolveByType(whiteScottishFishField);
assert possibleTargets.size() == 2;
assert possibleTargets.contains(codBean);
assert possibleTargets.contains(soleBean);
@@ -112,7 +111,7 @@
manager.addBean(codBean);
manager.addBean(salmonBean);
manager.addBean(soleBean);
- Set<Bean<Animal>> possibleTargets = manager.getResolutionManager().get(whiteChunkyFishField);
+ Set<Bean<Animal>> possibleTargets = manager.resolveByType(whiteChunkyFishField);
assert possibleTargets.size() == 1;
assert possibleTargets.contains(codBean);
}
@@ -125,7 +124,7 @@
Bean<Haddock> haddockBean = createSimpleBean(Haddock.class, manager);
manager.addBean(seaBassBean);
manager.addBean(haddockBean);
- Set<Bean<Animal>> possibleTargets = manager.getResolutionManager().get(animalField);
+ Set<Bean<Animal>> possibleTargets = manager.resolveByType(animalField);
assert possibleTargets.size() == 2;
assert possibleTargets.contains(seaBassBean);
assert possibleTargets.contains(haddockBean);
@@ -200,10 +199,6 @@
manager.addBean(scottishFishFarmerBean);
manager.addBean(farmerBean);
- ResolutionManager resolutionManager = manager.getResolutionManager();
- resolutionManager.addInjectionPoint(scottishFishFarmerField);
- resolutionManager.resolveInjectionPoints();
-
assert manager.resolveByType(new TypeLiteral<Farmer<ScottishFish>>(){}).size() == 1;
assert manager.resolveByType(new TypeLiteral<Farmer<ScottishFish>>(){}).contains(scottishFishFarmerBean);
}
@@ -235,10 +230,6 @@
manager.addBean(plaiceBean);
manager.addBean(codBean);
manager.addBean(soleBean);
-
- ResolutionManager resolutionManager = manager.getResolutionManager();
- resolutionManager.addInjectionPoint(whiteFishField);
- resolutionManager.resolveInjectionPoints();
assert manager.resolveByType(Animal.class, new AnnotationLiteral<Whitefish>() {}).size() == 1;
assert manager.resolveByType(Animal.class, new AnnotationLiteral<Whitefish>() {}).contains(plaiceBean);
@@ -256,10 +247,6 @@
manager.addBean(roundWhiteFishBean);
manager.addBean(soleBean);
- ResolutionManager resolutionManager = manager.getResolutionManager();
- resolutionManager.addInjectionPoint(veryExpensiveWhitefishField);
- resolutionManager.resolveInjectionPoints();
-
Set<Bean<Animal>> beans = manager.resolveByType(Animal.class, new ExpensiveAnnotationLiteral()
{
@@ -290,10 +277,6 @@
manager.addBean(salmonBean);
manager.addBean(soleBean);
- ResolutionManager resolutionManager = manager.getResolutionManager();
- resolutionManager.addInjectionPoint(whiteScottishFishField);
- resolutionManager.resolveInjectionPoints();
-
assert manager.resolveByType(Tuna.class, new CurrentAnnotationLiteral()).size() == 0;
}
More information about the weld-commits
mailing list