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

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Feb 19 15:27:27 EST 2009


Author: pete.muir at jboss.org
Date: 2009-02-19 15:27:27 -0500 (Thu, 19 Feb 2009)
New Revision: 1605

Added:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/ResolvableAnnotatedClass.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java
Log:
A lightweight annotated class for resolving

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2009-02-19 19:41:05 UTC (rev 1604)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2009-02-19 20:27:27 UTC (rev 1605)
@@ -64,6 +64,7 @@
 import org.jboss.webbeans.ejb.spi.EjbResolver;
 import org.jboss.webbeans.event.EventManager;
 import org.jboss.webbeans.event.ObserverImpl;
+import org.jboss.webbeans.injection.ResolvableAnnotatedClass;
 import org.jboss.webbeans.injection.Resolver;
 import org.jboss.webbeans.introspector.AnnotatedClass;
 import org.jboss.webbeans.introspector.AnnotatedItem;
@@ -288,7 +289,7 @@
     */
    public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... bindings)
    {
-      return resolveByType(AnnotatedClassImpl.of(type, bindings), bindings);
+      return resolveByType(ResolvableAnnotatedClass.of(type, bindings), bindings);
    }
 
    /**
@@ -303,7 +304,7 @@
     */
    public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> type, Annotation... bindings)
    {
-      return resolveByType(AnnotatedClassImpl.of(type, bindings), bindings);
+      return resolveByType(ResolvableAnnotatedClass.of(type, bindings), bindings);
    }
 
    /**
@@ -622,7 +623,7 @@
          {
             currentInjectionPoint.set(injectionPoint);
          }
-         AnnotatedItem<T, ?> element = AnnotatedClassImpl.of((Class<T>) injectionPoint.getType(), injectionPoint.getBindings().toArray(new Annotation[0]));
+         AnnotatedItem<T, ?> element = ResolvableAnnotatedClass.of((Class<T>) injectionPoint.getType(), injectionPoint.getBindings().toArray(new Annotation[0]));
          Bean<T> bean = getBeanByType(element, element.getBindingsAsArray());
          if (creationalContext instanceof CreationalContextImpl)
          {
@@ -689,7 +690,7 @@
     */
    public <T> T getInstanceByType(Class<T> type, Annotation... bindings)
    {
-      return getInstanceByType(AnnotatedClassImpl.of(type, bindings), bindings);
+      return getInstanceByType(ResolvableAnnotatedClass.of(type, bindings), bindings);
    }
 
 
@@ -705,7 +706,7 @@
     */
    public <T> T getInstanceByType(TypeLiteral<T> type, Annotation... bindings)
    {
-      return getInstanceByType(AnnotatedClassImpl.of(type, bindings), bindings);
+      return getInstanceByType(ResolvableAnnotatedClass.of(type, bindings), bindings);
    }
 
    /**

Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/ResolvableAnnotatedClass.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/ResolvableAnnotatedClass.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/ResolvableAnnotatedClass.java	2009-02-19 20:27:27 UTC (rev 1605)
@@ -0,0 +1,94 @@
+package org.jboss.webbeans.injection;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+
+import javax.inject.TypeLiteral;
+
+import org.jboss.webbeans.introspector.AnnotationStore;
+import org.jboss.webbeans.introspector.jlr.AbstractAnnotatedItem;
+
+/**
+ * Extension of an element which bases equality not only on type, but also on
+ * binding type
+ */
+public class ResolvableAnnotatedClass<T> extends AbstractAnnotatedItem<T, Class<T>>
+{
+   
+   private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0];
+   private final Class<T> rawType;
+   private final Type[] actualTypeArguments;
+   
+   private final String _string;
+   
+   public static <T> ResolvableAnnotatedClass<T> of(TypeLiteral<T> typeLiteral, Annotation[] annotations)
+   {
+      return new ResolvableAnnotatedClass<T>(typeLiteral.getRawType(), typeLiteral.getType(), annotations);
+   }
+   
+   public static <T> ResolvableAnnotatedClass<T> of(Class<T> clazz, Annotation[] annotations)
+   {
+      return new ResolvableAnnotatedClass<T>(clazz, clazz, annotations);
+   }
+   
+   private ResolvableAnnotatedClass(Class<T> rawType, Type type, Annotation[] annotations)
+   {
+      super(AnnotationStore.of(annotations, EMPTY_ANNOTATION_ARRAY));
+      this.rawType = rawType;
+      if (type instanceof ParameterizedType)
+      {
+         this.actualTypeArguments = ((ParameterizedType) type).getActualTypeArguments();
+         this._string = rawType.toString() + "<" + Arrays.asList(actualTypeArguments).toString() + ">";
+      }
+      else
+      {
+         this.actualTypeArguments = new Type[0];
+         this._string = rawType.toString();
+      }
+   }
+
+   @Override
+   public String toString()
+   {
+      return _string;
+   }
+
+   @Override
+   public Class<T> getDelegate()
+   {
+      return rawType;
+   }
+
+   public Type[] getActualTypeArguments()
+   {
+      return actualTypeArguments;
+   }
+
+   public String getName()
+   {
+      throw new UnsupportedOperationException();
+   }
+
+   public Class<T> getType()
+   {
+      return rawType;
+   }
+
+   public boolean isFinal()
+   {
+      throw new UnsupportedOperationException();
+   }
+
+   public boolean isPublic()
+   {
+      throw new UnsupportedOperationException();
+   }
+
+   public boolean isStatic()
+   {
+      throw new UnsupportedOperationException();
+   }
+
+}
\ No newline at end of file


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

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java	2009-02-19 19:41:05 UTC (rev 1604)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java	2009-02-19 20:27:27 UTC (rev 1605)
@@ -31,8 +31,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.inject.TypeLiteral;
-
 import org.jboss.webbeans.introspector.AnnotatedClass;
 import org.jboss.webbeans.introspector.AnnotatedConstructor;
 import org.jboss.webbeans.introspector.AnnotatedField;
@@ -265,20 +263,6 @@
    {
       return new AnnotatedClassImpl<T>(clazz, clazz, clazz.getAnnotations(), clazz.getDeclaredAnnotations());
    }
-   
-   // TODO Introduce a lightweight implementation for resolution
-   @Deprecated
-   public static <T> AnnotatedClassImpl<T> of(TypeLiteral<T> typeLiteral, Annotation[] annotations)
-   {
-      return new AnnotatedClassImpl<T>(typeLiteral.getRawType(), typeLiteral.getType(), annotations, annotations);
-   }
-   
-   // TODO Introduce a lightweight implementation for resolution
-   @Deprecated
-   public static <T> AnnotatedClassImpl<T> of(Class<T> clazz, Annotation[] annotations)
-   {
-      return new AnnotatedClassImpl<T>(clazz, clazz, annotations, annotations);
-   }
 
    private AnnotatedClassImpl(Class<T> rawType, Type type, Annotation[] annotations, Annotation[] declaredAnnotations)
    {




More information about the weld-commits mailing list