[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