[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