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

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Mon Oct 27 20:41:01 EDT 2008


Author: pete.muir at jboss.org
Date: 2008-10-27 20:41:01 -0400 (Mon, 27 Oct 2008)
New Revision: 187

Added:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Expensive.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingAnnotationMember.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingArrayTypeMember.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/Halibut.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/RoundWhitefish.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingAnnotationMemberAnnotationLiteral.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingArrayTypeMemberAnnotationLiteral.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/ExpensiveAnnotationLiteral.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/InjectableParameterWrapper.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/InjectableWrapper.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedAnnotation.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedAnnotation.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/BindingTypeModel.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/FishFarm.java
Log:
Remaining tests for Chapter 4

Modified: 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-10-27 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -58,7 +58,7 @@
    
    private void registerInjectionPoint(Injectable<?, ?> injectable)
    {
-	   resolvedInjectionPoints.put(injectable, retainHighestPrecedenceBeans(injectable.getMatchingBeans(manager.getBeans()), manager.getEnabledDeploymentTypes())); 
+	   resolvedInjectionPoints.put(injectable, retainHighestPrecedenceBeans(injectable.getMatchingBeans(manager.getBeans(), manager.getModelManager()), manager.getEnabledDeploymentTypes())); 
    }
    
    public void clear()

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 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -8,7 +8,9 @@
 import javax.webbeans.manager.Bean;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.ModelManager;
 import org.jboss.webbeans.introspector.AnnotatedItem;
+import org.jboss.webbeans.model.BindingTypeModel;
 
 /**
  * Abstraction of java reflection for Web Beans, represent's something that can
@@ -60,12 +62,12 @@
       return annotatedItem;
    }
    
-   public Set<Bean<?>> getMatchingBeans(Set<Bean<?>> beans)
+   public Set<Bean<?>> getMatchingBeans(Set<Bean<?>> beans, ModelManager modelManager)
    {
       Set<Bean<?>> resolvedBeans = new HashSet<Bean<?>>();
       for (Bean<?> bean : beans)
       {
-         if (getAnnotatedItem().isAssignableFrom(bean.getTypes()) && bean.getBindingTypes().containsAll(getBindingTypes()))
+         if (getAnnotatedItem().isAssignableFrom(bean.getTypes()) && containsAllBindingBindingTypes(bean.getBindingTypes(), modelManager))
          {
             resolvedBeans.add(bean);
          }
@@ -96,6 +98,32 @@
       return 0;
    }
    
+   private boolean containsAllBindingBindingTypes(Set<Annotation> bindingTypes, ModelManager modelManager)
+   {
+      for (Annotation bindingType : 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;
+   }
    
-   
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/InjectableParameterWrapper.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/InjectableParameterWrapper.java	2008-10-27 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/InjectableParameterWrapper.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -6,6 +6,7 @@
 import javax.webbeans.manager.Bean;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.ModelManager;
 
 public class InjectableParameterWrapper<T> extends InjectableParameter<T>
 {
@@ -24,9 +25,9 @@
    }
 
    @Override
-   public Set<Bean<?>> getMatchingBeans(Set<Bean<?>> possibleBeans)
+   public Set<Bean<?>> getMatchingBeans(Set<Bean<?>> possibleBeans, ModelManager modelManager)
    {
-      return delegate.getMatchingBeans(possibleBeans);
+      return delegate.getMatchingBeans(possibleBeans, modelManager);
    }
 
    @Override

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/InjectableWrapper.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/InjectableWrapper.java	2008-10-27 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/InjectableWrapper.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -6,6 +6,7 @@
 import javax.webbeans.manager.Bean;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.ModelManager;
 
 public class InjectableWrapper<T, S> extends Injectable<T, S>
 {
@@ -24,9 +25,9 @@
    }
 
    @Override
-   public Set<Bean<?>> getMatchingBeans(Set<Bean<?>> possibleBeans)
+   public Set<Bean<?>> getMatchingBeans(Set<Bean<?>> possibleBeans, ModelManager modelManager)
    {
-      return delegate.getMatchingBeans(possibleBeans);
+      return delegate.getMatchingBeans(possibleBeans, modelManager);
    }
 
    @Override

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedAnnotation.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedAnnotation.java	2008-10-27 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedAnnotation.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -12,4 +12,10 @@
     */
    public Set<AnnotatedMethod<?>> getMembers();
    
