Author: pete.muir(a)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;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@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;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@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;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@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;
+
+@Expensive(cost=50, veryExpensive=true)
+@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;
+
+@Expensive(cost=60, veryExpensive=true)
+@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