Author: markt
Date: Fri Aug 12 13:47:10 2011
New Revision: 1157107

URL: http://svn.apache.org/viewvc?rev=1157107&view=rev
Log:
Undo accidental changes included in 1157000

Modified:
    
tomcat/tc5.5.x/trunk/container/modules/cluster/src/share/org/apache/catalina/cluster/session/ReplicationStream.java
    
tomcat/tc5.5.x/trunk/container/modules/groupcom/src/share/org/apache/catalina/tribes/io/ReplicationStream.java

Modified: 
tomcat/tc5.5.x/trunk/container/modules/cluster/src/share/org/apache/catalina/cluster/session/ReplicationStream.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/modules/cluster/src/share/org/apache/catalina/cluster/session/ReplicationStream.java?rev=1157107&r1=1157106&r2=1157107&view=diff
==============================================================================
--- 
tomcat/tc5.5.x/trunk/container/modules/cluster/src/share/org/apache/catalina/cluster/session/ReplicationStream.java
 (original)
+++ 
tomcat/tc5.5.x/trunk/container/modules/cluster/src/share/org/apache/catalina/cluster/session/ReplicationStream.java
 Fri Aug 12 13:47:10 2011
@@ -22,8 +22,6 @@ import java.io.InputStream;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectStreamClass;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Proxy;
 
 /**
  * Custom subclass of <code>ObjectInputStream</code> that loads from the
@@ -88,43 +86,6 @@ public final class ReplicationStream ext
         }
     }
     
-    /**
-     * ObjectInputStream.resolveProxyClass has some funky way of using 
-     * the incorrect class loader to resolve proxy classes, let's do it our 
way instead
-     */
-    protected Class resolveProxyClass(String[] interfaces)
-        throws IOException, ClassNotFoundException {
-        
-        ClassLoader latestLoader = classLoader;
-        ClassLoader nonPublicLoader = null;
-        boolean hasNonPublicInterface = false;
-
-        // define proxy in class loader of non-public interface(s), if any
-        Class[] classObjs = new Class[interfaces.length];
-        for (int i = 0; i < interfaces.length; i++) {
-            Class cl = this.findWebappClass(interfaces[i]);
-            if (latestLoader == null) latestLoader = cl.getClassLoader();
-            if ((cl.getModifiers() & Modifier.PUBLIC) == 0) {
-                if (hasNonPublicInterface) {
-                    if (nonPublicLoader != cl.getClassLoader()) {
-                        throw new IllegalAccessError(
-                            "conflicting non-public interface class loaders");
-                    }
-                } else {
-                    nonPublicLoader = cl.getClassLoader();
-                    hasNonPublicInterface = true;
-                }
-            }
-            classObjs[i] = cl;
-        }
-        try {
-            return Proxy.getProxyClass(hasNonPublicInterface ? nonPublicLoader
-                    : latestLoader, classObjs);
-        } catch (IllegalArgumentException e) {
-            throw new ClassNotFoundException(null, e);
-        }
-    }
-
     public Class findReplicationClass(String name)
         throws ClassNotFoundException, IOException {
         return Class.forName(name, false, getClass().getClassLoader());

Modified: 
tomcat/tc5.5.x/trunk/container/modules/groupcom/src/share/org/apache/catalina/tribes/io/ReplicationStream.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/modules/groupcom/src/share/org/apache/catalina/tribes/io/ReplicationStream.java?rev=1157107&r1=1157106&r2=1157107&view=diff
==============================================================================
--- 
tomcat/tc5.5.x/trunk/container/modules/groupcom/src/share/org/apache/catalina/tribes/io/ReplicationStream.java
 (original)
+++ 
tomcat/tc5.5.x/trunk/container/modules/groupcom/src/share/org/apache/catalina/tribes/io/ReplicationStream.java
 Fri Aug 12 13:47:10 2011
@@ -22,8 +22,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectStreamClass;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Proxy;
 
 /**
  * Custom subclass of <code>ObjectInputStream</code> that loads from the
@@ -73,68 +71,23 @@ public final class ReplicationStream ext
     public Class resolveClass(ObjectStreamClass classDesc)
         throws ClassNotFoundException, IOException {
         String name = classDesc.getName();
+        boolean tryRepFirst = name.startsWith("org.apache.catalina.tribes");
         try {
-            return resolveClass(name);
+            try
+            {
+                if ( tryRepFirst ) return findReplicationClass(name);
+                else return findExternalClass(name);
+            }
+            catch ( Exception x )
+            {
+                if ( tryRepFirst ) return findExternalClass(name);
+                else return findReplicationClass(name);
+            }
         } catch (ClassNotFoundException e) {
             return super.resolveClass(classDesc);
         }
     }
     
-    public Class resolveClass(String name)
-        throws ClassNotFoundException, IOException {
-    
-        boolean tryRepFirst = name.startsWith("org.apache.catalina.tribes");
-            try {
-            if (tryRepFirst)
-                return findReplicationClass(name);
-            else
-                return findExternalClass(name);
-        } catch (Exception x) {
-            if (tryRepFirst)
-                return findExternalClass(name);
-            else
-                return findReplicationClass(name);
-        }
-    }
-
-    /**
-     * ObjectInputStream.resolveProxyClass has some funky way of using 
-     * the incorrect class loader to resolve proxy classes, let's do it our 
way instead
-     */
-    protected Class resolveProxyClass(String[] interfaces)
-            throws IOException, ClassNotFoundException {
-        
-        ClassLoader latestLoader = (classLoaders!=null && 
classLoaders.length==0)?null:classLoaders[0];
-        ClassLoader nonPublicLoader = null;
-        boolean hasNonPublicInterface = false;
-
-        // define proxy in class loader of non-public interface(s), if any
-        Class[] classObjs = new Class[interfaces.length];
-        for (int i = 0; i < interfaces.length; i++) {
-            Class cl = this.resolveClass(interfaces[i]);
-            if (latestLoader==null) latestLoader = cl.getClassLoader();
-            if ((cl.getModifiers() & Modifier.PUBLIC) == 0) {
-                if (hasNonPublicInterface) {
-                    if (nonPublicLoader != cl.getClassLoader()) {
-                        throw new IllegalAccessError(
-                                "conflicting non-public interface class 
loaders");
-                    }
-                } else {
-                    nonPublicLoader = cl.getClassLoader();
-                    hasNonPublicInterface = true;
-                }
-            }
-            classObjs[i] = cl;
-        }
-        try {
-            return Proxy.getProxyClass(hasNonPublicInterface ? nonPublicLoader
-                    : latestLoader, classObjs);
-        } catch (IllegalArgumentException e) {
-            throw new ClassNotFoundException(null, e);
-        }
-    }
-
-    
     public Class findReplicationClass(String name)
         throws ClassNotFoundException, IOException {
         Class clazz = Class.forName(name, false, getClass().getClassLoader());



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to