[weld-commits] Weld SVN: r6420 - in core/trunk: tests/src/test/java/org/jboss/weld/tests/interceptors/ejb and 1 other directory.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Thu Jun 10 15:23:23 EDT 2010


Author: marius.bogoevici
Date: 2010-06-10 15:23:22 -0400 (Thu, 10 Jun 2010)
New Revision: 6420

Modified:
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingInterceptorResolvable.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingResolvable.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvableBuilder.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/Resolvable.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableBuilder.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/interceptors/ejb/EnterpriseBeanInterceptionTest.java
Log:
Fix the TypeSafeResolver so that the equals implementation for Key works correctly. Any Resolvable implementation must now implement their own equals and hashCode.

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingInterceptorResolvable.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingInterceptorResolvable.java	2010-06-09 16:49:34 UTC (rev 6419)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingInterceptorResolvable.java	2010-06-10 19:23:22 UTC (rev 6420)
@@ -75,4 +75,13 @@
       return false;
    }
 
+   public int getHashCode()
+   {
+      return hashCode();
+   }
+
+   public boolean isEqualTo(Resolvable r)
+   {
+      return equals(r);
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingResolvable.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingResolvable.java	2010-06-09 16:49:34 UTC (rev 6419)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingResolvable.java	2010-06-10 19:23:22 UTC (rev 6420)
@@ -80,4 +80,13 @@
       return delegate().toString();
    }
 
+   public int getHashCode()
+   {
+      return delegate().getHashCode();
+   }
+
+   public boolean isEqualTo(Resolvable r)
+   {
+      return delegate().isEqualTo(r);
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvableBuilder.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvableBuilder.java	2010-06-09 16:49:34 UTC (rev 6419)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvableBuilder.java	2010-06-10 19:23:22 UTC (rev 6420)
@@ -135,6 +135,18 @@
          return interceptionType;
       }
 
+      public int getHashCode()
+      {
+         return 31*super.getHashCode()
+               + this.getInterceptionType().hashCode();
+      }
+
+      public boolean isEqualTo(Resolvable r)
+      {
+         return super.isEqualTo(r)
+               && r instanceof InterceptorResolvable
+               && this.getInterceptionType().equals(((InterceptorResolvable)r).getInterceptionType());
+      }
    }
 
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/Resolvable.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/Resolvable.java	2010-06-09 16:49:34 UTC (rev 6419)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/Resolvable.java	2010-06-10 19:23:22 UTC (rev 6420)
@@ -87,4 +87,18 @@
     */
    public Bean<?> getDeclaringBean();
 
+   /**
+    * Force the Resolvable to implement its own comparison strategy
+    * (thus subclasses can be compared differently)
+    * @param r
+    * @return
+    */
+   public boolean isEqualTo(Resolvable r);
+
+   /**
+    * Force the Resolvable to implement
+    * @return
+    */
+   public int getHashCode();
+
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableBuilder.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableBuilder.java	2010-06-09 16:49:34 UTC (rev 6419)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableBuilder.java	2010-06-10 19:23:22 UTC (rev 6420)
@@ -276,6 +276,20 @@
          return "Types: " + getTypes() + "; Bindings: " + getQualifiers();
       }
 
+      public int getHashCode()
+      {
+         int result = 17;
+         result = 31 * result + this.getTypes().hashCode();
+         result = 31 * result + this.getQualifiers().hashCode();
+         return result;
+      }
+
+      public boolean isEqualTo(Resolvable r)
+      {
+         return this.getTypes().equals(r.getTypes())
+               &&  this.getQualifiers().equals(r.getQualifiers());         
+
+      }
    }
 
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java	2010-06-09 16:49:34 UTC (rev 6419)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java	2010-06-10 19:23:22 UTC (rev 6420)
@@ -51,10 +51,11 @@
       @Override
       public boolean equals(Object obj)
       {
-         if (obj instanceof Resolvable)
+         if (obj instanceof Key)
          {
-            Resolvable that = (Resolvable) obj;
-            return this.getResolvable().getTypes().equals(that.getTypes()) && this.getResolvable().getQualifiers().equals(that.getQualifiers());
+            Key that = (Key) obj;
+            return that.getResolvable().getClass().equals(this.getResolvable().getClass())
+                  && that.getResolvable().isEqualTo(that.getResolvable());
          }
          else
          {
@@ -65,10 +66,7 @@
       @Override
       public int hashCode()
       {
-         int result = 17;
-         result = 31 * result + this.getResolvable().getTypes().hashCode();
-         result = 31 * result + this.getResolvable().getQualifiers().hashCode();
-         return result;
+         return this.getResolvable().hashCode();
       }
       
       @Override

Modified: core/trunk/tests/src/test/java/org/jboss/weld/tests/interceptors/ejb/EnterpriseBeanInterceptionTest.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/interceptors/ejb/EnterpriseBeanInterceptionTest.java	2010-06-09 16:49:34 UTC (rev 6419)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/interceptors/ejb/EnterpriseBeanInterceptionTest.java	2010-06-10 19:23:22 UTC (rev 6420)
@@ -41,7 +41,7 @@
 {
 
    @Test(groups = { "interceptors", "incontainer-broken"})
-   public void ls() throws Exception
+   public void testInterceptors() throws Exception
    {
       SessionBean<Ball> ballSessionBean = (SessionBean<Ball>)getCurrentManager().getBeans(Ball.class).iterator().next();
       InterceptorBindings interceptorBindings = new InterceptorBindingsAdapter(getCurrentManager().getCdiInterceptorsRegistry().getInterceptionModel(ballSessionBean.getType()));



More information about the weld-commits mailing list