From 508dbcbc90bc7526fc8cef9fe924a97c166e5a0e Mon Sep 17 00:00:00 2001 From: acolyer Date: Mon, 28 Nov 2005 12:08:29 +0000 Subject: [PATCH] tests for pr11280, update to reflection api to get classloading right for test suite etc. --- tests/bugs150/Pr112880.aj | 37 +++++++++++++++++++ .../systemtest/ajc150/Ajc150Tests.java | 4 ++ .../org/aspectj/systemtest/ajc150/ajc150.xml | 12 +++++- ...tionBasedReferenceTypeDelegateFactory.java | 9 ++--- 4 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 tests/bugs150/Pr112880.aj diff --git a/tests/bugs150/Pr112880.aj b/tests/bugs150/Pr112880.aj new file mode 100644 index 000000000..14a3d9d87 --- /dev/null +++ b/tests/bugs150/Pr112880.aj @@ -0,0 +1,37 @@ + +abstract class AbstractAttributeGuiFactory { + + public A getThis() { + return null; + } + + public B getThat() { + return null; + } + +} + +class ColorAttributeGuiFactory extends AbstractAttributeGuiFactory {} + +class C1 {} + +class C2 {} + +aspect ForceParameterization { + + + before() : call(C1 *(..)) || call(C2 *(..)) { + System.out.println("method returning C1 or C2"); + } + +} + +public class Pr112880 { + + public static void main(String[] args) { + ColorAttributeGuiFactory f = new ColorAttributeGuiFactory(); + f.getThis(); + f.getThat(); + } + +} \ No newline at end of file diff --git a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java index c0ae27441..282e04c8b 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java @@ -747,6 +747,10 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase { runTest("parameterized pointcut and advice"); } + public void testDoublyParameterizedAbstractType() { + runTest("double parameter generic abstract type"); + } + /* * Load-time weaving bugs */ diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml index 311903ca1..bc6d6d009 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml +++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml @@ -37,8 +37,18 @@ - acj + + + + + + + + + + + diff --git a/weaver/src/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateFactory.java b/weaver/src/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateFactory.java index c48b19cf1..fc19988b5 100644 --- a/weaver/src/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateFactory.java +++ b/weaver/src/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateFactory.java @@ -49,17 +49,16 @@ public class ReflectionBasedReferenceTypeDelegateFactory { private static ReflectionBasedReferenceTypeDelegate create15Delegate(ReferenceType forReferenceType, Class forClass, ClassLoader usingClassLoader, World inWorld) { try { - // important that we use *our own* classloader for the next call... - Class delegateClass = Class.forName("org.aspectj.weaver.reflect.Java15ReflectionBasedReferenceTypeDelegate",false,ReflectionBasedReferenceTypeDelegate.class.getClassLoader()); + Class delegateClass = Class.forName("org.aspectj.weaver.reflect.Java15ReflectionBasedReferenceTypeDelegate",false,usingClassLoader);//ReflectionBasedReferenceTypeDelegate.class.getClassLoader()); ReflectionBasedReferenceTypeDelegate ret = (ReflectionBasedReferenceTypeDelegate) delegateClass.newInstance(); ret.initialize(forReferenceType,forClass,usingClassLoader,inWorld); return ret; } catch (ClassNotFoundException cnfEx) { - return null; + throw new IllegalStateException("Attempted to create Java 1.5 reflection based delegate but org.aspectj.weaver.reflect.Java15ReflectionBasedReferenceTypeDelegate was not found on classpath"); } catch (InstantiationException insEx) { - return null; + throw new IllegalStateException("Attempted to create Java 1.5 reflection based delegate but InstantiationException: " + insEx + " occured"); } catch (IllegalAccessException illAccEx) { - return null; + throw new IllegalStateException("Attempted to create Java 1.5 reflection based delegate but IllegalAccessException: " + illAccEx + " occured"); } } -- 2.39.5