[jboss-cvs] JBossAS SVN: r59195 - projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Dec 21 09:26:09 EST 2006


Author: adrian at jboss.org
Date: 2006-12-21 09:26:06 -0500 (Thu, 21 Dec 2006)
New Revision: 59195

Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ProxyTemplate.java
Log:
Fix the object override methods for proxies that don't extends object.

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java	2006-12-21 14:09:44 UTC (rev 59194)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java	2006-12-21 14:26:06 UTC (rev 59195)
@@ -237,6 +237,14 @@
       
       addMethodFromTemplate(template, "writeObject", writeObjectBody());
       addMethodFromTemplate(template, "readObject", readObjectBody(superclass));
+      
+      if (objectAsSuper)
+      {
+         addMethodFromTemplate(template, "equals", equalsBody());
+         addMethodFromTemplate(template, "hashCode", hashCodeBody());
+         addMethodFromTemplate(template, "toString", toStringBody());
+      }
+      
       return proxy;
    }
    
@@ -302,6 +310,43 @@
          "}";
        //TODO add support for instance advisors
    }
+   
+   private String equalsBody()
+   {
+      return 
+         "{" +
+         "   if (delegate != null)" +
+         "   {" +
+         "      if ($1 != null && $1 instanceof org.jboss.aop.proxy.container.Delegate)" +
+         "         $1 = ((org.jboss.aop.proxy.container.Delegate) $1).getDelegate();" +
+         "      return delegate.equals($1);" +
+         "   }" +
+         "   else" +
+         "      return super.equals($1);" +
+         "}";
+   }
+   
+   private String hashCodeBody()
+   {
+      return 
+         "{" +
+         "   if (delegate != null)" +
+         "      return delegate.hashCode();" +
+         "   else" +
+         "      return super.hashCode();" +
+         "}";
+   }
+   
+   private String toStringBody()
+   {
+      return 
+         "{" +
+         "   if (delegate != null)" +
+         "      return delegate.toString();" +
+         "   else" +
+         "      return super.toString();" +
+         "}";
+   }
 
    private CtField addFieldFromTemplate(CtClass template, String name) throws Exception
    {

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ProxyTemplate.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ProxyTemplate.java	2006-12-21 14:09:44 UTC (rev 59194)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ProxyTemplate.java	2006-12-21 14:26:06 UTC (rev 59195)
@@ -106,6 +106,34 @@
       return instanceAdvisor;
    }
    
+   public boolean equals(Object obj)
+   {
+      if (delegate != null)
+      {
+         if (obj != null && obj instanceof Delegate)
+            obj = ((Delegate) obj).getDelegate();
+         return delegate.equals(obj);
+      }
+      else
+         return super.equals(obj);
+   }
+   
+   public int hashCode()
+   {
+      if (delegate != null)
+         return delegate.hashCode();
+      else
+         return super.hashCode();
+   }
+   
+   public String toString()
+   {
+      if (delegate != null)
+         return delegate.toString();
+      else
+         return super.toString();
+   }
+   
    private void writeObject(java.io.ObjectOutputStream out) throws IOException
    {
       out.writeObject(delegate);




More information about the jboss-cvs-commits mailing list