You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/04/10 10:01:21 UTC

svn commit: r527052 - /incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/

Author: dblevins
Date: Tue Apr 10 01:01:20 2007
New Revision: 527052

URL: http://svn.apache.org/viewvc?view=rev&rev=527052
Log:
Proper handling of equals as per ejb3 spec

Modified:
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatelessEJBObjectHandler.java

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java?view=diff&rev=527052&r1=527051&r2=527052
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java Tue Apr 10 01:01:20 2007
@@ -30,9 +30,9 @@
 
 public abstract class EJBInvocationHandler implements InvocationHandler, Serializable {
 
-    protected static final Method EQUALS = getMethod(Object.class, "equals", null);
-    protected static final Method HASHCODE = getMethod(Object.class, "hashCode", null);
-    protected static final Method TOSTRING = getMethod(Object.class, "toString", null);
+    protected static final Method EQUALS = getMethod(Object.class, "equals", Object.class);
+    protected static final Method HASHCODE = getMethod(Object.class, "hashCode");
+    protected static final Method TOSTRING = getMethod(Object.class, "toString");
 
     protected static final Hashtable<Object,HashSet> liveHandleRegistry = new Hashtable();
 
@@ -62,7 +62,7 @@
         this.primaryKey = primaryKey;
     }
 
-    protected static Method getMethod(Class c, String method, Class[] params) {
+    protected static Method getMethod(Class c, String method, Class... params) {
         try {
             return c.getMethod(method, params);
         } catch (NoSuchMethodException nse) {

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java?view=diff&rev=527052&r1=527051&r2=527052
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java Tue Apr 10 01:01:20 2007
@@ -109,14 +109,14 @@
          */
 
         try {
-
+            System.out.println("method = " + m.getDeclaringClass() + "."+m.getName());
             String methodName = m.getName();
-            if (m.getDeclaringClass() == Object.class) {
+            if (m.getDeclaringClass().equals(Object.class)) {
                 if (m.equals(TOSTRING)) {
                     return "proxy=" + this;
                 } else if (m.equals(EQUALS)) {
 
-                    return Boolean.FALSE;
+                    return equals(m, a, p);
 
                 } else if (m.equals(HASHCODE)) {
                     return new Integer(this.hashCode());
@@ -164,7 +164,7 @@
             invalidateReference();
             throw new RemoteException("Container has suffered a SystemException", se.getCause());
         } catch (Throwable oe) {
-            throw new RemoteException("Unknown Container Exception", oe.getCause());
+            throw new RemoteException("Unknown Container Exception: "+oe.getClass().getName()+": "+oe.getMessage(), oe.getCause());
         }
         return retValue;
     }
@@ -183,6 +183,8 @@
     protected abstract Object getPrimaryKey(Method method, Object[] args, Object proxy) throws Throwable;
 
     protected abstract Object isIdentical(Method method, Object[] args, Object proxy) throws Throwable;
+
+    protected abstract Object equals(Method method, Object[] args, Object proxy) throws Throwable;
 
     protected abstract Object remove(Method method, Object[] args, Object proxy) throws Throwable;
 

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java?view=diff&rev=527052&r1=527051&r2=527052
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java Tue Apr 10 01:01:20 2007
@@ -52,6 +52,10 @@
 
     }
 
+    protected Object equals(Method method, Object[] args, Object proxy) throws Throwable {
+        return isIdentical(method, args, proxy);
+    }
+
     protected Object remove(Method method, Object[] args, Object proxy) throws Throwable {
 
         EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_OBJECT_REMOVE);

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java?view=diff&rev=527052&r1=527051&r2=527052
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java Tue Apr 10 01:01:20 2007
@@ -50,6 +50,10 @@
         return new Boolean(this.primaryKey.equals(that.primaryKey));
     }
 
+    protected Object equals(Method method, Object[] args, Object proxy) throws Throwable {
+        return isIdentical(method, args, proxy);
+    }
+    
     protected Object remove(Method method, Object[] args, Object proxy) throws Throwable {
 
         EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_OBJECT_REMOVE);

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatelessEJBObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatelessEJBObjectHandler.java?view=diff&rev=527052&r1=527051&r2=527052
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatelessEJBObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatelessEJBObjectHandler.java Tue Apr 10 01:01:20 2007
@@ -53,7 +53,11 @@
         if (arg == null || !(arg instanceof EJBObjectProxy)) return Boolean.FALSE;
         EJBObjectProxy proxy2 = (EJBObjectProxy) arg;
         EJBObjectHandler that = proxy2.getEJBObjectHandler();
-        return new Boolean(this.ejb.deploymentID.equals(that.ejb.deploymentID));
+        return this.ejb.deploymentID.equals(that.ejb.deploymentID);
+    }
+
+    protected Object equals(Method method, Object[] args, Object proxy) throws Throwable {
+        return isIdentical(method, args, proxy);
     }
 
     protected Object remove(Method method, Object[] args, Object proxy) throws Throwable {