[weld-commits] Weld SVN: r4626 - in core/trunk/impl/src/main/java/org/jboss/weld: introspector/jlr and 2 other directories.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Tue Nov 3 13:58:17 EST 2009


Author: pete.muir at 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);
       }
 



More information about the weld-commits mailing list