[webbeans-commits] Webbeans SVN: r182 - in ri/trunk/webbeans-ri: src/main/java/org/jboss/webbeans and 5 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Mon Oct 27 10:40:29 EDT 2008


Author: pete.muir at jboss.org
Date: 2008-10-27 10:40:29 -0400 (Mon, 27 Oct 2008)
New Revision: 182

Added:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/ResolverInjectable.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java
Removed:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedItem.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/AnnotationModel.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerExpressionBeanModel.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerMethodBeanModel.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
   ri/trunk/webbeans-ri/testng.xml
Log:
Start to fix corner cases in resolution and instantiation

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-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -27,7 +27,7 @@
 import org.jboss.webbeans.exceptions.NameResolutionLocation;
 import org.jboss.webbeans.exceptions.TypesafeResolutionLocation;
 import org.jboss.webbeans.injectable.Injectable;
-import org.jboss.webbeans.injectable.SimpleInjectable;
+import org.jboss.webbeans.injectable.ResolverInjectable;
 import org.jboss.webbeans.util.ClientProxy;
 
 public class ManagerImpl implements Manager
@@ -112,13 +112,13 @@
    public <T> Set<Bean<T>> resolveByType(Class<T> type,
          Annotation... bindingTypes)
    {
-      return resolveByType(new SimpleInjectable<T>(type, bindingTypes));
+      return resolveByType(new ResolverInjectable<T>(type, bindingTypes, getModelManager()));
    }
 
    public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,
          Annotation... bindingTypes)
    {
-      return resolveByType(new SimpleInjectable<T>(apiType, bindingTypes));
+      return resolveByType(new ResolverInjectable<T>(apiType, bindingTypes, getModelManager()));
    }
    
    private <T> Set<Bean<T>> resolveByType(Injectable<T, ?> injectable)
@@ -221,12 +221,12 @@
 
    public <T> T getInstanceByType(Class<T> type, Annotation... bindingTypes)
    {
-      return getInstanceByType(new SimpleInjectable<T>(type, bindingTypes));
+      return getInstanceByType(new ResolverInjectable<T>(type, bindingTypes, getModelManager()));
    }
 
    public <T> T getInstanceByType(TypeLiteral<T> type, Annotation... bindingTypes)
    {
-      return getInstanceByType(new SimpleInjectable<T>(type, bindingTypes));
+      return getInstanceByType(new ResolverInjectable<T>(type, bindingTypes, getModelManager()));
    }
    
    private <T> T getInstanceByType(Injectable<T, ?> injectable)

Modified: 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-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -5,6 +5,7 @@
 import java.util.Map;
 
 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 org.jboss.webbeans.model.bean.BeanModel;
@@ -22,10 +23,18 @@
          super(new HashMap<Class<? extends Annotation>, T>());
       }
       
-      public <S extends Annotation> T get(Class<S> key)
+      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);
    }
    
    @SuppressWarnings("unchecked")
