[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