+   /**
+    * Get all annotation members
+    * @return
+    */
+   public Set<AnnotatedMethod<?>> getAnnotatedMembers(Class<? extends Annotation> annotationType);
+   
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedAnnotation.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedAnnotation.java	2008-10-27 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedAnnotation.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -3,12 +3,16 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 public class SimpleAnnotatedAnnotation<T extends Annotation> extends AbstractAnnotatedItem<T, Class<T>> implements AnnotatedAnnotation<T>
 {
    
+   private Map<Class<? extends Annotation>, Set<AnnotatedMethod<?>>> annotatedMembers;
+   
    private Class<T> clazz;
    
    private Set<AnnotatedMethod<?>> members;
@@ -51,5 +55,42 @@
          members.add(new SimpleAnnotatedMethod<Object>(member));
       }
    }
+
+   public Set<AnnotatedMethod<?>> getAnnotatedMembers(Class<? extends Annotation> annotationType)
+   {
+      if (annotatedMembers == null)
+      {
+         initAnnotatedMembers();
+      }
+       
+      if (!annotatedMembers.containsKey(annotationType))
+      {
+         return new HashSet<AnnotatedMethod<?>>();
+      }
+      else
+      {
+         return annotatedMembers.get(annotationType);
+      }
+   }
+
+   private void initAnnotatedMembers()
+   {
+      if (members == null)
+      {
+         initMembers();
+      }
+      annotatedMembers = new HashMap<Class<? extends Annotation>, Set<AnnotatedMethod<?>>>();
+      for (AnnotatedMethod<?> member : members)
+      {
+         for (Annotation annotation : member.getAnnotations())
+         {
+            if (!annotatedMembers.containsKey(annotation))
+            {
+               annotatedMembers.put(annotation.annotationType(), new HashSet<AnnotatedMethod<?>>());
+            }
+            annotatedMembers.get(annotation.annotationType()).add(member);
+         }
+      }
+   }
    
 }

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 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/AnnotationModel.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -55,4 +55,10 @@
       return annotatedAnnotation;
    }
    
+   @Override
+   public String toString()
+   {
+      return getClass().getSimpleName() + "[" + getAnnotatedAnnotation().toString() + "]";
+   }
+   
 }
\ No newline at end of file

Modified: 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	2008-10-27 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -19,9 +19,15 @@
 package org.jboss.webbeans.model;
 
 import java.lang.annotation.Annotation;
+import java.util.Set;
 
 import javax.webbeans.BindingType;
+import javax.webbeans.DefinitionException;
+import javax.webbeans.NonBinding;
 