@@ -33,19 +42,45 @@
    {
       
       @Override
-      public <S extends Annotation> ScopeModel<S> get(Class<S> key)
+      public <S extends Annotation> ScopeModel<S> putIfAbsent(Class<S> key)
       {
-         return (ScopeModel<S>) super.get(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 Map<Class<? extends Annotation>, StereotypeModel<?>> stereotypes = new HashMap<Class<? extends Annotation>, StereotypeModel<?>>();
    
    private Map<Class<?>, BeanModel<?, ?>> beanModels = new HashMap<Class<?>, BeanModel<?,?>>();
    
    private ScopeModelMap scopes = new ScopeModelMap();
    
+   private BindingTypeModelMap bindingTypes = new BindingTypeModelMap();
+   
 
    public void addStereotype(StereotypeModel<?> stereotype)
    {
@@ -69,16 +104,14 @@
    
    public <T extends Annotation> ScopeModel<T> getScopeModel(Class<T> scopeType)
    {
-      if (scopes.containsKey(scopeType))
-      {
-         return scopes.get(scopeType);
-      }
-      else
-      {
-         ScopeModel<T> scopeModel = new ScopeModel<T>(scopeType);
-         scopes.put(scopeType, scopeModel);
-         return scopeModel;
-      }
+      return scopes.putIfAbsent(scopeType);
    }
+   
+   public <T extends Annotation> BindingTypeModel<T> getBindingTypeModel(Class<T> bindingType)
+   {
+      return bindingTypes.putIfAbsent(bindingType);
+   }
+   
+  
 
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java	2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -1,7 +1,6 @@
 package org.jboss.webbeans.injectable;
 
 import java.lang.annotation.Annotation;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -9,7 +8,6 @@
 import javax.webbeans.manager.Bean;
 
 import org.jboss.webbeans.ManagerImpl;
-import org.jboss.webbeans.bindings.CurrentAnnotationLiteral;
 import org.jboss.webbeans.introspector.AnnotatedItem;
 
 /**
@@ -22,9 +20,6 @@
 public abstract class Injectable<T, S>
 {
    
-   private static final Annotation[] DEFAULT_BINDING_ARRAY = {new CurrentAnnotationLiteral()};
-   private static final Set<Annotation> DEFAULT_BINDING = new HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
-   
    private AnnotatedItem<T, S> annotatedItem;
    
    public Injectable(AnnotatedItem<T, S> annotatedItem)
@@ -34,29 +29,12 @@
 
    public Annotation[] getBindingTypesAsArray()
    {
-      Annotation[] annotations = annotatedItem.getAnnotationsAsArray(BindingType.class);
-      // TODO This is in the wrong place, where to put it... Probably best to wrap annotated item...
-      if (annotations.length ==0)
-      {
-         return DEFAULT_BINDING_ARRAY; 
-      }
-      else
-      {
-         return annotations;
-      }
+      return annotatedItem.getAnnotationsAsArray(BindingType.class);
    }
    
    public Set<Annotation> getBindingTypes()
    {
-      Set<Annotation> annotations = annotatedItem.getAnnotations(BindingType.class);
-      if (annotations.size() == 0)
-      {
-         return DEFAULT_BINDING;
-      }
-      else
-      {
-         return annotations;
-      }
+      return annotatedItem.getAnnotations(BindingType.class);
    }
    
    protected Injectable() {}

Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/ResolverInjectable.java (from rev 176, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/ResolverInjectable.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/ResolverInjectable.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -0,0 +1,92 @@
+package org.jboss.webbeans.injectable;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.webbeans.BindingType;
+import javax.webbeans.DuplicateBindingTypeException;
+import javax.webbeans.TypeLiteral;
+
+import org.jboss.webbeans.ModelManager;
+import org.jboss.webbeans.bindings.CurrentAnnotationLiteral;
+import org.jboss.webbeans.introspector.SimpleAnnotatedItem;
+
+/**
+ * TODO Rename this to something which implies it only ever used for resolution
+ * @author Pete Muir
+ *
+ */
+public class ResolverInjectable<T> extends Injectable<T, Object>
+{
+   
+   private static final Annotation[] DEFAULT_BINDING_ARRAY = {new CurrentAnnotationLiteral()};
+   private static final Set<Annotation> DEFAULT_BINDING = new HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
+   
+   private boolean useDefaultBinding;
+   
+   public ResolverInjectable(SimpleAnnotatedItem<T, Object> annotatedItem, ModelManager modelManager)
+   {
+      super(annotatedItem);
+      for (Annotation annotation : annotatedItem.getAnnotations())
+      {
+         if (!modelManager.getBindingTypeModel(annotation.annotationType()).isValid())
+         {
+            throw new IllegalArgumentException("Not a binding type " + annotation);
+         }
+      }
+      if (annotatedItem.getActualAnnotations().length > annotatedItem.getAnnotations(BindingType.class).size())
+      {
+         throw new DuplicateBindingTypeException(getAnnotatedItem().toString());
+      }
+      
+      if (annotatedItem.getAnnotations(BindingType.class).size() == 0)
+      {
+         useDefaultBinding = true;
+      }
+   }
+   
+   @Override
+   public Set<Annotation> getBindingTypes()
+   {
+      if (useDefaultBinding)
+      {
+         return DEFAULT_BINDING;
+      }
+      else
+      {
+         return super.getBindingTypes();
+      }
+   }
+   
+   @Override
+   public Annotation[] getBindingTypesAsArray()
+   {
+      if (useDefaultBinding)
+      {
+         return DEFAULT_BINDING_ARRAY;
+      }
+      else
+      {
+         return super.getBindingTypesAsArray();
+      }
+   }
+   
+   public ResolverInjectable(Class<T> type, Annotation[] bindingTypes, ModelManager modelManager)
+   {
+      this(new SimpleAnnotatedItem<T, Object>(bindingTypes, type), modelManager);
+   }
+   
+   public ResolverInjectable(Class<T> type, Annotation[] bindingTypes, ModelManager modelManager, Type ... actualTypeArguements)
+   {
+      this(new SimpleAnnotatedItem<T, Object>(bindingTypes, type, actualTypeArguements), modelManager);
+   }
+   
+   public ResolverInjectable(TypeLiteral<T> apiType, Annotation[] bindingTypes, ModelManager modelManager)
+   {
+      this(new SimpleAnnotatedItem<T, Object>(bindingTypes, apiType), modelManager);
+   }
+
+}


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

Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java	2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -1,28 +0,0 @@
-package org.jboss.webbeans.injectable;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-
-import javax.webbeans.TypeLiteral;
-
-import org.jboss.webbeans.introspector.SimpleAnnotatedItem;
-
-public class SimpleInjectable<T> extends Injectable<T, Object>
-{
-   
-   public SimpleInjectable(Class<T> type, Annotation[] bindingTypes)
-   {
-      super(new SimpleAnnotatedItem<T, Object>(bindingTypes, type));
-   }
-   
-   public SimpleInjectable(Class<T> type, Annotation[] bindingTypes, Type ... actualTypeArguements)
-   {
-      super(new SimpleAnnotatedItem<T, Object>(bindingTypes, type, actualTypeArguements));
-   }
-   
-   public SimpleInjectable(TypeLiteral<T> apiType, Annotation[] bindingTypes)
-   {
-      super(new SimpleAnnotatedItem<T, Object>(bindingTypes, apiType));
-   }
-
-}

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java	2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -65,7 +65,7 @@
       {
          metaAnnotationMap = new HashMap<Class<? extends Annotation>, Set<Annotation>>();
       }
-      populateMetaAnnotationMap(metaAnnotationType, metaAnnotationMap, annotationMap);
+      metaAnnotationMap = populateMetaAnnotationMap(metaAnnotationType, metaAnnotationMap, annotationMap);
       return metaAnnotationMap.get(metaAnnotationType);
    }
    
@@ -73,6 +73,7 @@
    {
       if (annotationArray == null)
       {
+         annotationArray = new Annotation[0];
          annotationArray = getAnnotations(metaAnnotationType).toArray(annotationArray);
       }
       return annotationArray;
@@ -94,10 +95,10 @@
 
    protected static <A extends Annotation> Map<Class<? extends Annotation>, Set<Annotation>> populateMetaAnnotationMap(
          Class<A> metaAnnotationType, Map<Class<? extends Annotation>, 
-         Set<Annotation>> metaAnnotations, 
+         Set<Annotation>> metaAnnotationMap, 
          Map<Class<? extends Annotation>, Annotation> annotationMap)
    {
-      if (!metaAnnotations.containsKey(metaAnnotationType))
+      if (!metaAnnotationMap.containsKey(metaAnnotationType))
       {
          Set<Annotation> s = new HashSet<Annotation>();
          for (Entry<Class<? extends Annotation>, Annotation> entry : annotationMap.entrySet())
@@ -107,9 +108,9 @@
                s.add(entry.getValue());
             }
          }
-         metaAnnotations.put(metaAnnotationType, s);
+         metaAnnotationMap.put(metaAnnotationType, s);
       }
-      return metaAnnotations;
+      return metaAnnotationMap;
    }
 
    protected Map<Class<? extends Annotation>, Annotation> getAnnotationMap()

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedItem.java	2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedItem.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -12,19 +12,20 @@
 
    private Type[] actualTypeArguements = new Type[0];
    private Class<? extends T> type;
+   private Annotation[] actualAnnotations;
    
-   public SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap)
+   private SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap)
    {
       super(annotationMap);
    }
    
