Weld SVN: r4627 - cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/interceptors/definition/custom.
by weld-commits@lists.jboss.org
Author: marius.bogoevici
Date: 2009-11-03 14:11:21 -0500 (Tue, 03 Nov 2009)
New Revision: 4627
Modified:
cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/interceptors/definition/custom/CustomInterceptorImplementation.java
Log:
WELD-238: Set getInterceptorBindingsCalled correctly.
Modified: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/interceptors/definition/custom/CustomInterceptorImplementation.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/interceptors/definition/custom/CustomInterceptorImplementation.java 2009-11-03 18:58:17 UTC (rev 4626)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/interceptors/definition/custom/CustomInterceptorImplementation.java 2009-11-03 19:11:21 UTC (rev 4627)
@@ -93,6 +93,7 @@
public Set<Annotation> getInterceptorBindings()
{
+ getInterceptorBindingsCalled = true;
return Collections.unmodifiableSet(interceptorBindingTypes);
}
16 years, 5 months
Weld SVN: r4626 - in core/trunk/impl/src/main/java/org/jboss/weld: introspector/jlr and 2 other directories.
by weld-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-11-03 13:58:17 -0500 (Tue, 03 Nov 2009)
New Revision: 4626
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldAnnotated.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldCallable.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldMember.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldAnnotationImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldFieldImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldMethodImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldParameterImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java
core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java
Log:
generalize fix for WELD-201
Modified: core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -631,7 +631,7 @@
}
bindingAnnotations.add(new AnyLiteral());
Set<ObserverMethod<? super T>> observers = new HashSet<ObserverMethod<? super T>>();
- Set<ObserverMethod<?>> eventObservers = observerResolver.resolve(ResolvableFactory.of(new Reflections.HierarchyDiscovery(eventType).getTypeClosureAsSet(), bindingAnnotations, null));
+ Set<ObserverMethod<?>> eventObservers = observerResolver.resolve(ResolvableFactory.of(new Reflections.HierarchyDiscovery(eventType).getTypeClosure(), bindingAnnotations, null));
for (ObserverMethod<?> observer : eventObservers)
{
observers.add((ObserverMethod<T>) observer);
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldAnnotated.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldAnnotated.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldAnnotated.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -29,7 +29,6 @@
import org.jboss.weld.introspector.WeldAnnotated;
import org.jboss.weld.util.Proxies;
import org.jboss.weld.util.Reflections;
-import org.jboss.weld.util.Reflections.HierarchyDiscovery;
import org.jboss.weld.util.collections.Arrays2;
/**
@@ -77,7 +76,7 @@
* @param annotationMap A map of annotation to register
*
*/
- public AbstractWeldAnnotated(AnnotationStore annotatedItemHelper, Class<T> rawType, Type type)
+ public AbstractWeldAnnotated(AnnotationStore annotatedItemHelper, Class<T> rawType, Type type, Set<Type> typeClosure)
{
this.annotationStore = annotatedItemHelper;
this.rawType = rawType;
@@ -91,14 +90,13 @@
this.actualTypeArguments = new Type[0];
}
this._parameterizedType = Reflections.isParameterizedType(rawType);
- HierarchyDiscovery discovery = new Reflections.HierarchyDiscovery(type);
this.interfaceOnlyFlattenedTypes = new HashSet<Type>();
for (Type t : rawType.getGenericInterfaces())
{
- interfaceOnlyFlattenedTypes.addAll(new Reflections.HierarchyDiscovery(t).getTypeClosureAsSet());
+ interfaceOnlyFlattenedTypes.addAll(new Reflections.HierarchyDiscovery(t).getTypeClosure());
}
- this.typeClosureAsSet = discovery.getTypeClosureAsSet();
- this.typeClosureAsMap = discovery.getTypeClosureAsMap();
+ this.typeClosureAsMap = Reflections.buildTypeMap(typeClosure);
+ this.typeClosureAsSet = typeClosure;
this.proxyable = Proxies.isTypesProxyable(typeClosureAsSet);
}
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldCallable.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldCallable.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldCallable.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -18,6 +18,7 @@
import java.lang.reflect.Member;
import java.lang.reflect.Type;
+import java.util.Set;
import org.jboss.weld.introspector.AnnotationStore;
import org.jboss.weld.introspector.WeldCallable;
@@ -32,9 +33,9 @@
- protected AbstractWeldCallable(AnnotationStore annotatedItemHelper, Member member, Class<T> rawType, Type type, WeldClass<X> declaringType)
+ protected AbstractWeldCallable(AnnotationStore annotatedItemHelper, Member member, Class<T> rawType, Type type, Set<Type> typeClosure, WeldClass<X> declaringType)
{
- super(annotatedItemHelper, member, rawType, type, declaringType);
+ super(annotatedItemHelper, member, rawType, type, typeClosure, declaringType);
}
}
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldMember.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldMember.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldMember.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -19,6 +19,7 @@
import java.lang.reflect.Member;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
+import java.util.Set;
import org.jboss.weld.introspector.AnnotationStore;
import org.jboss.weld.introspector.ForwardingWeldMember;
@@ -60,9 +61,9 @@
*
* @param annotationMap The annotation map
*/
- protected AbstractWeldMember(AnnotationStore annotatedItemHelper, Member member, Class<T> rawType, Type type, WeldClass<X> declaringType)
+ protected AbstractWeldMember(AnnotationStore annotatedItemHelper, Member member, Class<T> rawType, Type type, Set<Type> typeClosure, WeldClass<X> declaringType)
{
- super(annotatedItemHelper, rawType, type);
+ super(annotatedItemHelper, rawType, type, typeClosure);
name = member.getName();
this._public = Modifier.isPublic(member.getModifiers());
this._private = Modifier.isPrivate(member.getModifiers());
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldAnnotationImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldAnnotationImpl.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldAnnotationImpl.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -31,6 +31,7 @@
import org.jboss.weld.introspector.WeldMethod;
import org.jboss.weld.resources.ClassTransformer;
import org.jboss.weld.util.Names;
+import org.jboss.weld.util.Reflections;
import com.google.common.base.Supplier;
import com.google.common.collect.Multimaps;
@@ -74,7 +75,7 @@
*/
protected WeldAnnotationImpl(Class<T> annotationType, ClassTransformer classTransformer)
{
- super(annotationType, annotationType, null, AnnotationStore.of(annotationType, classTransformer.getTypeStore().get(annotationType), classTransformer.getTypeStore().get(annotationType), classTransformer.getTypeStore()), classTransformer);
+ super(annotationType, annotationType, null, new Reflections.HierarchyDiscovery(annotationType).getTypeClosure(), AnnotationStore.of(annotationType, classTransformer.getTypeStore().get(annotationType), classTransformer.getTypeStore().get(annotationType), classTransformer.getTypeStore()), classTransformer);
this.clazz = annotationType;
this.toString = "class " + Names.classToString(getDelegate());
members = new HashSet<WeldMethod<?, ?>>();
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -46,7 +46,6 @@
import org.jboss.weld.introspector.WeldMethod;
import org.jboss.weld.resources.ClassTransformer;
import org.jboss.weld.util.Names;
-import org.jboss.weld.util.Proxies;
import org.jboss.weld.util.Reflections;
import com.google.common.base.Supplier;
@@ -127,32 +126,28 @@
private final boolean _local;
private final boolean _anonymous;
private final boolean _enum;
- private final boolean _proxyable;
-
- private final Set<Type> typeClosureAsSet;
- private final Map<Class<?>, Type> typeClosureAsMap;
public static <T> WeldClass<T> of(Class<T> clazz, ClassTransformer classTransformer)
{
AnnotationStore annotationStore = AnnotationStore.of(clazz.getAnnotations(), clazz.getDeclaredAnnotations(), classTransformer.getTypeStore());
- return new WeldClassImpl<T>(clazz, clazz, null, annotationStore, classTransformer);
+ return new WeldClassImpl<T>(clazz, clazz, null, new Reflections.HierarchyDiscovery(clazz).getTypeClosure(), annotationStore, classTransformer);
}
public static <T> WeldClass<T> of(AnnotatedType<T> annotatedType, ClassTransformer classTransformer)
{
AnnotationStore annotationStore = AnnotationStore.of(annotatedType.getAnnotations(), annotatedType.getAnnotations(), classTransformer.getTypeStore());
- return new WeldClassImpl<T>(annotatedType.getJavaClass(), annotatedType.getBaseType(), annotatedType, annotationStore, classTransformer);
+ return new WeldClassImpl<T>(annotatedType.getJavaClass(), annotatedType.getBaseType(), annotatedType, annotatedType.getTypeClosure(), annotationStore, classTransformer);
}
public static <T> WeldClass<T> of(Class<T> rawType, Type type, ClassTransformer classTransformer)
{
AnnotationStore annotationStore = AnnotationStore.of(rawType.getAnnotations(), rawType.getDeclaredAnnotations(), classTransformer.getTypeStore());
- return new WeldClassImpl<T>(rawType, type, null, annotationStore, classTransformer);
+ return new WeldClassImpl<T>(rawType, type, null, new Reflections.HierarchyDiscovery(type).getTypeClosure(), annotationStore, classTransformer);
}
- protected WeldClassImpl(Class<T> rawType, Type type, AnnotatedType<T> annotatedType, AnnotationStore annotationStore, ClassTransformer classTransformer)
+ protected WeldClassImpl(Class<T> rawType, Type type, AnnotatedType<T> annotatedType, Set<Type> typeClosure, AnnotationStore annotationStore, ClassTransformer classTransformer)
{
- super(annotationStore, rawType, type);
+ super(annotationStore, rawType, type, typeClosure);
this.toString = "class " + Names.classToString(rawType);
this.name = rawType.getName();
this._simpleName = rawType.getSimpleName();
@@ -169,20 +164,6 @@
this._packagePrivate = Reflections.isPackagePrivate(rawType.getModifiers());
this._package = rawType.getPackage();
- if (annotatedType == null)
- {
- // If this annotated type has not been enhanced, use the default version
- this.typeClosureAsSet = super.getTypeClosure();
- this.typeClosureAsMap = super.getTypeClosureAsMap();
- this._proxyable = super.isProxyable();
- }
- else
- {
- this.typeClosureAsSet = annotatedType.getTypeClosure();
- this.typeClosureAsMap = Reflections.buildTypeMap(typeClosureAsSet);
- this._proxyable = Proxies.isTypesProxyable(typeClosureAsSet);
- }
-
this.fields = new HashSet<WeldField<?, ?>>();
this.annotatedFields = Multimaps.newSetMultimap(new HashMap<Class<? extends Annotation>, Collection<WeldField<?, ?>>>(), new Supplier< Set<WeldField<?, ?>>>()
{
@@ -807,23 +788,5 @@
{
return (Set) methods;
}
-
- @Override
- public boolean isProxyable()
- {
- return _proxyable;
- }
-
- @Override
- public Set<Type> getTypeClosure()
- {
- return typeClosureAsSet;
- }
-
- @Override
- public Map<Class<?>, Type> getTypeClosureAsMap()
- {
- return typeClosureAsMap;
- }
}
\ No newline at end of file
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -28,6 +28,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedConstructor;
import javax.enterprise.inject.spi.AnnotatedParameter;
@@ -73,13 +74,13 @@
public static <T> WeldConstructor<T> of(Constructor<T> constructor, WeldClass<T> declaringClass, ClassTransformer classTransformer)
{
AnnotationStore annotationStore = AnnotationStore.of(constructor, classTransformer.getTypeStore());
- return new WeldConstructorImpl<T>(ensureAccessible(constructor), null, annotationStore, declaringClass, classTransformer);
+ return new WeldConstructorImpl<T>(ensureAccessible(constructor), null, new Reflections.HierarchyDiscovery(constructor.getDeclaringClass()).getTypeClosure(), annotationStore, declaringClass, classTransformer);
}
public static <T> WeldConstructor<T> of(AnnotatedConstructor<T> annotatedConstructor, WeldClass<T> declaringClass, ClassTransformer classTransformer)
{
AnnotationStore annotationStore = AnnotationStore.of(annotatedConstructor.getAnnotations(), annotatedConstructor.getAnnotations(), classTransformer.getTypeStore());
- return new WeldConstructorImpl<T>(ensureAccessible(annotatedConstructor.getJavaMember()), annotatedConstructor, annotationStore, declaringClass, classTransformer);
+ return new WeldConstructorImpl<T>(ensureAccessible(annotatedConstructor.getJavaMember()), annotatedConstructor, annotatedConstructor.getTypeClosure(), annotationStore, declaringClass, classTransformer);
}
/**
@@ -90,9 +91,9 @@
* @param constructor The constructor method
* @param declaringClass The declaring class
*/
- private WeldConstructorImpl(Constructor<T> constructor, AnnotatedConstructor<T> annotatedConstructor, AnnotationStore annotationStore, WeldClass<T> declaringClass, ClassTransformer classTransformer)
+ private WeldConstructorImpl(Constructor<T> constructor, AnnotatedConstructor<T> annotatedConstructor, Set<Type> typeClosure, AnnotationStore annotationStore, WeldClass<T> declaringClass, ClassTransformer classTransformer)
{
- super(annotationStore, constructor, constructor.getDeclaringClass(), constructor.getDeclaringClass(), declaringClass);
+ super(annotationStore, constructor, constructor.getDeclaringClass(), constructor.getDeclaringClass(), typeClosure, declaringClass);
this.toString = new StringBuilder().append("constructor ").append(constructor.toString()).toString();
this.constructor = constructor;
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldFieldImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldFieldImpl.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldFieldImpl.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -19,6 +19,8 @@
import static org.jboss.weld.util.Reflections.ensureAccessible;
import java.lang.reflect.Field;
+import java.lang.reflect.Type;
+import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedField;
@@ -49,13 +51,13 @@
public static <T, X> WeldFieldImpl<T, X> of(Field field, WeldClass<X> declaringClass, ClassTransformer classTransformer)
{
AnnotationStore annotationStore = AnnotationStore.of(field, classTransformer.getTypeStore());
- return new WeldFieldImpl<T, X>(ensureAccessible(field), annotationStore, declaringClass, classTransformer);
+ return new WeldFieldImpl<T, X>(ensureAccessible(field), new Reflections.HierarchyDiscovery(field.getGenericType()).getTypeClosure(), annotationStore, declaringClass, classTransformer);
}
public static <T, X> WeldFieldImpl<T, X> of(AnnotatedField<? super X> annotatedField, WeldClass<X> declaringClass, ClassTransformer classTransformer)
{
AnnotationStore annotationStore = AnnotationStore.of(annotatedField.getAnnotations(), annotatedField.getAnnotations(), classTransformer.getTypeStore());
- return new WeldFieldImpl<T, X>(ensureAccessible(annotatedField.getJavaMember()), annotationStore, declaringClass, classTransformer);
+ return new WeldFieldImpl<T, X>(ensureAccessible(annotatedField.getJavaMember()), annotatedField.getTypeClosure(), annotationStore, declaringClass, classTransformer);
}
/**
@@ -67,9 +69,9 @@
* @param field The actual field
* @param declaringClass The abstraction of the declaring class
*/
- private WeldFieldImpl(Field field, AnnotationStore annotationStore, WeldClass<X> declaringClass, ClassTransformer classTransformer)
+ private WeldFieldImpl(Field field, Set<Type> typeClosure, AnnotationStore annotationStore, WeldClass<X> declaringClass, ClassTransformer classTransformer)
{
- super(annotationStore, field, (Class<T>) field.getType(), field.getGenericType(), declaringClass);
+ super(annotationStore, field, (Class<T>) field.getType(), field.getGenericType(), typeClosure, declaringClass);
this.field = field;
this.toString = new StringBuilder().append("field ").append(declaringClass.getName()).append(".").append(field.getName()).toString();
}
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldMethodImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldMethodImpl.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldMethodImpl.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -29,6 +29,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedParameter;
@@ -77,13 +78,13 @@
public static <T, X> WeldMethodImpl<T, X> of(Method method, WeldClass<X> declaringClass, ClassTransformer classTransformer)
{
AnnotationStore annotationStore = AnnotationStore.of(method, classTransformer.getTypeStore());
- return new WeldMethodImpl<T, X>(ensureAccessible(method), null, annotationStore, declaringClass, classTransformer);
+ return new WeldMethodImpl<T, X>(ensureAccessible(method),new Reflections.HierarchyDiscovery(method.getGenericReturnType()).getTypeClosure(), null, annotationStore, declaringClass, classTransformer);
}
public static <T, X> WeldMethodImpl<T, X> of(AnnotatedMethod<T> method, WeldClass<X> declaringClass, ClassTransformer classTransformer)
{
AnnotationStore annotationStore = AnnotationStore.of(method.getAnnotations(), method.getAnnotations(), classTransformer.getTypeStore());
- return new WeldMethodImpl<T, X>(ensureAccessible(method.getJavaMember()), method, annotationStore, declaringClass, classTransformer);
+ return new WeldMethodImpl<T, X>(ensureAccessible(method.getJavaMember()), method.getTypeClosure(), method, annotationStore, declaringClass, classTransformer);
}
/**
@@ -96,9 +97,9 @@
* @param declaringClass The declaring class abstraction
*/
@SuppressWarnings("unchecked")
- private WeldMethodImpl(Method method, AnnotatedMethod<T> annotatedMethod, AnnotationStore annotationStore, WeldClass<X> declaringClass, ClassTransformer classTransformer)
+ private WeldMethodImpl(Method method, Set<Type> typeClosure, AnnotatedMethod<T> annotatedMethod, AnnotationStore annotationStore, WeldClass<X> declaringClass, ClassTransformer classTransformer)
{
- super(annotationStore, method, (Class<T>) method.getReturnType(), method.getGenericReturnType(), declaringClass);
+ super(annotationStore, method, (Class<T>) method.getReturnType(), method.getGenericReturnType(), typeClosure, declaringClass);
this.method = method;
this.toString = new StringBuilder().append("method ").append(method.toString()).toString();
this.parameters = new ArrayList<WeldParameter<?, X>>();
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldParameterImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldParameterImpl.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldParameterImpl.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -26,6 +26,7 @@
import org.jboss.weld.introspector.WeldCallable;
import org.jboss.weld.introspector.WeldParameter;
import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.Reflections;
/**
* Represents a parameter
@@ -56,12 +57,12 @@
public static <T, X> WeldParameter<T, X> of(Annotation[] annotations, Class<T> rawType, Type type, WeldCallable<?, X, ?> declaringMember, int position, ClassTransformer classTransformer)
{
- return new WeldParameterImpl<T, X>(annotations, rawType, type, declaringMember, position, classTransformer);
+ return new WeldParameterImpl<T, X>(annotations, rawType, type, new Reflections.HierarchyDiscovery(type).getTypeClosure(), declaringMember, position, classTransformer);
}
public static <T, X> WeldParameter<T, X> of(Set<Annotation> annotations, Class<T> rawType, Type type, WeldCallable<?, X, ?> declaringMember, int position, ClassTransformer classTransformer)
{
- return new WeldParameterImpl<T, X>(annotations.toArray(EMPTY_ANNOTATION_ARRAY), rawType, type, declaringMember, position, classTransformer);
+ return new WeldParameterImpl<T, X>(annotations.toArray(EMPTY_ANNOTATION_ARRAY), rawType, type, new Reflections.HierarchyDiscovery(type).getTypeClosure(), declaringMember, position, classTransformer);
}
/**
@@ -70,9 +71,9 @@
* @param annotations The annotations array
* @param type The type of the parameter
*/
- protected WeldParameterImpl(Annotation[] annotations, Class<T> rawType, Type type, WeldCallable<?, X, ?> declaringMember, int position, ClassTransformer classTransformer)
+ protected WeldParameterImpl(Annotation[] annotations, Class<T> rawType, Type type, Set<Type> typeClosure, WeldCallable<?, X, ?> declaringMember, int position, ClassTransformer classTransformer)
{
- super(AnnotationStore.of(annotations, annotations, classTransformer.getTypeStore()), rawType, type);
+ super(AnnotationStore.of(annotations, annotations, classTransformer.getTypeStore()), rawType, type, typeClosure);
this.declaringMember = declaringMember;
this._package = declaringMember.getPackage();
this.position = position;
Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -86,7 +86,7 @@
else
{
final Class<?> javaClass = originalNewAnnotation.value();
- final Set<Type> typeClosure = new Reflections.HierarchyDiscovery(javaClass).getTypeClosureAsSet();
+ final Set<Type> typeClosure = new Reflections.HierarchyDiscovery(javaClass).getTypeClosure();
return new ForwardingResolvable()
{
Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java 2009-11-03 18:57:08 UTC (rev 4625)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java 2009-11-03 18:58:17 UTC (rev 4626)
@@ -71,7 +71,6 @@
private final Type type;
- private Map<Class<?>, Type> typeMap;
private Set<Type> typeSet;
public HierarchyDiscovery(Type type)
@@ -82,13 +81,9 @@
protected void add(Class<?> clazz, Type type)
{
typeSet.add(type);
- if (clazz != null)
- {
- typeMap.put(clazz, type);
- }
}
- public Set<Type> getTypeClosureAsSet()
+ public Set<Type> getTypeClosure()
{
if (typeSet == null)
{
@@ -97,19 +92,9 @@
return typeSet;
}
- public Map<Class<?>, Type> getTypeClosureAsMap()
- {
- if (typeMap == null)
- {
- init();
- }
- return typeMap;
- }
-
private void init()
{
this.typeSet = new HashSet<Type>();
- this.typeMap = new HashMap<Class<?>, Type>();
discoverTypes(type);
}
16 years, 5 months
Weld SVN: r4625 - in cdi-tck/trunk/impl/src/main: resources and 1 other directory.
by weld-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-11-03 13:57:08 -0500 (Tue, 03 Nov 2009)
New Revision: 4625
Modified:
cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java
cdi-tck/trunk/impl/src/main/resources/tck-audit-cdi.xml
Log:
Split out tests
Modified: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java 2009-11-03 18:36:28 UTC (rev 4624)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java 2009-11-03 18:57:08 UTC (rev 4625)
@@ -58,7 +58,7 @@
}
@Test
- @SpecAssertion(section = "11.4", id = "k")
+ @SpecAssertion(section = "11.4", id = "ka")
// WELD-201
public void testGetTypeClosureUsed() {
assert GroceryWrapper.isGetTypeClosureUsed();
Modified: cdi-tck/trunk/impl/src/main/resources/tck-audit-cdi.xml
===================================================================
--- cdi-tck/trunk/impl/src/main/resources/tck-audit-cdi.xml 2009-11-03 18:36:28 UTC (rev 4624)
+++ cdi-tck/trunk/impl/src/main/resources/tck-audit-cdi.xml 2009-11-03 18:57:08 UTC (rev 4625)
@@ -5450,9 +5450,21 @@
<text>Check that |getBaseType()| is used to determine the type of _disposed parameter_. The base type should be different from the orignal type specified in the class definition</text>
</assertion>
- <assertion id="k">
- <text>Check that a |getTypeClosure()| is used to determine the bean types. The type closure should be different from the orignal type specified in the class definition.</text>
+ <assertion id="ka">
+ <text>Check that a |getTypeClosure()| is used to determine the bean types for a managed bean. The type closure should be different from the orignal type specified in the class definition.</text>
</assertion>
+
+ <assertion id="kb">
+ <text>Check that a |getTypeClosure()| is used to determine the bean types for a session bean. The type closure should be different from the orignal type specified in the class definition.</text>
+ </assertion>
+
+ <assertion id="kc">
+ <text>Check that a |getTypeClosure()| is used to determine the bean types for a producer field. The type closure should be different from the orignal type specified in the class definition.</text>
+ </assertion>
+
+ <assertion id="kd">
+ <text>Check that a |getTypeClosure()| is used to determine the bean types for a producer method. The type closure should be different from the orignal type specified in the class definition.</text>
+ </assertion>
<assertion id="l">
<text>Check that |getAnnotations()| is used to determine the bean scope. The annotations should be different from the orignal type specified in the class definition.</text>
16 years, 5 months
Weld SVN: r4624 - in cdi-tck/trunk/impl/src/main: resources and 1 other directory.
by weld-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-11-03 13:36:28 -0500 (Tue, 03 Nov 2009)
New Revision: 4624
Modified:
cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java
cdi-tck/trunk/impl/src/main/resources/tck-audit-cdi.xml
Log:
split out assertions
Modified: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java 2009-11-03 18:30:41 UTC (rev 4623)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java 2009-11-03 18:36:28 UTC (rev 4624)
@@ -49,9 +49,9 @@
public class AlternativeMetadataTest extends AbstractJSR299Test
{
@Test(groups = "ri-broken")
- @SpecAssertion(section = "11.4", id = "h")
+ @SpecAssertion(section = "11.4", id = "ha")
// WELD-200
- public void testGetBaseTypeUsedToDetermineTypeOfInjectionPoing() {
+ public void testGetBaseTypeUsedToDetermineTypeOfInjectionPoint() {
// The base type of the fruit injection point is overridden to TropicalFruit
assert GroceryWrapper.isGetBaseTypeOfFruitFieldUsed();
assert getInstanceByType(Grocery.class, new AnyLiteral()).getFruit().getMetadata().getType().equals(TropicalFruit.class);
Modified: cdi-tck/trunk/impl/src/main/resources/tck-audit-cdi.xml
===================================================================
--- cdi-tck/trunk/impl/src/main/resources/tck-audit-cdi.xml 2009-11-03 18:30:41 UTC (rev 4623)
+++ cdi-tck/trunk/impl/src/main/resources/tck-audit-cdi.xml 2009-11-03 18:36:28 UTC (rev 4624)
@@ -5418,10 +5418,30 @@
<group>
<text>The container must use the operations of |Annotated| and its subinterfaces to discover program element types and annotations, instead of directly calling the Java Reflection API. In particular, the container must call |Annotated.getBaseType()| to determine the type of an injection point, event parameter or disposed parameter, call |Annotated.getTypeClosure()| to determine the bean types of any kind of bean, call |Annotated.getAnnotations()| to determine the scope, qualifiers, stereotypes and interceptor bindings of a bean, call |Annotated.isAnnotationPresent()| and |Annotated.getAnnotation()| to read any bean annotations defined by this specification, and call |AnnotatedType.getConstructors()|, |AnnotatedType.getMethods()| and |AnnotatedType.getFields()| to determine the members of a bean class.</text>
- <assertion id="h">
- <text>Check that |getBaseType()| is used to determine the type of _an injection point_. The base type should be different from the orignal type specified in the class definition</text>
+ <assertion id="ha">
+ <text>Check that |getBaseType()| is used to determine the type of _a field injection point_. The base type should be different from the orignal type specified in the class definition</text>
</assertion>
+ <assertion id="hb">
+ <text>Check that |getBaseType()| is used to determine the type of _an initializer method injection point_. The base type should be different from the orignal type specified in the class definition</text>
+ </assertion>
+
+ <assertion id="hc">
+ <text>Check that |getBaseType()| is used to determine the type of _a constructor injection point_. The base type should be different from the orignal type specified in the class definition</text>
+ </assertion>
+
+ <assertion id="hd">
+ <text>Check that |getBaseType()| is used to determine the type of _a producer method injection point_. The base type should be different from the orignal type specified in the class definition</text>
+ </assertion>
+
+ <assertion id="he">
+ <text>Check that |getBaseType()| is used to determine the type of _a observer method injection point_. The base type should be different from the orignal type specified in the class definition</text>
+ </assertion>
+
+ <assertion id="hf">
+ <text>Check that |getBaseType()| is used to determine the type of _a disposer method injection point_. The base type should be different from the orignal type specified in the class definition</text>
+ </assertion>
+
<assertion id="i">
<text>Check that |getBaseType()| is used to determine the type of _an event parameter_. The base type should be different from the orignal type specified in the class definition</text>
</assertion>
16 years, 5 months
Weld SVN: r4623 - core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr and 1 other directories.
by weld-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-11-03 13:30:41 -0500 (Tue, 03 Nov 2009)
New Revision: 4623
Modified:
cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java
Log:
WELD-201
Modified: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java 2009-11-03 17:53:48 UTC (rev 4622)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/alternative/metadata/AlternativeMetadataTest.java 2009-11-03 18:30:41 UTC (rev 4623)
@@ -57,7 +57,7 @@
assert getInstanceByType(Grocery.class, new AnyLiteral()).getFruit().getMetadata().getType().equals(TropicalFruit.class);
}
- @Test(groups = "ri-broken")
+ @Test
@SpecAssertion(section = "11.4", id = "k")
// WELD-201
public void testGetTypeClosureUsed() {
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java 2009-11-03 17:53:48 UTC (rev 4622)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java 2009-11-03 18:30:41 UTC (rev 4623)
@@ -46,6 +46,7 @@
import org.jboss.weld.introspector.WeldMethod;
import org.jboss.weld.resources.ClassTransformer;
import org.jboss.weld.util.Names;
+import org.jboss.weld.util.Proxies;
import org.jboss.weld.util.Reflections;
import com.google.common.base.Supplier;
@@ -126,6 +127,10 @@
private final boolean _local;
private final boolean _anonymous;
private final boolean _enum;
+ private final boolean _proxyable;
+
+ private final Set<Type> typeClosureAsSet;
+ private final Map<Class<?>, Type> typeClosureAsMap;
public static <T> WeldClass<T> of(Class<T> clazz, ClassTransformer classTransformer)
{
@@ -163,6 +168,21 @@
this._private = Modifier.isPrivate(rawType.getModifiers());
this._packagePrivate = Reflections.isPackagePrivate(rawType.getModifiers());
this._package = rawType.getPackage();
+
+ if (annotatedType == null)
+ {
+ // If this annotated type has not been enhanced, use the default version
+ this.typeClosureAsSet = super.getTypeClosure();
+ this.typeClosureAsMap = super.getTypeClosureAsMap();
+ this._proxyable = super.isProxyable();
+ }
+ else
+ {
+ this.typeClosureAsSet = annotatedType.getTypeClosure();
+ this.typeClosureAsMap = Reflections.buildTypeMap(typeClosureAsSet);
+ this._proxyable = Proxies.isTypesProxyable(typeClosureAsSet);
+ }
+
this.fields = new HashSet<WeldField<?, ?>>();
this.annotatedFields = Multimaps.newSetMultimap(new HashMap<Class<? extends Annotation>, Collection<WeldField<?, ?>>>(), new Supplier< Set<WeldField<?, ?>>>()
{
@@ -787,5 +807,23 @@
{
return (Set) methods;
}
+
+ @Override
+ public boolean isProxyable()
+ {
+ return _proxyable;
+ }
+
+ @Override
+ public Set<Type> getTypeClosure()
+ {
+ return typeClosureAsSet;
+ }
+
+ @Override
+ public Map<Class<?>, Type> getTypeClosureAsMap()
+ {
+ return typeClosureAsMap;
+ }
}
\ No newline at end of file
Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java 2009-11-03 17:53:48 UTC (rev 4622)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java 2009-11-03 18:30:41 UTC (rev 4623)
@@ -271,6 +271,26 @@
}
}
+
+ public static Map<Class<?>, Type> buildTypeMap(Set<Type> types)
+ {
+ Map<Class<?>, Type> map = new HashMap<Class<?>, Type>();
+ for (Type type : types)
+ {
+ if (type instanceof Class<?>)
+ {
+ map.put((Class<?>) type, type);
+ }
+ else if (type instanceof ParameterizedType)
+ {
+ if (((ParameterizedType) type).getRawType() instanceof Class<?>)
+ {
+ map.put((Class<?>) ((ParameterizedType) type).getRawType(), type);
+ }
+ }
+ }
+ return map;
+ }
/**
* Gets the property name from a getter method
16 years, 5 months
Weld SVN: r4622 - core/trunk/impl/src/main/java/org/jboss/weld/event and 1 other directory.
by weld-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-11-03 12:53:48 -0500 (Tue, 03 Nov 2009)
New Revision: 4622
Modified:
cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/container/event/ContainerEventTest.java
cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/container/event/ProcessInjectionTargetObserver.java
core/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java
Log:
WELD-218
Modified: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/container/event/ContainerEventTest.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/container/event/ContainerEventTest.java 2009-11-03 17:34:07 UTC (rev 4621)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/container/event/ContainerEventTest.java 2009-11-03 17:53:48 UTC (rev 4622)
@@ -92,6 +92,7 @@
assert ProcessInjectionTargetObserver.getEvent3Observed() == 0;
assert ProcessInjectionTargetObserver.getEvent4Observed() == 0;
assert ProcessInjectionTargetObserver.getEvent5Observed() == 1;
+ assert ProcessInjectionTargetObserver.getEventWithTypeVariable() != null;
}
@Test
Modified: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/container/event/ProcessInjectionTargetObserver.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/container/event/ProcessInjectionTargetObserver.java 2009-11-03 17:34:07 UTC (rev 4621)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/container/event/ProcessInjectionTargetObserver.java 2009-11-03 17:53:48 UTC (rev 4622)
@@ -10,6 +10,7 @@
private static ProcessInjectionTarget<Cow> statefulSessionBeanEvent = null;
private static ProcessInjectionTarget<SheepInterceptor> sessionBeanInterceptorEvent = null;
private static ProcessInjectionTarget<Farm> managedBeanEvent = null;
+ private static ProcessInjectionTarget<?> eventWithTypeVariable = null;
private static int event1Observed = 0;
private static int event2Observed = 0;
@@ -54,6 +55,11 @@
event5Observed++;
}
+ public <X> void processInjectionTarget(@Observes ProcessInjectionTarget<X> event)
+ {
+ eventWithTypeVariable = event;
+ }
+
public static ProcessInjectionTarget<Sheep> getStatelessSessionBeanEvent()
{
return statelessSessionBeanEvent;
@@ -73,6 +79,11 @@
{
return managedBeanEvent;
}
+
+ public static ProcessInjectionTarget<?> getEventWithTypeVariable()
+ {
+ return eventWithTypeVariable;
+ }
public static int getEvent1Observed()
{
Modified: core/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java 2009-11-03 17:34:07 UTC (rev 4621)
+++ core/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java 2009-11-03 17:53:48 UTC (rev 4622)
@@ -18,7 +18,6 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -122,28 +121,6 @@
{
throw new DefinitionException(this + " is invalid because it contains more than event parameter annotated @Observes");
}
- // Make sure the event object above is not parameterized with a type
- // variable or wildcard
- if (eventObjects.size() > 0)
- {
- WeldParameter<?, ?> eventParam = eventObjects.iterator().next();
- if (eventParam.isParameterizedType())
- {
- for (Type type : eventParam.getActualTypeArguments())
- {
- if (type instanceof TypeVariable<?>)
- {
- throw new DefinitionException("Cannot use a type variable " + type + " in an parameterized type " + toString());
- }
- // else if (type instanceof WildcardType)
- // {
- // throw new
- // DefinitionException("Cannot use a wildcard variable " + type +
- // " in an parameterized type " + toString());
- // }
- }
- }
- }
// Check for parameters annotated with @Disposes
List<WeldParameter<?, X>> disposeParams = this.observerMethod.getAnnotatedParameters(Disposes.class);
if (disposeParams.size() > 0)
16 years, 5 months
Weld SVN: r4621 - in core/trunk: impl/src/main/java/org/jboss/weld/bootstrap and 4 other directories.
by weld-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-11-03 12:34:07 -0500 (Tue, 03 Nov 2009)
New Revision: 4621
Added:
core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Koala.java
core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Possum.java
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java
core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWeldClass.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/WeldClass.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java
core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Kangaroo.java
core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/WeldClassTest.java
Log:
WELD-216
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java 2009-11-03 17:26:42 UTC (rev 4620)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -270,7 +270,7 @@
@Override
protected void checkType()
{
- if (getAnnotatedItem().isNonStaticMemberClass())
+ if (getAnnotatedItem().isAnonymousClass() || (getAnnotatedItem().isMemberClass() && !getAnnotatedItem().isStatic()))
{
throw new DefinitionException("Simple bean " + type + " cannot be a non-static inner class");
}
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java 2009-11-03 17:26:42 UTC (rev 4620)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -289,7 +289,7 @@
JsfApiAbstraction jsfApiAbstraction = manager.getServices().get(JsfApiAbstraction.class);
ServletApiAbstraction servletApiAbstraction = manager.getServices().get(ServletApiAbstraction.class);
return !Extension.class.isAssignableFrom(clazz.getJavaClass()) &&
- !clazz.isNonStaticMemberClass() &&
+ !(clazz.isAnonymousClass() || (clazz.isMemberClass() && !clazz.isStatic())) &&
!Reflections.isParamerterizedTypeWithWildcard(javaClass) &&
!servletApiAbstraction.SERVLET_CLASS.isAssignableFrom(javaClass) &&
!servletApiAbstraction.FILTER_CLASS.isAssignableFrom(javaClass) &&
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWeldClass.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWeldClass.java 2009-11-03 17:26:42 UTC (rev 4620)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWeldClass.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -107,10 +107,20 @@
return delegate().getWeldSuperclass();
}
- public boolean isNonStaticMemberClass()
+ public boolean isLocalClass()
{
- return delegate().isNonStaticMemberClass();
+ return delegate().isLocalClass();
}
+
+ public boolean isMemberClass()
+ {
+ return delegate().isMemberClass();
+ }
+
+ public boolean isAnonymousClass()
+ {
+ return delegate().isAnonymousClass();
+ }
@Override
public boolean isParameterizedType()
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/WeldClass.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/WeldClass.java 2009-11-03 17:26:42 UTC (rev 4620)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/WeldClass.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -207,18 +207,17 @@
*/
public WeldClass<?> getWeldSuperclass();
- /**
- * Determine if this is a non-static member class
- *
- * @return true if this is a non-static member
- */
- public boolean isNonStaticMemberClass();
-
public boolean isParameterizedType();
public boolean isAbstract();
public boolean isEnum();
+
+ public boolean isMemberClass();
+
+ public boolean isLocalClass();
+
+ public boolean isAnonymousClass();
public <S> S cast(Object object);
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java 2009-11-03 17:26:42 UTC (rev 4620)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -121,8 +121,10 @@
// Cached string representation
private final String toString;
- private final boolean _nonStaticMemberClass;
private final boolean _abstract;
+ private final boolean _member;
+ private final boolean _local;
+ private final boolean _anonymous;
private final boolean _enum;
public static <T> WeldClass<T> of(Class<T> clazz, ClassTransformer classTransformer)
@@ -200,7 +202,9 @@
}
});
- this._nonStaticMemberClass = Reflections.isNonStaticInnerClass(rawType);
+ this._local = rawType.isLocalClass();
+ this._anonymous = rawType.isAnonymousClass();
+ this._member = rawType.isMemberClass();
this._abstract = Reflections.isAbstract(rawType);
this._enum = rawType.isEnum();
@@ -538,10 +542,20 @@
return Collections.unmodifiableSet(annotatedFields.get(annotationType));
}
- public boolean isNonStaticMemberClass()
+ public boolean isLocalClass()
{
- return _nonStaticMemberClass;
+ return _local;
}
+
+ public boolean isAnonymousClass()
+ {
+ return _anonymous;
+ }
+
+ public boolean isMemberClass()
+ {
+ return _member;
+ }
public boolean isAbstract()
{
Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java 2009-11-03 17:26:42 UTC (rev 4620)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -39,6 +39,7 @@
import org.jboss.weld.introspector.WeldConstructor;
import org.jboss.weld.introspector.WeldParameter;
import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.Reflections;
import com.google.common.base.Supplier;
import com.google.common.collect.ListMultimap;
@@ -116,12 +117,24 @@
}
}
+ // If the class is a (non-static) member class, its constructors parameterTypes array will prefix the
+ // outer class instance, whilst the genericParameterTypes array isn't prefix'd
+ int nesting = Reflections.getNesting(declaringClass.getJavaClass());
for (int i = 0; i < constructor.getParameterTypes().length; i++)
{
+ int gi = i - nesting;
if (constructor.getParameterAnnotations()[i].length > 0 || annotatedTypeParameters.containsKey(i))
{
Class<?> clazz = constructor.getParameterTypes()[i];
- Type type = constructor.getGenericParameterTypes()[i];
+ Type type;
+ if (constructor.getGenericParameterTypes().length > gi && gi >=0)
+ {
+ type = constructor.getGenericParameterTypes()[gi];
+ }
+ else
+ {
+ type = clazz;
+ }
WeldParameter<?, T> parameter = null;
if (annotatedTypeParameters.containsKey(i))
{
@@ -144,9 +157,9 @@
{
Class<?> clazz = constructor.getParameterTypes()[i];
Type type;
- if (constructor.getGenericParameterTypes().length > i)
+ if (constructor.getGenericParameterTypes().length > gi && gi >=0)
{
- type = constructor.getGenericParameterTypes()[i];
+ type = constructor.getGenericParameterTypes()[gi];
}
else
{
Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java 2009-11-03 17:26:42 UTC (rev 4620)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -307,6 +307,18 @@
{
return Modifier.isFinal(clazz.getModifiers());
}
+
+ public static int getNesting(Class<?> clazz)
+ {
+ if (clazz.isMemberClass() && !isStatic(clazz))
+ {
+ return 1 + getNesting(clazz.getDeclaringClass());
+ }
+ else
+ {
+ return 0;
+ }
+ }
/**
* Checks if member is final
@@ -396,17 +408,6 @@
}
/**
- * Checks if class is a non-static inner one
- *
- * @param clazz Class to Check
- * @return True if static, false otherwise
- */
- public static boolean isNonStaticInnerClass(Class<?> clazz)
- {
- return (clazz.isMemberClass() || clazz.isAnonymousClass()) && !isStatic(clazz);
- }
-
- /**
* Gets a constructor with matching parameter types
*
* @param <T> The type
Modified: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Kangaroo.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Kangaroo.java 2009-11-03 17:26:42 UTC (rev 4620)
+++ core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Kangaroo.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -1,14 +1,14 @@
package org.jboss.weld.test.unit.reflection.clazz;
-class Kangaroo
+public class Kangaroo
{
LittleKangarooInHerPouch<String> procreate()
{
return new LittleKangarooInHerPouch<String>("Joey");
}
- class LittleKangarooInHerPouch<T>
+ public class LittleKangarooInHerPouch<T>
{
LittleKangarooInHerPouch(T formalParam)
{
Added: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Koala.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Koala.java (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Koala.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -0,0 +1,12 @@
+package org.jboss.weld.test.unit.reflection.clazz;
+
+public class Koala
+{
+
+ public Animal procreate()
+ {
+ class BabyKoala implements Animal {}
+ return new BabyKoala();
+ }
+
+}
Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Koala.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Added: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Possum.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Possum.java (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Possum.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -0,0 +1,12 @@
+package org.jboss.weld.test.unit.reflection.clazz;
+
+
+public class Possum
+{
+
+ public Possum procreate()
+ {
+ return new Possum() {};
+ }
+
+}
Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/Possum.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Modified: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/WeldClassTest.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/WeldClassTest.java 2009-11-03 17:26:42 UTC (rev 4620)
+++ core/trunk/tests/src/test/java/org/jboss/weld/test/unit/reflection/clazz/WeldClassTest.java 2009-11-03 17:34:07 UTC (rev 4621)
@@ -22,12 +22,26 @@
private final ClassTransformer transformer = new ClassTransformer(new TypeStore());
@Test(groups = "broken", description="WELD-216")
- public void testNonStaticInnerClassWithGenericTypes()
+ public void testMemberClassWithGenericTypes()
{
AnnotatedType at = WeldClassImpl.of(new Kangaroo().procreate().getClass(), transformer);
WeldClassImpl.of(at, transformer);
}
+ @Test(description="WELD-216")
+ public void testLocalClassWithGenericTypes()
+ {
+ AnnotatedType at = WeldClassImpl.of(new Koala().procreate().getClass(), transformer);
+ WeldClassImpl.of(at, transformer);
+ }
+
+ @Test(description="WELD-216")
+ public void testAnonymousClassWithGenericTypes()
+ {
+ AnnotatedType at = WeldClassImpl.of(new Possum().procreate().getClass(), transformer);
+ WeldClassImpl.of(at, transformer);
+ }
+
@Test
public void testDeclaredAnnotations()
{
16 years, 5 months
Weld SVN: r4620 - doc/trunk/reference/en-US.
by weld-commits@lists.jboss.org
Author: gavin.king(a)jboss.com
Date: 2009-11-03 12:26:42 -0500 (Tue, 03 Nov 2009)
New Revision: 4620
Modified:
doc/trunk/reference/en-US/intro.xml
Log:
better sigue
Modified: doc/trunk/reference/en-US/intro.xml
===================================================================
--- doc/trunk/reference/en-US/intro.xml 2009-11-03 17:25:20 UTC (rev 4619)
+++ doc/trunk/reference/en-US/intro.xml 2009-11-03 17:26:42 UTC (rev 4620)
@@ -53,7 +53,7 @@
</para>
<para>
- Let's see how to create your first bean.
+ Now let's see how to create your first bean that actually uses CDI.
</para>
</section>
16 years, 5 months
Weld SVN: r4619 - doc/trunk/reference/en-US.
by weld-commits@lists.jboss.org
Author: gavin.king(a)jboss.com
Date: 2009-11-03 12:25:20 -0500 (Tue, 03 Nov 2009)
New Revision: 4619
Modified:
doc/trunk/reference/en-US/intro.xml
Log:
minor fixes
Modified: doc/trunk/reference/en-US/intro.xml
===================================================================
--- doc/trunk/reference/en-US/intro.xml 2009-11-03 16:45:56 UTC (rev 4618)
+++ doc/trunk/reference/en-US/intro.xml 2009-11-03 17:25:20 UTC (rev 4619)
@@ -38,7 +38,7 @@
With very few exceptions, almost every concrete Java class that has a constructor with no parameters (or a
constructor designated with the annotation <literal>@Inject</literal>) is a bean. This includes every
JavaBean and every EJB session bean. If you've already got some JavaBeans or session beans lying around,
- they're already beans—you won't need any additional special metadata. There's just little one thing you
+ they're already beans—you won't need any additional special metadata. There's just little one thing you
need to do before you can start injecting them into stuff: you need to put them in an archive (a jar, or a
Java EE module such as a war or EJB jar) that contains a special marker file: <literal>META-INF/beans.xml</literal>.
</para>
@@ -46,9 +46,9 @@
<para>
The JavaBeans and EJBs you've been writing every day, up until now, have not been able to take advantage
of the new services defined by the CDI specification. But you'll be able to use every one of them with
- CDI—allowing the container to create and destroy instances of your beans and associate them with a
+ CDI—allowing the container to create and destroy instances of your beans and associate them with a
designed context, injecting them into other beans, using them in EL expressions, specializing them with
- qualifier annotations, even adding interceptors and decorators to them—without modifying your
+ qualifier annotations, even adding interceptors and decorators to them—without modifying your
existing code. At most, you'll need to add some annotations.
</para>
@@ -541,23 +541,25 @@
<para>
We've already seen how qualifiers let us choose between multiple implementations of an interface at
development time. But sometimes we have an interface whose implementation varies dependending upon
- the deployment environment. For example, you may want to use a mock implementation in a testing
+ the deployment environment. For example, we may want to use a mock implementation in a testing
environment. An <emphasis>alternative</emphasis> may be declared by annotating the bean class or
producer method or field with the <literal>@Alternative</literal> annotation.
</para>
<programlisting role="JAVA"><![CDATA[@Alternative
public class MockPaymentProcessor extends PaymentProcessorImpl { ... }]]></programlisting>
-
+
<para>
- You can choose between alternatives at deployment time by selecting an alternative using the CDI
- deployment descriptor <literal>META-INF/beans.xml</literal> of the jar or Java EE module that
- uses it.
+ We normally annotate a bean <literal>@Alternative</literal> only when there is some other
+ implementation of some interface it implements. We can choose between alternatives at deployment time
+ by <emphasis>selecting</emphasis> an alternative using the CDI deployment descriptor
+ <literal>META-INF/beans.xml</literal> of the jar or Java EE module that uses it. Different modules
+ can specify that they use different alternatives.
</para>
<para>
- Details on how to enable alternative beans, and how you can use them to specialize (override) beans and
- producer methods is covered in <xref linkend="3"/>.
+ Details on how to enable alternative beans, and how you can use them to specialize (override) beans
+ and producer methods is covered in <xref linkend="3"/>.
</para>
</section>
@@ -619,7 +621,7 @@
</section>
<section>
- <title>What kinds of classes can be beans?</title>
+ <title>What kinds of classes are beans?</title>
<para>
We've already seen that JavaBeans and EJBs can be (CDI) beans. Is that the whole story? Let's start from what
16 years, 5 months
Weld SVN: r4618 - doc/trunk/reference/en-US.
by weld-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-11-03 11:45:56 -0500 (Tue, 03 Nov 2009)
New Revision: 4618
Modified:
doc/trunk/reference/en-US/ri-spi.xml
Log:
document an assumption
Modified: doc/trunk/reference/en-US/ri-spi.xml
===================================================================
--- doc/trunk/reference/en-US/ri-spi.xml 2009-11-03 15:59:17 UTC (rev 4617)
+++ doc/trunk/reference/en-US/ri-spi.xml 2009-11-03 16:45:56 UTC (rev 4618)
@@ -472,6 +472,10 @@
<literal>org.jboss.weld.servlet.WeldListener</literal> as a Servlet listener, either
automatically, or through user configuration, for each CDI application which uses Servlet.
</para>
+ <para>
+ You must ensure that that <literal>WeldListener.contextInitialized()</literal> is called
+ after bootstrap is complete (<literal>Bootstrap.endInitialization()</literal> has been called).
+ </para>
</listitem>
</varlistentry>
<varlistentry>
16 years, 5 months