From: mwebster Date: Mon, 4 Sep 2006 14:24:51 +0000 (+0000) Subject: Bug 155972 "NullPointerException in ConstructorSignature.getConstructor()" X-Git-Tag: BEFORE_133532~66 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=090de7e4c5c9618f965259f93de6d490050543da;p=aspectj.git Bug 155972 "NullPointerException in ConstructorSignature.getConstructor()" --- diff --git a/lib/aspectj/lib/aspectjrt.jar b/lib/aspectj/lib/aspectjrt.jar index f0a934778..63ed037da 100644 Binary files a/lib/aspectj/lib/aspectjrt.jar and b/lib/aspectj/lib/aspectjrt.jar differ diff --git a/lib/test/aspectjrt.jar b/lib/test/aspectjrt.jar index f0a934778..63ed037da 100644 Binary files a/lib/test/aspectjrt.jar and b/lib/test/aspectjrt.jar differ diff --git a/runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java b/runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java index 985300360..a7f688d58 100644 --- a/runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java +++ b/runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java @@ -48,7 +48,7 @@ class ConstructorSignatureImpl extends CodeSignatureImpl implements ConstructorS public Constructor getConstructor() { if (constructor == null) { try { - constructor = declaringType.getDeclaredConstructor(getParameterTypes()); + constructor = getDeclaringType().getDeclaredConstructor(getParameterTypes()); } catch (Exception ex) { ; // nothing we can do, caller will see null } diff --git a/runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java b/runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java index f22b603a5..8c3de24c4 100644 --- a/runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java +++ b/runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java @@ -55,7 +55,7 @@ public class FieldSignatureImpl extends MemberSignatureImpl implements FieldSign public Field getField() { if (field == null) { try { - field = declaringType.getDeclaredField(getName()); + field = getDeclaringType().getDeclaredField(getName()); } catch (Exception ex) { ; // nothing we can do, caller will see null } diff --git a/runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java b/runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java index 8b074e707..adb8f840e 100644 --- a/runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java +++ b/runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java @@ -50,7 +50,7 @@ class InitializerSignatureImpl extends CodeSignatureImpl implements InitializerS public Constructor getInitializer() { if (constructor == null) { try { - constructor = declaringType.getDeclaredConstructor(getParameterTypes()); + constructor = getDeclaringType().getDeclaredConstructor(getParameterTypes()); } catch (Exception ex) { ; // nothing we can do, caller will see null } diff --git a/tests/bugs153/pr155972/ConstructorTest.java b/tests/bugs153/pr155972/ConstructorTest.java new file mode 100644 index 000000000..f3aac9072 --- /dev/null +++ b/tests/bugs153/pr155972/ConstructorTest.java @@ -0,0 +1,8 @@ + +public class ConstructorTest { + + public static void main(String[] args) { + new ConstructorTest(); + } + +} diff --git a/tests/bugs153/pr155972/FieldTest.java b/tests/bugs153/pr155972/FieldTest.java new file mode 100644 index 000000000..53ae50f63 --- /dev/null +++ b/tests/bugs153/pr155972/FieldTest.java @@ -0,0 +1,9 @@ +public class FieldTest { + + private static int intField; + + public static void main(String[] args) { + intField = 999; + } + +} diff --git a/tests/bugs153/pr155972/InitializerTest.java b/tests/bugs153/pr155972/InitializerTest.java new file mode 100644 index 000000000..94b3ed434 --- /dev/null +++ b/tests/bugs153/pr155972/InitializerTest.java @@ -0,0 +1,8 @@ + +public class InitializerTest { + + + public static void main(String[] args) { + } + +} diff --git a/tests/bugs153/pr155972/SignatureImplAspect.aj b/tests/bugs153/pr155972/SignatureImplAspect.aj new file mode 100644 index 000000000..e28eb1bdc --- /dev/null +++ b/tests/bugs153/pr155972/SignatureImplAspect.aj @@ -0,0 +1,30 @@ + + +import java.lang.reflect.Member; + +import org.aspectj.lang.reflect.ConstructorSignature; +import org.aspectj.lang.reflect.FieldSignature; +import org.aspectj.lang.reflect.InitializerSignature; + +public aspect SignatureImplAspect { + before () : (execution(ConstructorTest.new(..))) { + //thisJoinPointStaticPart.getSignature().getDeclaringType(); + Member m = ((ConstructorSignature) thisJoinPointStaticPart + .getSignature()).getConstructor(); + System.out.println(m.getName()); + } + + before() : set(int FieldTest.intField) { + //thisJoinPointStaticPart.getSignature().getDeclaringType(); + Member m = ((FieldSignature) thisJoinPointStaticPart + .getSignature()).getField(); + System.out.println(m.getName()); + } + + before() : staticinitialization(InitializerTest) { + //thisJoinPointStaticPart.getSignature().getDeclaringType(); + Member m = ((InitializerSignature) thisJoinPointStaticPart + .getSignature()).getInitializer(); + System.out.println(m.getName()); + } +} diff --git a/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java b/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java index 65f9f913e..8f53af8fc 100644 --- a/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java @@ -71,6 +71,18 @@ public class Ajc153Tests extends org.aspectj.testing.XMLBasedAjcTestCase { runTest("reweavableAspectNotRegistered error"); } + public void testNPEinConstructorSignatureImpl_pr155972 () { + runTest("NPE in ConstructorSignatureImpl"); + } + + public void testNPEinFieldSignatureImpl_pr155972 () { + runTest("NPE in FieldSignatureImpl"); + } + + public void testNPEinInitializerSignatureImpl_pr155972 () { + runTest("NPE in InitializerSignatureImpl"); + } + ///////////////////////////////////////// public static Test suite() { return XMLBasedAjcTestCase.loadSuite(Ajc153Tests.class); diff --git a/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml b/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml index 68bd94185..2dc4ec7e7 100644 --- a/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml +++ b/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml @@ -356,4 +356,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file