+import org.jboss.webbeans.introspector.AnnotatedMethod;
+import org.jboss.webbeans.util.Reflections;
+
 /**
  * 
  * Model of a binding type
@@ -32,15 +38,74 @@
 public class BindingTypeModel<T extends Annotation> extends AnnotationModel<T>
 {
    
-   public BindingTypeModel(Class<T> scope)
+   private Set<AnnotatedMethod<?>> nonBindingTypes;
+   private Integer hashCode;
+   
+   public BindingTypeModel(Class<T> type)
    {
-      super(scope);
+      super(type);
    }
    
    @Override
+   protected void init()
+   {
+      super.init();
+      initNonBindingTypes();
+      checkArrayAndAnnotationValuedMembers();
+   }
+   
+   private void checkArrayAndAnnotationValuedMembers()
+   {
+      for (AnnotatedMethod<?> annotatedMethod : getAnnotatedAnnotation().getMembers())
+      {
+         if ((Reflections.isArrayType(annotatedMethod.getType()) || Annotation.class.isAssignableFrom(annotatedMethod.getType())) && !nonBindingTypes.contains(annotatedMethod))
+         {
+            throw new DefinitionException("Member of array type or annotation type must be annotated @NonBinding " + annotatedMethod);
+         }
+      }
+      
+   }
+
+   @Override
    protected Class<? extends Annotation> getMetaAnnotation()
    {
       return BindingType.class;
    }
    
+   public boolean hasNonBindingTypes()
+   {
+      return nonBindingTypes.size() > 0;
+   }
+   
+   public Set<AnnotatedMethod<?>> getNonBindingTypes()
+   {
+      return nonBindingTypes;
+   }
+   
+   protected void initNonBindingTypes()
+   {
+      nonBindingTypes = getAnnotatedAnnotation().getAnnotatedMembers(NonBinding.class);
+   }
+   
+   public boolean isEqual(Annotation instance, Annotation other)
+   {
+      if (instance.annotationType().equals(getType()) && other.annotationType().equals(getType()))
+      {
+         for (AnnotatedMethod<?> annotatedMethod : getAnnotatedAnnotation().getMembers())
+         {
+            if (!nonBindingTypes.contains(annotatedMethod))
+            {
+               Object thisValue = Reflections.invokeAndWrap(annotatedMethod.getDelegate(), instance);
+               Object thatValue = Reflections.invokeAndWrap(annotatedMethod.getDelegate(), other);
+               if (!thisValue.equals(thatValue))
+               {
+                  return false;
+               }
+            }
+         }
+         return true;
+      }
+      return false;
+   }
+   
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java	2008-10-27 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -3,6 +3,7 @@
 import java.beans.Introspector;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.ParameterizedType;
@@ -12,7 +13,9 @@
 import java.util.List;
 import java.util.Set;
 
+import javax.webbeans.ExecutionException;
 
+
 public class Reflections
 {
    
@@ -232,4 +235,25 @@
    {
       return type.getTypeParameters().length > 0;
    }
+   
+   public static Object invokeAndWrap(Method method, Object instance)
+   {
+      try
+      {
+         return method.invoke(instance);
+      }
+      catch (IllegalArgumentException e)
+      {
+         throw new ExecutionException("Error checking value of member method " + method.getName() + " on " + method.getDeclaringClass(), e);
+      }
+      catch (IllegalAccessException e)
+      {
+         throw new ExecutionException("Error checking value of member method " + method.getName() + " on " + method.getDeclaringClass(), e);
+      }
+      catch (InvocationTargetException e)
+      {
+         throw new ExecutionException("Error checking value of member method " + method.getName() + " on " + method.getDeclaringClass(), e);
+      }
+   }
+   
 }

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 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -1,5 +1,6 @@
 package org.jboss.webbeans.test;
 
+import static org.jboss.webbeans.test.util.Util.createSimpleWebBean;
 import static org.jboss.webbeans.test.util.Util.getEmptyAnnotatedType;
 
 import java.util.HashSet;
@@ -17,6 +18,7 @@
 import org.jboss.webbeans.injectable.InjectableField;
 import org.jboss.webbeans.introspector.SimpleAnnotatedType;
 import org.jboss.webbeans.model.bean.SimpleBeanModel;
+import org.jboss.webbeans.test.annotations.Expensive;
 import org.jboss.webbeans.test.annotations.Whitefish;
 import org.jboss.webbeans.test.beans.Animal;
 import org.jboss.webbeans.test.beans.AnimalFarmer;
@@ -24,7 +26,9 @@
 import org.jboss.webbeans.test.beans.Farmer;
 import org.jboss.webbeans.test.beans.FishFarm;
 import org.jboss.webbeans.test.beans.Haddock;
+import org.jboss.webbeans.test.beans.Halibut;
 import org.jboss.webbeans.test.beans.Plaice;
+import org.jboss.webbeans.test.beans.RoundWhitefish;
 import org.jboss.webbeans.test.beans.Salmon;
 import org.jboss.webbeans.test.beans.ScottishFish;
 import org.jboss.webbeans.test.beans.ScottishFishFarmer;
@@ -32,7 +36,10 @@
 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.BindingTypeWithBindingAnnotationMemberAnnotationLiteral;
+import org.jboss.webbeans.test.bindings.BindingTypeWithBindingArrayTypeMemberAnnotationLiteral;
 import org.jboss.webbeans.test.bindings.ChunkyAnnotationLiteral;
+import org.jboss.webbeans.test.bindings.ExpensiveAnnotationLiteral;
 import org.testng.annotations.Test;
 
 @SpecVersion("PDR")
@@ -56,7 +63,7 @@
       Bean<Tuna> tunaBean = new BeanImpl<Tuna>(new SimpleBeanModel<Tuna>(new SimpleAnnotatedType<Tuna>(Tuna.class), getEmptyAnnotatedType(Tuna.class), super.manager), manager);
       Set<Bean<?>> beans = new HashSet<Bean<?>>();
       beans.add(tunaBean);
-      Set<Bean<?>> possibleTargets = tunaField.getMatchingBeans(beans);
+      Set<Bean<?>> possibleTargets = tunaField.getMatchingBeans(beans, manager.getModelManager());
       assert possibleTargets.size() == 1;
       assert possibleTargets.contains(tunaBean);
    }
@@ -84,7 +91,7 @@
       beans.add(codBean);
       beans.add(salmonBean);
       beans.add(soleBean);
-      Set<Bean<?>> possibleTargets = whiteScottishFishField.getMatchingBeans(beans);
+      Set<Bean<?>> possibleTargets = whiteScottishFishField.getMatchingBeans(beans, manager.getModelManager());
       assert possibleTargets.size() == 2;
       assert possibleTargets.contains(codBean);
       assert possibleTargets.contains(soleBean);
@@ -101,7 +108,7 @@
       beans.add(codBean);
       beans.add(salmonBean);
       beans.add(soleBean);
-      Set<Bean<?>> possibleTargets = whiteChunkyFishField.getMatchingBeans(beans);
+      Set<Bean<?>> possibleTargets = whiteChunkyFishField.getMatchingBeans(beans, manager.getModelManager());
       assert possibleTargets.size() == 1;
       assert possibleTargets.contains(codBean);
    }
@@ -115,7 +122,7 @@
       Set<Bean<?>> beans = new HashSet<Bean<?>>();
       beans.add(seaBassBean);
       beans.add(haddockBean);
-      Set<Bean<?>> possibleTargets = animalField.getMatchingBeans(beans);
+      Set<Bean<?>> possibleTargets = animalField.getMatchingBeans(beans, manager.getModelManager());
       assert possibleTargets.size() == 2;
       assert possibleTargets.contains(seaBassBean);
       assert possibleTargets.contains(haddockBean);
@@ -201,7 +208,7 @@
       assert manager.resolveByType(new TypeLiteral<Farmer<ScottishFish>>(){}).contains(scottishFishFarmerBean);
    }
    
-   @Test(groups="resolution") @SpecAssertion(section="4.9.2")
+   @Test(groups={"resolution", "producerMethod"}) @SpecAssertion(section="4.9.2")
    public void testResolveByTypeWithArray()
    {
       assert false;
@@ -230,9 +237,36 @@
    }
    
    @Test(groups="resolution") @SpecAssertion(section="4.9.2")
-   public void testResolveByTypeNonBindingParameters()
+   public void testResolveByTypeWithNonBindingMembers() throws Exception
    {
-      assert false;
+      InjectableField<Animal> veryExpensiveWhitefishField = new InjectableField<Animal>(FishFarm.class.getDeclaredField("veryExpensiveWhitefish"));
+      Bean<Halibut> halibutBean = createSimpleWebBean(Halibut.class, manager);
+      Bean<RoundWhitefish> roundWhiteFishBean = createSimpleWebBean(RoundWhitefish.class, manager);
+      Bean<Sole> soleBean = new BeanImpl<Sole>(new SimpleBeanModel<Sole>(new SimpleAnnotatedType<Sole>(Sole.class), getEmptyAnnotatedType(Sole.class), super.manager), manager);
+      manager.addBean(halibutBean);
+      manager.addBean(roundWhiteFishBean);
+      manager.addBean(soleBean);
+      
+      ResolutionManager resolutionManager = manager.getResolutionManager();
+      resolutionManager.addInjectionPoint(veryExpensiveWhitefishField);
+      
+      Set<Bean<Animal>> beans = manager.resolveByType(Animal.class, new ExpensiveAnnotationLiteral() 
+      {
+
+         public int cost()
+         {
+            return 60;
+         }
+
+         public boolean veryExpensive()
+         {
+            return true;
+         }
+         
+      }, new AnnotationLiteral<Whitefish>() {});
+      assert beans.size() == 2;
+      assert beans.contains(halibutBean);
+      assert beans.contains(roundWhiteFishBean);
    }
    
    @Test(groups="resolution") @SpecAssertion(section="4.9.2")
@@ -272,13 +306,39 @@
    @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="4.9.2.1")
    public void testArrayValuedAnnotationMemberWithoutNonBinding()
    {
-      assert false;
+      manager.resolveByType(Animal.class, new BindingTypeWithBindingArrayTypeMemberAnnotationLiteral() {
+         
+         public boolean[] bool()
+         {
+            return new boolean[0];
+         }
+         
+      });
    }
    
    @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="4.9.2.1")
    public void testAnnotationValuedAnnotationMemberWithoutNonBinding()
    {
-      assert false;
+      manager.resolveByType(Animal.class, new BindingTypeWithBindingAnnotationMemberAnnotationLiteral()
+      {
+         
+         public Expensive expensive()
+         {
+            return new ExpensiveAnnotationLiteral()
+            {
+               public int cost()
+               {
+                  return 0;
+               }
+               
+               public boolean veryExpensive()
+               {
+                  return false;
+               }
+            };
+         }
+      
+      });
    }
       
 }

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Expensive.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Expensive.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Expensive.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -0,0 +1,28 @@
+package org.jboss.webbeans.test.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.webbeans.BindingType;
+import javax.webbeans.NonBinding;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+public @interface Expensive
+{
+   
+   boolean veryExpensive();
+   
+   @NonBinding
+   int cost();
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Expensive.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingAnnotationMember.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingAnnotationMember.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingAnnotationMember.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -0,0 +1,26 @@
+package org.jboss.webbeans.test.annotations.broken;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.webbeans.BindingType;
+
+import org.jboss.webbeans.test.annotations.Expensive;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+public @interface BindingTypeWithBindingAnnotationMember
+{
+   
+   Expensive expensive();
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingAnnotationMember.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingArrayTypeMember.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingArrayTypeMember.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingArrayTypeMember.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -0,0 +1,24 @@
+package org.jboss.webbeans.test.annotations.broken;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.webbeans.BindingType;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+public @interface BindingTypeWithBindingArrayTypeMember
+{
+   
+   boolean[] bool();
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/broken/BindingTypeWithBindingArrayTypeMember.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/FishFarm.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/FishFarm.java	2008-10-27 22:25:28 UTC (rev 186)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/FishFarm.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -4,6 +4,7 @@
 import javax.webbeans.Production;
 
 import org.jboss.webbeans.test.annotations.Chunky;
+import org.jboss.webbeans.test.annotations.Expensive;
 import org.jboss.webbeans.test.annotations.Whitefish;
 
 @Production
@@ -34,4 +35,7 @@
    @Current
    private Farmer<ScottishFish> scottishFishFarmer;
    
+   @Expensive(cost=60, veryExpensive=true) @Whitefish
+   private Animal veryExpensiveWhitefish;
+   
 }

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/Halibut.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/Halibut.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/Halibut.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.test.beans;
+
+import org.jboss.webbeans.test.annotations.Expensive;
+import org.jboss.webbeans.test.annotations.Whitefish;
+
+ at Expensive(cost=50, veryExpensive=true)
+ at Whitefish
+public class Halibut implements Animal
+{
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/Halibut.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/RoundWhitefish.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/RoundWhitefish.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/RoundWhitefish.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.test.beans;
+
+import org.jboss.webbeans.test.annotations.Expensive;
+import org.jboss.webbeans.test.annotations.Whitefish;
+
+ at Expensive(cost=60, veryExpensive=true)
+ at Whitefish
+public class RoundWhitefish implements Animal
+{
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/RoundWhitefish.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingAnnotationMemberAnnotationLiteral.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingAnnotationMemberAnnotationLiteral.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingAnnotationMemberAnnotationLiteral.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -0,0 +1,10 @@
+package org.jboss.webbeans.test.bindings;
+
+import javax.webbeans.AnnotationLiteral;
+
+import org.jboss.webbeans.test.annotations.broken.BindingTypeWithBindingAnnotationMember;
+
+public abstract class BindingTypeWithBindingAnnotationMemberAnnotationLiteral extends AnnotationLiteral<BindingTypeWithBindingAnnotationMember> implements BindingTypeWithBindingAnnotationMember
+{
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingAnnotationMemberAnnotationLiteral.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingArrayTypeMemberAnnotationLiteral.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingArrayTypeMemberAnnotationLiteral.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingArrayTypeMemberAnnotationLiteral.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -0,0 +1,10 @@
+package org.jboss.webbeans.test.bindings;
+
+import javax.webbeans.AnnotationLiteral;
+
+import org.jboss.webbeans.test.annotations.broken.BindingTypeWithBindingArrayTypeMember;
+
+public abstract class BindingTypeWithBindingArrayTypeMemberAnnotationLiteral extends AnnotationLiteral<BindingTypeWithBindingArrayTypeMember> implements BindingTypeWithBindingArrayTypeMember
+{
+
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/BindingTypeWithBindingArrayTypeMemberAnnotationLiteral.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/ExpensiveAnnotationLiteral.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/ExpensiveAnnotationLiteral.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/ExpensiveAnnotationLiteral.java	2008-10-28 00:41:01 UTC (rev 187)
@@ -0,0 +1,10 @@
+package org.jboss.webbeans.test.bindings;
+
+import javax.webbeans.AnnotationLiteral;
+
+import org.jboss.webbeans.test.annotations.Expensive;
+
+public abstract class ExpensiveAnnotationLiteral extends AnnotationLiteral<Expensive> implements Expensive
+{
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/bindings/ExpensiveAnnotationLiteral.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the weld-commits mailing list