-   public SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, Class<? extends T> type)
+   private SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, Class<? extends T> type)
    {
       super(annotationMap);
       this.type = type;
    }
    
-   public SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, TypeLiteral<? extends T> apiType)
+   private SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, TypeLiteral<? extends T> apiType)
    {
       super(annotationMap);
       this.type = apiType.getRawType();
@@ -34,7 +35,7 @@
       }
    }
    
-   public SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, Class<? extends T> type, Type[] actualTypeArguements)
+   private SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, Class<? extends T> type, Type[] actualTypeArguements)
    {
       this(annotationMap, type);
       this.actualTypeArguements = actualTypeArguements;
@@ -43,21 +44,25 @@
    public SimpleAnnotatedItem(Annotation[] annotations)
    {
       this(buildAnnotationMap(annotations));
+      this.actualAnnotations = annotations;
    }
    
    public SimpleAnnotatedItem(Annotation[] annotations, Class<? extends T> type)
    {
       this(buildAnnotationMap(annotations), type);
+      this.actualAnnotations = annotations;
    }
    
    public SimpleAnnotatedItem(Annotation[] annotations, TypeLiteral<? extends T> apiType)
    {
       this(buildAnnotationMap(annotations), apiType);
+      this.actualAnnotations = annotations;
    }
    
    public SimpleAnnotatedItem(Annotation[] annotations, Class<? extends T> type, Type[] actualTypeArguements)
    {
       this(buildAnnotationMap(annotations), type, actualTypeArguements);
+      this.actualAnnotations = annotations;
    }
 
    public S getDelegate()
@@ -75,4 +80,9 @@
       return actualTypeArguements;
    }
    
