[weld-commits] Weld SVN: r5652 - in core/trunk: tests/src/test/java/org/jboss/weld/tests/unit and 2 other directories.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Wed Jan 27 23:56:15 EST 2010


Author: swd847
Date: 2010-01-27 23:56:14 -0500 (Wed, 27 Jan 2010)
New Revision: 5652

Added:
   core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/
   core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/AnnotatedTypesTest.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/Chair.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/ComfyChair.java
Modified:
   core/trunk/impl/src/main/java/org/jboss/weld/util/AnnotatedTypes.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/util/annotated/TestAnnotatedType.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/util/annotated/TestAnnotatedTypeBuilder.java
Log:
added tests and minor bug fixes to AnnotatedTypes



Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/AnnotatedTypes.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/AnnotatedTypes.java	2010-01-28 03:51:14 UTC (rev 5651)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/AnnotatedTypes.java	2010-01-28 04:56:14 UTC (rev 5652)
@@ -207,7 +207,7 @@
 
       builder.append(clazz.getName());
       builder.append(createAnnotationCollectionId(annotations));
-      builder.append("{ ");
+      builder.append("{");
 
       // now deal with the fields
       List<AnnotatedField<? super X>> sortedFields = new ArrayList<AnnotatedField<? super X>>();
@@ -256,7 +256,7 @@
    {
       for (AnnotatedParameter<X> parameter : callable.getParameters())
       {
-         if (parameter.getAnnotations().isEmpty())
+         if (!parameter.getAnnotations().isEmpty())
          {
             return true;
          }
@@ -448,7 +448,7 @@
 
    public static boolean compareAnnotatedField(AnnotatedField<?> f1, AnnotatedField<?> f2)
    {
-      if (f1.getJavaMember().equals(f2.getJavaMember()))
+      if (!f1.getJavaMember().equals(f2.getJavaMember()))
       {
          return false;
       }
@@ -457,7 +457,7 @@
 
    public static boolean compareAnnotatedCallable(AnnotatedCallable<?> m1, AnnotatedCallable<?> m2)
    {
-      if (m1.getJavaMember().equals(m2.getJavaMember()))
+      if (!m1.getJavaMember().equals(m2.getJavaMember()))
       {
          return false;
       }
@@ -473,7 +473,7 @@
     */
    public static boolean compareAnnotatedTypes(AnnotatedType<?> t1, AnnotatedType<?> t2)
    {
-      if (t1.getJavaClass().equals(t2.getJavaClass()))
+      if (!t1.getJavaClass().equals(t2.getJavaClass()))
       {
          return false;
       }
@@ -481,6 +481,11 @@
       {
          return false;
       }
+
+      if (t1.getFields().size() != t2.getFields().size())
+      {
+         return false;
+      }
       Map<Field, AnnotatedField<?>> fields = new HashMap<Field, AnnotatedField<?>>();
       for (AnnotatedField<?> f : t2.getFields())
       {
@@ -501,6 +506,10 @@
          }
       }
 
+      if (t1.getMethods().size() != t2.getMethods().size())
+      {
+         return false;
+      }
       Map<Method, AnnotatedMethod<?>> methods = new HashMap<Method, AnnotatedMethod<?>>();
       for (AnnotatedMethod<?> f : t2.getMethods())
       {
@@ -520,7 +529,10 @@
             return false;
          }
       }
-
+      if (t1.getConstructors().size() != t2.getConstructors().size())
+      {
+         return false;
+      }
       Map<Constructor<?>, AnnotatedConstructor<?>> constructors = new HashMap<Constructor<?>, AnnotatedConstructor<?>>();
       for (AnnotatedConstructor<?> f : t2.getConstructors())
       {

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/AnnotatedTypesTest.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/AnnotatedTypesTest.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/AnnotatedTypesTest.java	2010-01-28 04:56:14 UTC (rev 5652)
@@ -0,0 +1,152 @@
+package org.jboss.weld.tests.unit.util;
+
+import java.util.Iterator;
+
+import javax.enterprise.inject.Default;
+import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.util.AnnotationLiteral;
+
+import org.jboss.weld.introspector.WeldClass;
+import org.jboss.weld.introspector.jlr.WeldClassImpl;
+import org.jboss.weld.metadata.TypeStore;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.tests.util.annotated.TestAnnotatedTypeBuilder;
+import org.jboss.weld.util.AnnotatedTypes;
+import org.testng.annotations.Test;
+
+/**
+ * Test comparison and id creation for AnnotatedTypes
+ * @author Stuart Douglas <stuart at baileyroberts.com.au>
+ *
+ */
+public class AnnotatedTypesTest
+{
+   /**
+    * tests the AnnotatedTypes.compareAnnotatedTypes 
+    */
+   @Test
+   public void testComparison() throws SecurityException, NoSuchFieldException, NoSuchMethodException
+   {
+      //check that two weld classes on the same underlying are equal
+      TypeStore ts = new TypeStore();
+      ClassTransformer ct =new ClassTransformer(ts);
+      WeldClass<Chair> chair1 = WeldClassImpl.of(Chair.class,ct);
+      WeldClass<Chair> chair2 = WeldClassImpl.of(Chair.class,ct);
+      assert AnnotatedTypes.compareAnnotatedTypes(chair1, chair2);
+      
+      //check that a different implementation of annotated type is equal to the weld implementation
+      TestAnnotatedTypeBuilder<Chair> builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      builder.addToClass(new DefaultLiteral());
+      builder.addToField(Chair.class.getField("legs"), new ProducesLiteral());
+      builder.addToMethod(Chair.class.getMethod("sit"), new ProducesLiteral());
+      AnnotatedType<Chair> chair3 = builder.create();
+      assert AnnotatedTypes.compareAnnotatedTypes(chair1, chair3);
+      
+      //check that the implementation returns false if a field annotation changes
+      builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      builder.addToClass(new DefaultLiteral());
+      builder.addToField(Chair.class.getField("legs"), new DefaultLiteral());
+      builder.addToMethod(Chair.class.getMethod("sit"), new ProducesLiteral());     
+      chair3 = builder.create();
+      assert !AnnotatedTypes.compareAnnotatedTypes(chair1, chair3);
+      
+      //check that the implementation returns false if a class level annotation changes
+      builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      builder.addToClass(new ProducesLiteral());
+      builder.addToField(Chair.class.getField("legs"), new DefaultLiteral());
+      builder.addToMethod(Chair.class.getMethod("sit"), new ProducesLiteral()); 
+      chair3 = builder.create();
+      assert !AnnotatedTypes.compareAnnotatedTypes(chair1, chair3);
+      
+   }
+   
+   @Test
+   public void testFieldId() throws SecurityException, NoSuchFieldException
+   {
+      TestAnnotatedTypeBuilder<Chair> builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      builder.addToField(Chair.class.getField("legs"), new ProducesLiteral());
+      AnnotatedType<Chair> chair3 = builder.create();
+      AnnotatedField<? super Chair> field = chair3.getFields().iterator().next();
+      String id = AnnotatedTypes.createFieldId(field);
+      assert "org.jboss.weld.tests.unit.util.Chair.legs[@javax.enterprise.inject.Produces()]".equals(id): "wrong id for field :" + id;
+      
+      builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      chair3 = builder.create();
+      field = chair3.getFields().iterator().next();
+      id = AnnotatedTypes.createFieldId(field);
+      assert "org.jboss.weld.tests.unit.util.Chair.legs".equals(id) : "wrong id for field :" + id;
+      
+      builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      builder.addToField(Chair.class.getField("legs"), new ComfyChairLiteral());
+      chair3 = builder.create();
+      field = chair3.getFields().iterator().next();
+      id = AnnotatedTypes.createFieldId(field);
+      assert "org.jboss.weld.tests.unit.util.Chair.legs[@org.jboss.weld.tests.unit.util.ComfyChair(softness=1)]".equals(id) : "wrong id for field :" + id;
+   }
+   
+   @Test
+   public void testMethodId() throws SecurityException, NoSuchMethodException
+   {
+      TestAnnotatedTypeBuilder<Chair> builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      builder.addToMethod(Chair.class.getMethod("sit"), new ProducesLiteral());
+      AnnotatedType<Chair> chair3 = builder.create();
+      Iterator<AnnotatedMethod<? super Chair>> it = chair3.getMethods().iterator();
+      AnnotatedMethod<? super Chair> method = it.next();
+      while(!method.getJavaMember().getName().equals("sit"))method = it.next();
+      String id = AnnotatedTypes.createCallableId(method);
+      assert "org.jboss.weld.tests.unit.util.Chair.sit[@javax.enterprise.inject.Produces()]()".equals(id): "wrong id for method :" + id;
+      
+      builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      chair3 = builder.create();
+      it = chair3.getMethods().iterator();
+      method = it.next();
+      while(!method.getJavaMember().getName().equals("sit"))method = it.next();
+      id = AnnotatedTypes.createCallableId(method);
+      assert "org.jboss.weld.tests.unit.util.Chair.sit()".equals(id) : "wrong id for method :" + id;
+      
+      builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      builder.addToMethod(Chair.class.getMethod("sit"), new ComfyChairLiteral());
+      chair3 = builder.create();
+      it = chair3.getMethods().iterator();
+      method = it.next();
+      while(!method.getJavaMember().getName().equals("sit"))method = it.next();
+      id = AnnotatedTypes.createCallableId(method);
+      assert "org.jboss.weld.tests.unit.util.Chair.sit[@org.jboss.weld.tests.unit.util.ComfyChair(softness=1)]()".equals(id) : "wrong id for method :" + id;
+   }
+   
+   @Test
+   public void testTypeId() throws SecurityException, NoSuchMethodException
+   {
+      TestAnnotatedTypeBuilder<Chair> builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      builder.addToMethod(Chair.class.getMethod("sit"), new ProducesLiteral());
+      AnnotatedType<Chair> chair3 = builder.create();
+      String id = AnnotatedTypes.createTypeId(chair3);
+      assert "org.jboss.weld.tests.unit.util.Chair{org.jboss.weld.tests.unit.util.Chair.sit[@javax.enterprise.inject.Produces()]();}".equals(id): "wrong id for type :" + id;
+      
+      builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      chair3 = builder.create();
+      id = AnnotatedTypes.createTypeId(chair3);
+      assert "org.jboss.weld.tests.unit.util.Chair{}".equals(id) : "wrong id for type :" + id;
+      
+      builder = new TestAnnotatedTypeBuilder<Chair>(Chair.class);
+      builder.addToMethod(Chair.class.getMethod("sit"), new ComfyChairLiteral());
+      chair3 = builder.create();
+      id = AnnotatedTypes.createTypeId(chair3);
+      assert "org.jboss.weld.tests.unit.util.Chair{org.jboss.weld.tests.unit.util.Chair.sit[@org.jboss.weld.tests.unit.util.ComfyChair(softness=1)]();}".equals(id) : "wrong id for type :" + id;
+   }
+   
+   private static class DefaultLiteral extends AnnotationLiteral<Default> implements Default {}
+   private static class ProducesLiteral extends AnnotationLiteral<Produces> implements Produces {}
+   private static class ComfyChairLiteral extends AnnotationLiteral<ComfyChair> implements ComfyChair 
+   {
+      public int softness()
+      {
+         return 1;
+      }
+      
+   }
+   
+}

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/Chair.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/Chair.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/Chair.java	2010-01-28 04:56:14 UTC (rev 5652)
@@ -0,0 +1,17 @@
+package org.jboss.weld.tests.unit.util;
+
+import javax.enterprise.inject.Default;
+import javax.enterprise.inject.Produces;
+
+ at Default
+public class Chair
+{
+   @Produces
+   public int legs;
+   
+   @Produces
+   public String sit()
+   {
+      return "sitting";
+   }
+}

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/ComfyChair.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/ComfyChair.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/unit/util/ComfyChair.java	2010-01-28 04:56:14 UTC (rev 5652)
@@ -0,0 +1,6 @@
+package org.jboss.weld.tests.unit.util;
+
+public @interface ComfyChair
+{
+   int softness();
+}

Modified: core/trunk/tests/src/test/java/org/jboss/weld/tests/util/annotated/TestAnnotatedType.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/util/annotated/TestAnnotatedType.java	2010-01-28 03:51:14 UTC (rev 5651)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/util/annotated/TestAnnotatedType.java	2010-01-28 04:56:14 UTC (rev 5652)
@@ -34,19 +34,19 @@
       super(clazz, typeAnnotations);
       this.javaClass = clazz;
       this.constructors = new HashSet<AnnotatedConstructor<X>>();
-      for (Constructor<?> c : clazz.getConstructors())
+      for (Constructor<?> c : clazz.getDeclaredConstructors())
       {
          TestAnnotatedConstructor<X> nc = new TestAnnotatedConstructor<X>(this, c, constructorAnnotations.get(c), constructorParameterAnnotations.get(c));
          constructors.add(nc);
       }
       this.methods = new HashSet<AnnotatedMethod<? super X>>();
-      for (Method m : clazz.getMethods())
+      for (Method m : clazz.getDeclaredMethods())
       {
          TestAnnotatedMethod<X> met = new TestAnnotatedMethod<X>(this, m, methodAnnotations.get(m), methodParameterAnnotations.get(m));
          methods.add(met);
       }
       this.fields = new HashSet<AnnotatedField<? super X>>();
-      for (Field f : clazz.getFields())
+      for (Field f : clazz.getDeclaredFields())
       {
          TestAnnotatedField<X> b = new TestAnnotatedField<X>(this, f, fieldAnnotations.get(f));
          fields.add(b);

Modified: core/trunk/tests/src/test/java/org/jboss/weld/tests/util/annotated/TestAnnotatedTypeBuilder.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/util/annotated/TestAnnotatedTypeBuilder.java	2010-01-28 03:51:14 UTC (rev 5651)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/util/annotated/TestAnnotatedTypeBuilder.java	2010-01-28 04:56:14 UTC (rev 5652)
@@ -34,6 +34,7 @@
    public TestAnnotatedTypeBuilder(Class<X> underlying)
    {
       this.underlying = underlying;
+   
    }
 
    public TestAnnotatedTypeBuilder<X> addToClass(Annotation a)



More information about the weld-commits mailing list