[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