+   public Annotation[] getActualAnnotations()
+   {
+      return actualAnnotations;
+   }
+   
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/AnnotationModel.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/AnnotationModel.java	2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/AnnotationModel.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -35,7 +35,7 @@
    
    protected void initValid()
    {
-      this.valid = !annotatedAnnotation.isAnnotationPresent(getMetaAnnotation());
+      this.valid = annotatedAnnotation.isAnnotationPresent(getMetaAnnotation());
    }
 
    public Class<T> getType()

Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,  
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package org.jboss.webbeans.model;
+
+import java.lang.annotation.Annotation;
+
+import javax.webbeans.BindingType;
+
+/**
+ * 
+ * Model of a binding type
+ * 
+ * @author Pete Muir
+ *
+ */
+public class BindingTypeModel<T extends Annotation> extends AnnotationModel<T>
+{
+   
+   public BindingTypeModel(Class<T> scope)
+   {
+      super(scope);
+   }
+   
+   @Override
+   protected Class<? extends Annotation> getMetaAnnotation()
+   {
+      return BindingType.class;
+   }
+   
+}


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

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerExpressionBeanModel.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerExpressionBeanModel.java	2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerExpressionBeanModel.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -1,22 +1,19 @@
 package org.jboss.webbeans.model.bean;
 
-import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
-import java.util.HashMap;
 
 import javax.webbeans.Dependent;
 
 import org.jboss.webbeans.ManagerImpl;
 import org.jboss.webbeans.injectable.BeanConstructor;
 import org.jboss.webbeans.introspector.AnnotatedItem;
