[jboss-svn-commits] JBL Code SVN: r27843 - in labs/jbosstm/workspace/adinn/byteman/trunk: tests/dd/scripts/location and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jul 10 12:29:39 EDT 2009


Author: adinn
Date: 2009-07-10 12:29:36 -0400 (Fri, 10 Jul 2009)
New Revision: 27843

Modified:
   labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/agent/adapter/AccessCheckAdapter.java
   labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/agent/adapter/AccessTriggerAdapter.java
   labs/jbosstm/workspace/adinn/byteman/trunk/tests/dd/scripts/location/TestCall.txt
   labs/jbosstm/workspace/adinn/byteman/trunk/tests/dd/scripts/location/TestReadWrite.txt
Log:
ensured package and class names can be use to qualify the field provided in an AT READ/WRITE location specifier - fixes BYTEMAN-12

Modified: labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/agent/adapter/AccessCheckAdapter.java
===================================================================
--- labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/agent/adapter/AccessCheckAdapter.java	2009-07-10 16:24:11 UTC (rev 27842)
+++ labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/agent/adapter/AccessCheckAdapter.java	2009-07-10 16:29:36 UTC (rev 27843)
@@ -26,6 +26,7 @@
 import org.objectweb.asm.*;
 import org.jboss.byteman.agent.Location;
 import org.jboss.byteman.rule.Rule;
+import org.jboss.byteman.rule.type.TypeHelper;
 
 /**
  * asm Adapter class used to check that the target method for a rule exists in a class
@@ -130,13 +131,25 @@
                 }
                 break;
             }
+
             if (ownerClass != null) {
-                if (!ownerClass.equals(owner)) {
+                if (!ownerClass.equals(TypeHelper.internalizeClass(owner))) {
                     // TODO check for unqualified names
-                    return false;
+                    // if the called class has no package qualification and the owner class does then we
+                    // can still match if the unqualified owner name equals the called class
+
+                    if (ownerClass.indexOf('.') >= 0) {
+                        return false;
+                    }
+
+                    int ownerPackageIdx = owner.lastIndexOf('/');
+                    if (ownerPackageIdx < 0) {
+                        return false;
+                    } else if (!owner.substring(ownerPackageIdx+1).equals(ownerClass)) {
+                        return false;
+                    }
                 }
             }
-            // TODO work out how to use desc???
             return true;
         }
     }

Modified: labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/agent/adapter/AccessTriggerAdapter.java
===================================================================
--- labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/agent/adapter/AccessTriggerAdapter.java	2009-07-10 16:24:11 UTC (rev 27842)
+++ labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/agent/adapter/AccessTriggerAdapter.java	2009-07-10 16:29:36 UTC (rev 27843)
@@ -164,12 +164,23 @@
                 break;
             }
             if (ownerClass != null) {
-                if (!ownerClass.equals(owner)) {
+                if (!ownerClass.equals(TypeHelper.internalizeClass(owner))) {
                     // TODO check for unqualified names
-                    return false;
+                    // if the called class has no package qualification and the owner class does then we
+                    // can still match if the unqualified owner name equals the called class
+
+                    if (ownerClass.indexOf('.') >= 0) {
+                        return false;
+                    }
+
+                    int ownerPackageIdx = owner.lastIndexOf('/');
+                    if (ownerPackageIdx < 0) {
+                        return false;
+                    } else if (!owner.substring(ownerPackageIdx+1).equals(ownerClass)) {
+                        return false;
+                    }
                 }
             }
-            // TODO work out how to use desc???
             return true;
         }
     }

Modified: labs/jbosstm/workspace/adinn/byteman/trunk/tests/dd/scripts/location/TestCall.txt
===================================================================
--- labs/jbosstm/workspace/adinn/byteman/trunk/tests/dd/scripts/location/TestCall.txt	2009-07-10 16:24:11 UTC (rev 27842)
+++ labs/jbosstm/workspace/adinn/byteman/trunk/tests/dd/scripts/location/TestCall.txt	2009-07-10 16:29:36 UTC (rev 27843)
@@ -46,7 +46,7 @@
 CLASS TestCallThrowSynchAuxiliary
 METHOD testMethod()
 HELPER org.jboss.byteman.tests.helpers.Default
-AT CALL getCounter 3
+AT CALL TestCallThrowSynchAuxiliary.getCounter 3
 BIND test : Test = $0.getTest()
 IF TRUE
 DO test.log("CALL getCounter 3 triggered in TestCallThrowSynchAuxiliary.testMethod")
@@ -56,7 +56,7 @@
 CLASS TestCallThrowSynchAuxiliary
 METHOD testMethod()
 HELPER org.jboss.byteman.tests.helpers.Default
-AT CALL setCounter
+AT CALL TestCallThrowSynchAuxiliary.setCounter
 BIND test : Test = $0.getTest()
 IF TRUE
 DO test.log("CALL setCounter triggered in TestCallThrowSynchAuxiliary.testMethod")
@@ -66,7 +66,7 @@
 CLASS TestCallThrowSynchAuxiliary
 METHOD testMethod()
 HELPER org.jboss.byteman.tests.helpers.Default
-AT CALL setCounter 2
+AT CALL org.jboss.byteman.tests.auxiliary.TestCallThrowSynchAuxiliary.setCounter 2
 BIND test : Test = $0.getTest()
 IF TRUE
 DO test.log("CALL setCounter 2 triggered in TestCallThrowSynchAuxiliary.testMethod")
@@ -76,7 +76,7 @@
 CLASS TestCallThrowSynchAuxiliary
 METHOD testMethod()
 HELPER org.jboss.byteman.tests.helpers.Default
-AT CALL setCounter 3
+AT CALL org.jboss.byteman.tests.auxiliary.TestCallThrowSynchAuxiliary.setCounter 3
 BIND test : Test = $0.getTest()
 IF TRUE
 DO test.log("CALL setCounter 3 triggered in TestCallThrowSynchAuxiliary.testMethod"),

Modified: labs/jbosstm/workspace/adinn/byteman/trunk/tests/dd/scripts/location/TestReadWrite.txt
===================================================================
--- labs/jbosstm/workspace/adinn/byteman/trunk/tests/dd/scripts/location/TestReadWrite.txt	2009-07-10 16:24:11 UTC (rev 27842)
+++ labs/jbosstm/workspace/adinn/byteman/trunk/tests/dd/scripts/location/TestReadWrite.txt	2009-07-10 16:29:36 UTC (rev 27843)
@@ -36,7 +36,7 @@
 CLASS TestReadWriteAuxiliary
 METHOD testMethod()
 HELPER org.jboss.byteman.tests.helpers.Default
-AFTER READ counter 2
+AFTER READ TestReadWriteAuxiliary.counter 2
 BIND test : Test = $0.getTest()
 IF TRUE
 DO test.log("AFTER READ 2 triggered in TestReadWriteAuxiliary.testMethod : counter == " + $0.counter)
@@ -56,7 +56,7 @@
 CLASS TestReadWriteAuxiliary
 METHOD testMethod()
 HELPER org.jboss.byteman.tests.helpers.Default
-AFTER WRITE counter 2
+AFTER WRITE org.jboss.byteman.tests.auxiliary.TestReadWriteAuxiliary.counter 2
 BIND test : Test = $0.getTest()
 IF TRUE
 DO test.log("AFTER WRITE 2 triggered in TestReadWriteAuxiliary.testMethod : counter == " + $0.counter)




More information about the jboss-svn-commits mailing list