@@ -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); |
@@ -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++) { |
@@ -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 | |||