[webbeans-commits] Webbeans SVN: r2314 - in ri/trunk: impl/src/main/java/org/jboss/webbeans/bean/standard and 2 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Mon Apr 6 09:18:28 EDT 2009


Author: pete.muir at jboss.org
Date: 2009-04-06 09:18:28 -0400 (Mon, 06 Apr 2009)
New Revision: 2314

Added:
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListInstance.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListStringInstance.java
Modified:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/FacadeImpl.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/InstanceImpl.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/ManagerImpl.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractFacadeBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/EventBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/InstanceBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventImpl.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ParameterizedProducerTest.java
Log:
WBRI-222

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/FacadeImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/FacadeImpl.java	2009-04-06 12:21:51 UTC (rev 2313)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/FacadeImpl.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -18,6 +18,7 @@
 package org.jboss.webbeans;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -42,7 +43,7 @@
    // The Web Beans manager
    private final ManagerImpl manager;
    // The type of the operation
-   protected final Class<T> type;
+   protected final Type type;
 
    /**
     * Constructor
@@ -51,7 +52,7 @@
     * @param manager The Web Beans manager
     * @param bindings The binding types
     */
-   protected FacadeImpl(Class<T> type, ManagerImpl manager, Set<? extends Annotation> bindings)
+   protected FacadeImpl(Type type, ManagerImpl manager, Set<? extends Annotation> bindings)
    {
       this.manager = manager;
       this.type = type;

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/InstanceImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/InstanceImpl.java	2009-04-06 12:21:51 UTC (rev 2313)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/InstanceImpl.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -18,11 +18,13 @@
 package org.jboss.webbeans;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
 import java.util.Set;
 
 import javax.inject.Instance;
-import javax.inject.manager.Manager;
 
+import org.jboss.webbeans.injection.resolution.ResolvableAnnotatedClass;
+
 /**
  * Helper implementation for Instance for getting instances
  * 
@@ -35,9 +37,9 @@
 {
    
 
-   public static <I> Instance<I> of(Class<I> clazz, ManagerImpl manager, Set<Annotation> annotations)
+   public static <I> Instance<I> of(Type type, ManagerImpl manager, Set<Annotation> annotations)
    {
-      return new InstanceImpl<I>(clazz, manager, annotations);
+      return new InstanceImpl<I>(type, manager, annotations);
    }
    
    /**
@@ -47,7 +49,7 @@
     * @param manager The Web Beans manager
     * @param bindings The binding types
     */
-   private InstanceImpl(Class<T> type, ManagerImpl manager, Set<Annotation> bindings)
+   private InstanceImpl(Type type, ManagerImpl manager, Set<Annotation> bindings)
    {
       super(type, manager, bindings);
    }
@@ -63,7 +65,8 @@
     */
    public T get(Annotation... bindings) 
    {
-      return getManager().getInstanceByType(type, mergeInBindings(bindings));
+      Annotation[] annotations = mergeInBindings(bindings);
+      return getManager().getInstanceByType(ResolvableAnnotatedClass.<T>of(type, annotations), annotations);
    }
 
    /**

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/ManagerImpl.java	2009-04-06 12:21:51 UTC (rev 2313)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/ManagerImpl.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -626,7 +626,7 @@
 
    public <T> Manager addObserver(Observer<T> observer, Class<T> eventType, Annotation... bindings)
    {
-      return _addObserver(observer, eventType, bindings);
+      return addObserverByType(observer, eventType, bindings);
    }
 
    /**
@@ -638,12 +638,12 @@
     */
    public <T> Manager addObserver(ObserverImpl<T> observer)
    {
-      return _addObserver(observer, observer.getEventType(), observer.getBindingsAsArray());
+      return addObserverByType(observer, observer.getEventType(), observer.getBindingsAsArray());
    }
 
    public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> eventType, Annotation... bindings)
    {
-      return _addObserver(observer, eventType.getType(), bindings);
+      return addObserverByType(observer, eventType.getType(), bindings);
    }
    
    /**
@@ -655,12 +655,12 @@
     * @param bindings
     * @return
     */
-   protected <T> Manager _addObserver(Observer<T> observer, Type eventType, Annotation... bindings)
+   public <T> Manager addObserverByType(Observer<T> observer, Type eventType, Annotation... bindings)
    {
       this.eventManager.addObserver(observer, eventType, bindings);
       for (ManagerImpl childActivity : childActivities)
       {
-         childActivity._addObserver(observer, eventType, bindings);
+         childActivity.addObserverByType(observer, eventType, bindings);
       }
       return this;
    }
@@ -901,7 +901,7 @@
     * @param bindings The binding types to match
     * @return An instance of the bean
     */
