[jboss-cvs] javassist SVN: r527 - in trunk/src: test/test/javassist/proxy and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 13 05:00:48 EDT 2010


Author: adinn
Date: 2010-04-13 05:00:47 -0400 (Tue, 13 Apr 2010)
New Revision: 527

Added:
   trunk/src/test/test/javassist/proxy/JASSIST113RegressionTest.java
Modified:
   trunk/src/main/javassist/util/proxy/ProxyFactory.java
Log:
fixed regression introduced by fix to ProxyFactory -- fixes JASSIST-113

Modified: trunk/src/main/javassist/util/proxy/ProxyFactory.java
===================================================================
--- trunk/src/main/javassist/util/proxy/ProxyFactory.java	2010-04-12 16:58:08 UTC (rev 526)
+++ trunk/src/main/javassist/util/proxy/ProxyFactory.java	2010-04-13 09:00:47 UTC (rev 527)
@@ -157,8 +157,8 @@
     private List signatureMethods;
     private byte[] signature;
     private String classname;
+    private String basename;
     private String superName;
-    private String packageName;
     private Class thisClass;
     /**
      * per factory setting initialised from current setting for useCache but able to be reset before each create call
@@ -736,21 +736,24 @@
 
         if (superClass == null) {
             superClass = OBJECT_TYPE;
+            superName = superClass.getName();
+            basename = interfaces.length == 0 ? superName
+                                               : interfaces[0].getName();
+        } else {
+            superName = superClass.getName();
+            basename = superName;
         }
-        superName = superClass.getName();
 
         if (Modifier.isFinal(superClass.getModifiers()))
             throw new RuntimeException(superName + " is final");
-        packageName = getPackageName(superName);
-        if (packageName.startsWith("java."))
-            packageName = "org.javassist.tmp." + packageName;
+        
+        if (basename.startsWith("java."))
+            basename = "org.javassist.tmp." + basename;
     }
 
     private void allocateClassName()
     {
-        classname = makeProxyName(superName);
-        if (classname.startsWith("java."))
-            classname = "org.javassist.tmp." + classname;
+        classname = makeProxyName(basename);
     }
 
     private static Comparator sorter = new Comparator() {
@@ -786,7 +789,7 @@
             Method m = (Method)e.getValue();
             int mod = m.getModifiers();
             if (!Modifier.isFinal(mod) && !Modifier.isStatic(mod)
-                    && isVisible(mod, packageName, m) && (filter == null || filter.isHandled(m))) {
+                    && isVisible(mod, basename, m) && (filter == null || filter.isHandled(m))) {
                 setBit(signature, idx);
             }
         }
@@ -948,7 +951,7 @@
             Constructor c = cons[i];
             int mod = c.getModifiers();
             if (!Modifier.isFinal(mod) && !Modifier.isPrivate(mod)
-                    && isVisible(mod, packageName, c)) {
+                    && isVisible(mod, basename, c)) {
                 MethodInfo m = makeConstructor(thisClassName, c, cp, superClass, doHandlerInit);
                 cf.addMethod(m);
             }
@@ -984,17 +987,18 @@
      *
      * @param mod       the modifiers of the method. 
      */
-    private static boolean isVisible(int mod, String fromPackage, Member meth) {
+    private static boolean isVisible(int mod, String from, Member meth) {
         if ((mod & Modifier.PRIVATE) != 0)
             return false;
         else if ((mod & (Modifier.PUBLIC | Modifier.PROTECTED)) != 0)
             return true;
         else {
+            String p = getPackageName(from);
             String q = getPackageName(meth.getDeclaringClass().getName());
-            if (fromPackage == null)
+            if (p == null)
                 return q == null;
             else
-                return fromPackage.equals(q);
+                return p.equals(q);
         }
     }
 

Added: trunk/src/test/test/javassist/proxy/JASSIST113RegressionTest.java
===================================================================
--- trunk/src/test/test/javassist/proxy/JASSIST113RegressionTest.java	                        (rev 0)
+++ trunk/src/test/test/javassist/proxy/JASSIST113RegressionTest.java	2010-04-13 09:00:47 UTC (rev 527)
@@ -0,0 +1,22 @@
+package test.javassist.proxy;
+
+import javassist.util.proxy.ProxyFactory;
+import junit.framework.TestCase;
+
+/**
+ * Test for regression error detailed in JASSIST-113
+ */
+public class JASSIST113RegressionTest extends TestCase
+{
+    interface Bear
+    {
+        void hibernate();
+    }
+
+    public void testProxyFactoryWithNonPublicInterface()
+    {
+        ProxyFactory proxyFactory = new ProxyFactory();
+        proxyFactory.setInterfaces(new Class[]{Bear.class});
+        proxyFactory.createClass();
+    }
+}




More information about the jboss-cvs-commits mailing list