[webbeans-commits] Webbeans SVN: r1283 - tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event and 1 other directory.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Jan 29 08:33:26 EST 2009


Author: dallen6
Date: 2009-01-29 08:33:26 -0500 (Thu, 29 Jan 2009)
New Revision: 1283

Added:
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeA.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeABinding.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeB.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeBBinding.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeC.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeCBinding.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/EventTest.java
Log:
Added a few more test implementations for EventTest and fixed a bug with observer resolution.

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-01-29 10:11:32 UTC (rev 1282)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2009-01-29 13:33:26 UTC (rev 1283)
@@ -24,6 +24,7 @@
 import java.lang.reflect.TypeVariable;
 import java.lang.reflect.WildcardType;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -228,6 +229,11 @@
             throw new IllegalArgumentException("Not a binding type " + annotation);
          }
       }
+      HashSet<Annotation> bindingAnnotations = new HashSet<Annotation>(Arrays.asList(bindings));
+      if (bindingAnnotations.size() < bindings.length)
+      {
+         throw new DuplicateBindingTypeException("Duplicate binding types: " + bindings);
+      }
       for (Type type : element.getActualTypeArguments())
       {
          if (type instanceof WildcardType)

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeA.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeA.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeA.java	2009-01-29 13:33:26 UTC (rev 1283)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.tck.unit.event;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.BindingType;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+ at interface BindingTypeA
+{
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeA.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeABinding.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeABinding.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeABinding.java	2009-01-29 13:33:26 UTC (rev 1283)
@@ -0,0 +1,5 @@
+package org.jboss.webbeans.tck.unit.event;
+
+import javax.inject.AnnotationLiteral;
+
+public class BindingTypeABinding extends AnnotationLiteral<BindingTypeA> implements BindingTypeA {}
\ No newline at end of file


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeABinding.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeB.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeB.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeB.java	2009-01-29 13:33:26 UTC (rev 1283)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.tck.unit.event;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.BindingType;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+ at interface BindingTypeB
+{
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeB.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeBBinding.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeBBinding.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeBBinding.java	2009-01-29 13:33:26 UTC (rev 1283)
@@ -0,0 +1,5 @@
+package org.jboss.webbeans.tck.unit.event;
+
+import javax.inject.AnnotationLiteral;
+
+public class BindingTypeBBinding extends AnnotationLiteral<BindingTypeB> implements BindingTypeB {}
\ No newline at end of file


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeBBinding.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeC.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeC.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeC.java	2009-01-29 13:33:26 UTC (rev 1283)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.tck.unit.event;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.BindingType;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+ at interface BindingTypeC
+{
+   public String value();
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeC.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeCBinding.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeCBinding.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeCBinding.java	2009-01-29 13:33:26 UTC (rev 1283)
@@ -0,0 +1,20 @@
+package org.jboss.webbeans.tck.unit.event;
+
+import javax.inject.AnnotationLiteral;
+
+public class BindingTypeCBinding extends AnnotationLiteral<BindingTypeC> implements BindingTypeC
+{
+
+   private String stringValue;
+
+   public BindingTypeCBinding(String value)
+   {
+      this.stringValue = value;
+   }
+
+   @Override
+   public String value()
+   {
+      return this.stringValue;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/BindingTypeCBinding.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/EventTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/EventTest.java	2009-01-29 10:11:32 UTC (rev 1282)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/event/EventTest.java	2009-01-29 13:33:26 UTC (rev 1283)
@@ -25,7 +25,7 @@
  * @author Nicklas Karlsson
  * @author David Allen
  * 
- * Spec version: PRD2
+ *         Spec version: PRD2
  */
 public class EventTest extends AbstractTest
 {
@@ -67,6 +67,16 @@
       }
    }
 
+   public static class AnotherListObserver implements Observer<ArrayList<Integer>>
+   {
+      public boolean wasNotified = false;
+
+      public void notify(ArrayList<Integer> event)
+      {
+         wasNotified = true;
+      }
+   }
+
    public static class AnObserverWithException implements Observer<AnEventType>
    {
       public boolean wasNotified = false;
@@ -848,25 +858,41 @@
       assert false;
    }
 
-   @Test(groups = { "stub", "events" })
+   @Test(groups = { "events" })
    @SpecAssertion(section = "7.7")
    public void testEventObjectContainsTypeVariablesWhenResolvingFails()
    {
-      assert false;
+      eventObjectContainsTypeVariables(new ArrayList<String>());
    }
 
-   @Test(groups = { "stub", "events" })
+   private <E> void eventObjectContainsTypeVariables(ArrayList<E> eventToFire)
+   {
+      @SuppressWarnings("unused")
+      Set<?> resolvedObservers = manager.resolveObservers(eventToFire);
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { IllegalArgumentException.class })
    @SpecAssertion(section = "7.7")
    public void testEventObjectContainsWildcardsWhenResolvingFails()
    {
-      assert false;
+      eventObjectContainsWildcards(new ArrayList<String>());
    }
 
-   @Test(groups = { "stub", "events" })
+   private void eventObjectContainsWildcards(ArrayList<? extends Object> eventToFire)
+   {
+      @SuppressWarnings("unused")
+      //TODO There does not seem to be a way to get wildcarded types pass through
+      Set<?> resolvedObservers = manager.resolveObservers(eventToFire);
+   }
+
+   @Test(groups = { "events" }, expectedExceptions = { DuplicateBindingTypeException.class })
    @SpecAssertion(section = "7.7")
    public void testDuplicateBindingTypesWhenResolvingFails()
    {
-      assert false;
+      AnObserver observer = new AnObserver();
+      manager.addObserver(observer, AnEventType.class, new BindingTypeABinding());
+      @SuppressWarnings("unused")
+      Set<Observer<AnEventType>> resolvedObservers = manager.resolveObservers(new AnEventType(), new BindingTypeABinding(), new BindingTypeABinding());
    }
 
    @Test(groups = { "events" }, expectedExceptions = { IllegalArgumentException.class })
@@ -893,34 +919,48 @@
       assert emptyObserverSet.isEmpty();
    }
 
-   @Test(groups = { "stub", "events" })
+   @Test(groups = { "broken", "events" })
    @SpecAssertion(section = "7.7")
    public void testResolvingChecksTypeParameters()
    {
       AListObserver observer = new AListObserver();
+      AnotherListObserver anotherObserver = new AnotherListObserver();
       manager.addObserver(observer, new TypeLiteral<ArrayList<String>>()
       {
       });
-      Set<Observer<ArrayList<String>>> resolvedObservers = manager.resolveObservers(new ArrayList<String>(), new AnimalStereotypeAnnotationLiteral());
-      assert !resolvedObservers.isEmpty();
+      manager.addObserver(anotherObserver, new TypeLiteral<ArrayList<Integer>>()
+      {
+      });
+      Set<Observer<ArrayList<String>>> resolvedObservers = manager.resolveObservers(new ArrayList<String>());
+      assert resolvedObservers.size() == 1;
    }
 
-   @Test(groups = { "stub", "events" })
+   @Test(groups = { "events" })
    @SpecAssertion(section = "7.7")
    public void testResolvingChecksBindingTypes()
    {
-      assert false;
+      AnObserver observer = new AnObserver();
+      AnObserver anotherObserver = new AnObserver();
+      manager.addObserver(observer, AnEventType.class, new BindingTypeABinding());
+      manager.addObserver(anotherObserver, AnEventType.class, new BindingTypeBBinding());
+      Set<Observer<AnEventType>> resolvedObservers = manager.resolveObservers(new AnEventType(), new BindingTypeABinding());
+      assert resolvedObservers.size() == 1;
    }
 
-   @Test(groups = { "stub", "events" })
+   @Test(groups = { "events" })
    @SpecAssertion(section = "7.7")
    public void testResolvingChecksBindingTypeMembers()
    {
-      assert false;
+      AnObserver observer = new AnObserver();
+      AnObserver anotherObserver = new AnObserver();
+      manager.addObserver(observer, AnEventType.class, new BindingTypeCBinding("first-observer"));
+      manager.addObserver(anotherObserver, AnEventType.class, new BindingTypeCBinding("second-observer"));
+      Set<Observer<AnEventType>> resolvedObservers = manager.resolveObservers(new AnEventType(), new BindingTypeCBinding("first-observer"));
+      assert resolvedObservers.size() == 1;
    }
 
-   @Test
-   @SpecAssertion(section = "???")
+   @Test(groups = { "events", "inheritance" })
+   @SpecAssertion(section = "4.")
    public void testNonStaticObserverMethodNotInherited()
    {
       deployBeans(LazyFarmer.class);




More information about the weld-commits mailing list