-   private <T> T getInstanceByType(AnnotatedItem<T, ?> element, Annotation... bindings)
+   public <T> T getInstanceByType(AnnotatedItem<T, ?> element, Annotation... bindings)
    {
       return getInstance(getBeanByType(element, bindings));
    }

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractFacadeBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractFacadeBean.java	2009-04-06 12:21:51 UTC (rev 2313)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractFacadeBean.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -36,15 +36,7 @@
             if (genericType instanceof ParameterizedType )
             {
                Type type = ((ParameterizedType) genericType).getActualTypeArguments()[0];
-               if (type instanceof Class)
-               {
-                  Class<?> clazz = Class.class.cast(type);
-                  return newInstance(clazz, fixBindings(injectionPoint.getBindings()));
-               }
-               else
-               {
-                  throw new IllegalStateException("Must have concrete type argument " + injectionPoint);
-               }
+               return newInstance(type, fixBindings(injectionPoint.getBindings()));
             }
             else
             {
@@ -97,6 +89,6 @@
     */
    protected abstract Set<Class<? extends Annotation>> getFilteredAnnotationTypes();
    
-   protected abstract T newInstance(Class<?> clazz, Set<Annotation> annotations);
+   protected abstract T newInstance(Type type, Set<Annotation> annotations);
    
 }

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/EventBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/EventBean.java	2009-04-06 12:21:51 UTC (rev 2313)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/EventBean.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -56,9 +56,9 @@
    }
 
    @Override
-   protected Event<?> newInstance(Class<?> clazz, Set<Annotation> annotations)
+   protected Event<?> newInstance(Type type, Set<Annotation> annotations)
    {
-      return EventImpl.of(clazz, getManager(), annotations);
+      return EventImpl.of(type, getManager(), annotations);
    }
 
    @Override

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/InstanceBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/InstanceBean.java	2009-04-06 12:21:51 UTC (rev 2313)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/InstanceBean.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -55,9 +55,9 @@
    }
 
    @Override
-   protected Instance<?> newInstance(Class<?> clazz, Set<Annotation> annotations)
+   protected Instance<?> newInstance(Type type, Set<Annotation> annotations)
    {
-      return InstanceImpl.of(clazz, getManager(), annotations);
+      return InstanceImpl.of(type, getManager(), annotations);
    }
 
    @Override

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventImpl.java	2009-04-06 12:21:51 UTC (rev 2313)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventImpl.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -19,6 +19,7 @@
 
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
 import java.util.Set;
 
 import javax.event.Event;
@@ -41,7 +42,7 @@
    
    private static final long serialVersionUID = 8130060821283091287L;
    
-   public static <E> Event<E> of(Class<E> eventType, ManagerImpl manager, Set<Annotation> bindings)
+   public static <E> Event<E> of(Type eventType, ManagerImpl manager, Set<Annotation> bindings)
    {
       return new EventImpl<E>(eventType, manager, bindings);
    }
@@ -54,7 +55,7 @@
     * @param manager The Web Beans manager
     * @param bindings The binding types
     */
-   public EventImpl(Class<T> eventType, ManagerImpl manager, Set<Annotation> bindings)
+   public EventImpl(Type eventType, ManagerImpl manager, Set<Annotation> bindings)
    {
       super(eventType, manager, bindings);
    }
@@ -78,7 +79,7 @@
     */
    public void observe(Observer<T> observer, Annotation... bindings)
    {
-      getManager().addObserver(observer, type, mergeInBindings(bindings));
+      getManager().addObserverByType(observer, type, mergeInBindings(bindings));
    }
 
    @Override
@@ -86,7 +87,7 @@
    {
       StringBuilder buffer = new StringBuilder();
       buffer.append("Observable Event:\n");
-      buffer.append("  Event Type: " + type.getName() + "\n");
+      buffer.append("  Event Type: " + type.toString() + "\n");
       buffer.append(Strings.collectionToString("  Event Bindings: ", bindings));
       return buffer.toString();
    }

Added: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListInstance.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListInstance.java	                        (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListInstance.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -0,0 +1,18 @@
+package org.jboss.webbeans.test.unit.implementation.producer.field;
+
+import java.util.List;
+
+import javax.inject.Instance;
+import javax.inject.Obtains;
+
+public class ListInstance
+{
+   @Obtains
+   Instance<List> instance;
+   
+   public List get()
+   {
+      return instance.get();
+   }
+
+}


Property changes on: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListInstance.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListStringInstance.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListStringInstance.java	                        (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListStringInstance.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -0,0 +1,17 @@
+package org.jboss.webbeans.test.unit.implementation.producer.field;
+
+import java.util.List;
+
+import javax.inject.Instance;
+import javax.inject.Obtains;
+
+public class ListStringInstance
+{
+   @Obtains Instance<List<String>> instance;
+
+   public List<String> get()
+   {
+      return instance.get();
+   }
+
+}


Property changes on: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ListStringInstance.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ParameterizedProducerTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ParameterizedProducerTest.java	2009-04-06 12:21:51 UTC (rev 2313)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/field/ParameterizedProducerTest.java	2009-04-06 13:18:28 UTC (rev 2314)
@@ -64,4 +64,18 @@
       assert item.getSetterInjection().size() == 4;
 
    }
+   
+   @Test
+   public void testInstanceList()
+   {
+        ListInstance listInstance = manager.getInstanceByType(ListInstance.class);
+        assert listInstance.get().size() == 3;
+   }
+   
+   @Test
+   public void testTypeParameterInstance()
+   {
+        ListStringInstance listInstance = manager.getInstanceByType(ListStringInstance.class);
+        assert listInstance.get().size() == 2;
+   }
 }




More information about the weld-commits mailing list