Browse Source

test and fix for 153535

tags/post_pr_153572
aclement 17 years ago
parent
commit
82e3e13c66

+ 1
- 1
weaver/src/org/aspectj/weaver/reflect/ReflectionWorld.java View File

@@ -96,7 +96,7 @@ public class ReflectionWorld extends World implements IReflectionWorld {
// classes that represent arrays return a class name that is the signature of the array type, ho-hum...
String className = aClass.getName();
if (aClass.isArray()) {
return world.resolve(UnresolvedType.forSignature(className));
return world.resolve(UnresolvedType.forSignature(className.replace('.','/')));
}
else{
return world.resolve(className);

+ 7
- 0
weaver/testsrc/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateTest.java View File

@@ -12,6 +12,7 @@
package org.aspectj.weaver.reflect;


import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;

@@ -99,6 +100,12 @@ public class ReflectionBasedReferenceTypeDelegateTest extends TestCase {
assertEquals(world.resolve("reflect.tests.C"),d.getSuperclass());
}
public void testArrayArgsSig() throws Exception {
Method invokeMethod = Method.class.getMethod("invoke", new Class[] { Object.class, Object[].class});
ResolvedMember reflectionMethod = ReflectionBasedReferenceTypeDelegateFactory.createResolvedMethod(invokeMethod, world);
String exp = "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;";
assertTrue("Expected: \n"+exp+"\n but got:\n"+reflectionMethod.getSignature(), reflectionMethod.getSignature().equals(exp));
}

protected int findMethod(String name, ResolvedMember[] methods) {
for (int i=0; i<methods.length; i++) {

+ 8
- 0
weaver5/java5-testsrc/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateTest.java View File

@@ -12,6 +12,7 @@
package org.aspectj.weaver.reflect;


import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;

@@ -296,6 +297,13 @@ public abstract class ReflectionBasedReferenceTypeDelegateTest extends TestCase
assertTrue("Should be one extra (clinit) in BCEL case, but bcel="+rms1.length+" reflect="+rms2.length,rms1.length==rms2.length+1);
}
}

public void testArrayArgsSig() throws Exception {
Method invokeMethod = Method.class.getMethod("invoke", new Class[] { Object.class, Object[].class});
ResolvedMember reflectionMethod = ReflectionBasedReferenceTypeDelegateFactory.createResolvedMethod(invokeMethod, world);
String exp = "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;";
assertTrue("Expected: \n"+exp+"\n but got:\n"+reflectionMethod.getSignature(), reflectionMethod.getSignature().equals(exp));
}
// todo: array of int


Loading…
Cancel
Save