[jboss-svn-commits] JBL Code SVN: r27741 - labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/test.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 8 10:15:19 EDT 2009


Author: adinn
Date: 2009-07-08 10:15:18 -0400 (Wed, 08 Jul 2009)
New Revision: 27741

Modified:
   labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/test/TestScript.java
Log:
added case handling to fail gracefully on rules with trigger method specified as METHOD <clinit> -- fixes BYTEMAN-11

Modified: labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/test/TestScript.java
===================================================================
--- labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/test/TestScript.java	2009-07-08 14:11:00 UTC (rev 27740)
+++ labs/jbosstm/workspace/adinn/byteman/trunk/src/org/jboss/byteman/test/TestScript.java	2009-07-08 14:15:18 UTC (rev 27741)
@@ -229,12 +229,14 @@
                 boolean multiple = false;
                 try {
                     Class targetClass = loader.loadClass(targetClassName);
-                    if (!targetName.equals("<init>")) {
-                        Method[] candidates = targetClass.getDeclaredMethods();
-                        for (Method candidate : candidates) {
-                            String candidateName = candidate.getName();
-                            String candidateDesc = makeDescriptor(candidate);
-                            if (targetName.equals(candidateName)) {
+                    if (targetName.equals("<clinit>")) {
+                        System.err.println("TestScript: cannot type check <clinit> rule " + ruleName);
+                    } else if (targetName.equals("<init>")) {
+                        Constructor[] constructors = targetClass.getConstructors();
+                        for (Constructor constructor : constructors) {
+                            String candidateName = constructor.getName();
+                            String candidateDesc = makeDescriptor(constructor);
+                            if (targetName.equals("<init>")) {
                                 if (targetDesc.equals("") || TypeHelper.equalDescriptors(targetDesc, candidateDesc)) {
                                     System.err.println("TestScript: checking rule " + ruleName);
                                     if (found) {
@@ -243,13 +245,13 @@
                                     }
                                     found = true;
                                     int access = 0;
-                                    Class<?>[] exceptionClasses = candidate.getExceptionTypes();
+                                    Class<?>[] exceptionClasses = constructor.getExceptionTypes();
                                     int l = exceptionClasses.length;
                                     String[] exceptionNames = new String[l];
                                     for (int i = 0; i < l; i++) {
                                         exceptionNames[i] = exceptionClasses[i].getCanonicalName();
                                     }
-                                    if ((candidate.getModifiers() & Modifier.STATIC) != 0) {
+                                    if ((constructor.getModifiers() & Modifier.STATIC) != 0) {
                                         access = Opcodes.ACC_STATIC;
                                     }
                                     rule.setTypeInfo(targetClassName, access, candidateName, candidateDesc, exceptionNames);
@@ -269,11 +271,11 @@
                             }
                         }
                     } else {
-                        Constructor[] constructors = targetClass.getConstructors();
-                        for (Constructor constructor : constructors) {
-                            String candidateName = constructor.getName();
-                            String candidateDesc = makeDescriptor(constructor);
-                            if (targetName.equals("<init>")) {
+                        Method[] candidates = targetClass.getDeclaredMethods();
+                        for (Method candidate : candidates) {
+                            String candidateName = candidate.getName();
+                            String candidateDesc = makeDescriptor(candidate);
+                            if (targetName.equals(candidateName)) {
                                 if (targetDesc.equals("") || TypeHelper.equalDescriptors(targetDesc, candidateDesc)) {
                                     System.err.println("TestScript: checking rule " + ruleName);
                                     if (found) {
@@ -282,13 +284,13 @@
                                     }
                                     found = true;
                                     int access = 0;
-                                    Class<?>[] exceptionClasses = constructor.getExceptionTypes();
+                                    Class<?>[] exceptionClasses = candidate.getExceptionTypes();
                                     int l = exceptionClasses.length;
                                     String[] exceptionNames = new String[l];
                                     for (int i = 0; i < l; i++) {
                                         exceptionNames[i] = exceptionClasses[i].getCanonicalName();
                                     }
-                                    if ((constructor.getModifiers() & Modifier.STATIC) != 0) {
+                                    if ((candidate.getModifiers() & Modifier.STATIC) != 0) {
                                         access = Opcodes.ACC_STATIC;
                                     }
                                     rule.setTypeInfo(targetClassName, access, candidateName, candidateDesc, exceptionNames);




More information about the jboss-svn-commits mailing list