-import org.jboss.webbeans.introspector.SimpleAnnotatedItem;
 
 public class ProducerExpressionBeanModel<T> extends AbstractProducerBeanModel<T>
 {
    
    private AnnotatedItem<T, Method> xmlAnnotatedItem;
-   private AnnotatedItem<T, Method> annotatedItem = new SimpleAnnotatedItem<T, Method>(new HashMap<Class<? extends Annotation>, Annotation>());
+   private AnnotatedItem<T, Method> annotatedItem = null /*new SimpleAnnotatedItem<T, Method>(new HashMap<Class<? extends Annotation>, Annotation>())*/;
    private String location;
 
    public ProducerExpressionBeanModel(AnnotatedItem<T, Method> xmlAnnotatedMethod, ManagerImpl container)

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerMethodBeanModel.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerMethodBeanModel.java	2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerMethodBeanModel.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -5,7 +5,6 @@
 import java.lang.reflect.Modifier;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
-import java.util.HashMap;
 import java.util.Set;
 
 import javax.webbeans.Dependent;
@@ -17,7 +16,6 @@
 import org.jboss.webbeans.injectable.MethodConstructor;
 import org.jboss.webbeans.introspector.AnnotatedItem;
 import org.jboss.webbeans.introspector.AnnotatedMethod;
-import org.jboss.webbeans.introspector.SimpleAnnotatedItem;
 import org.jboss.webbeans.util.Reflections;
 
 public class ProducerMethodBeanModel<T> extends AbstractProducerBeanModel<T>
@@ -25,7 +23,7 @@
    
    private MethodConstructor<T> constructor;
    
-   private AnnotatedItem<T, Method> xmlAnnotatedItem = new SimpleAnnotatedItem<T, Method>(new HashMap<Class<? extends Annotation>, Annotation>());
+   private AnnotatedItem<T, Method> xmlAnnotatedItem = null /*new SimpleAnnotatedItem<T, Method>(new HashMap<Class<? extends Annotation>, Annotation>())*/;
    private AnnotatedMethod<T> annotatedMethod;
    
    private BeanModel<?, ?> declaringBean;

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-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -12,18 +12,31 @@
 import org.jboss.webbeans.model.bean.SimpleBeanModel;
 import org.jboss.webbeans.test.beans.Cod;
 import org.jboss.webbeans.test.beans.FishFarm;
+import org.jboss.webbeans.test.beans.Haddock;
+import org.jboss.webbeans.test.beans.Plaice;
 import org.jboss.webbeans.test.beans.Salmon;
 import org.jboss.webbeans.test.beans.ScottishFish;
+import org.jboss.webbeans.test.beans.SeaBass;
 import org.jboss.webbeans.test.beans.Sole;
+import org.jboss.webbeans.test.beans.Tuna;
 import org.testng.annotations.Test;
 
 public class InstantiationByNameTest extends AbstractTest
 {
    
    @Test(groups="resolution") @SpecAssertion(section="4.10")
-   public void testNoWebBeansFound()
+   public void testNoWebBeansFound() throws Exception
    {
-      assert false;
+      InjectableField<ScottishFish> whiteScottishFishField = new InjectableField<ScottishFish>(FishFarm.class.getDeclaredField("whiteScottishFish"));
+      Bean<Cod> codBean = new BeanImpl<Cod>(new SimpleBeanModel<Cod>(new SimpleAnnotatedType<Cod>(Cod.class), getEmptyAnnotatedType(Cod.class), super.manager), manager);
+      Bean<Salmon> salmonBean = new BeanImpl<Salmon>(new SimpleBeanModel<Salmon>(new SimpleAnnotatedType<Salmon>(Salmon.class), getEmptyAnnotatedType(Salmon.class), super.manager), manager);
+      manager.addBean(codBean);
+      manager.addBean(salmonBean);
+      
+      ResolutionManager resolutionManager = manager.getResolutionManager();
+      resolutionManager.addInjectionPoint(whiteScottishFishField);
+      
+      assert manager.getInstanceByName("foo") == null;
    }
    
    @Test(expectedExceptions=AmbiguousDependencyException.class) @SpecAssertion(section="4.10.1")
@@ -43,13 +56,29 @@
       manager.getInstanceByName("whitefish");
    }
    
-   @Test(groups="resolution") @SpecAssertion(section="4.10.1")
+   @Test(groups={"resolution", "beanLifecycle"}) @SpecAssertion(section="4.10.1")
    public void testGetInstanceByName()
    {
-      assert false;
+      Bean<Tuna> tunaBean = new BeanImpl<Tuna>(new SimpleBeanModel<Tuna>(new SimpleAnnotatedType<Tuna>(Tuna.class), getEmptyAnnotatedType(Tuna.class), super.manager), manager);
+      Bean<Cod> codBean = new BeanImpl<Cod>(new SimpleBeanModel<Cod>(new SimpleAnnotatedType<Cod>(Cod.class), getEmptyAnnotatedType(Cod.class), super.manager), manager);
+      Bean<Salmon> salmonBean = new BeanImpl<Salmon>(new SimpleBeanModel<Salmon>(new SimpleAnnotatedType<Salmon>(Salmon.class), getEmptyAnnotatedType(Salmon.class), super.manager), manager);
+      Bean<Sole> soleBean = new BeanImpl<Sole>(new SimpleBeanModel<Sole>(new SimpleAnnotatedType<Sole>(Sole.class), getEmptyAnnotatedType(Sole.class), super.manager), manager);
+      Bean<SeaBass> seaBassBean = new BeanImpl<SeaBass>(new SimpleBeanModel<SeaBass>(new SimpleAnnotatedType<SeaBass>(SeaBass.class), getEmptyAnnotatedType(SeaBass.class), super.manager), manager);
+      Bean<Haddock> haddockBean = new BeanImpl<Haddock>(new SimpleBeanModel<Haddock>(new SimpleAnnotatedType<Haddock>(Haddock.class), getEmptyAnnotatedType(Haddock.class), super.manager), manager);
+      Bean<Plaice> plaiceBean = new BeanImpl<Plaice>(new SimpleBeanModel<Plaice>(new SimpleAnnotatedType<Plaice>(Plaice.class), getEmptyAnnotatedType(Plaice.class), super.manager), manager);
+      
+      manager.addBean(tunaBean);
+      manager.addBean(codBean);
+      manager.addBean(salmonBean);
+      manager.addBean(soleBean);
+      manager.addBean(haddockBean);
+      manager.addBean(seaBassBean);
+      manager.addBean(plaiceBean);
+      
+      assert manager.getInstanceByName("salmon") instanceof Salmon;
    }
    
-   @Test(groups="resolution") @SpecAssertion(section="4.10")
+   @Test(groups={"resolution", "el"}) @SpecAssertion(section="4.10")
    public void testGetInstanceByNameCalledOncePerDistinctNameInElExpression()
    {
       assert false;

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-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -24,6 +24,7 @@
 import org.jboss.webbeans.test.beans.Sole;
 import org.jboss.webbeans.test.beans.Tuna;
 import org.jboss.webbeans.test.beans.broken.PlaiceFarm;
+import org.jboss.webbeans.test.bindings.AnotherDeploymentTypeAnnotationLiteral;
 import org.testng.annotations.Test;
 
 @SpecVersion("PDR")
@@ -39,13 +40,13 @@
    @Test(groups="resolution", expectedExceptions=DuplicateBindingTypeException.class) @SpecAssertion(section="4.9")
    public void testDuplicateBindingTypesUsed()
    {
-      assert false;
+      manager.getInstanceByType(Tuna.class, new CurrentAnnotationLiteral(), new CurrentAnnotationLiteral());
    }
    
    @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="4.9")
    public void testNonBindingTypeUsed()
    {
-      assert false;
+      manager.getInstanceByType(Tuna.class, new AnotherDeploymentTypeAnnotationLiteral());
    }
    
    @Test(expectedExceptions=AmbiguousDependencyException.class) @SpecAssertion(section="4.9")

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-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java	2008-10-27 14:40:29 UTC (rev 182)
@@ -31,6 +31,7 @@
 import org.jboss.webbeans.test.beans.SeaBass;
 import org.jboss.webbeans.test.beans.Sole;
 import org.jboss.webbeans.test.beans.Tuna;
+import org.jboss.webbeans.test.bindings.AnotherDeploymentTypeAnnotationLiteral;
 import org.jboss.webbeans.test.bindings.ChunkyAnnotationLiteral;
 import org.testng.annotations.Test;
 
@@ -63,13 +64,13 @@
    @Test(groups="resolution", expectedExceptions=DuplicateBindingTypeException.class) @SpecAssertion(section="4.9.2")
    public void testDuplicateBindingTypesUsed()
    {
-      assert false;
+      manager.resolveByType(Tuna.class, new CurrentAnnotationLiteral(), new CurrentAnnotationLiteral());
    }
    
    @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="4.9.2")
    public void testNonBindingTypeUsed()
    {
-      assert false;
+      manager.resolveByType(Tuna.class, new AnotherDeploymentTypeAnnotationLiteral());
    }
    
    @Test

Modified: ri/trunk/webbeans-ri/testng.xml
===================================================================
--- ri/trunk/webbeans-ri/testng.xml	2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/testng.xml	2008-10-27 14:40:29 UTC (rev 182)
@@ -20,6 +20,8 @@
             <exclude name="interceptors" />
             <exclude name="innerClass" />
             <exclude name="servlet" />
+            <exclude name="clientProxy" />
+            <exclude name="contexts" />
          </run>
       </groups>
       <packages>




More information about the weld-commits mailing list