]> source.dussan.org Git - aspectj.git/commitdiff
Bug 155972 "NullPointerException in ConstructorSignature.getConstructor()"
authormwebster <mwebster>
Mon, 4 Sep 2006 14:24:51 +0000 (14:24 +0000)
committermwebster <mwebster>
Mon, 4 Sep 2006 14:24:51 +0000 (14:24 +0000)
lib/aspectj/lib/aspectjrt.jar
lib/test/aspectjrt.jar
runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java
runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java
runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java
tests/bugs153/pr155972/ConstructorTest.java [new file with mode: 0644]
tests/bugs153/pr155972/FieldTest.java [new file with mode: 0644]
tests/bugs153/pr155972/InitializerTest.java [new file with mode: 0644]
tests/bugs153/pr155972/SignatureImplAspect.aj [new file with mode: 0644]
tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java
tests/src/org/aspectj/systemtest/ajc153/ajc153.xml

index f0a9347781205030236c4bba810d2ec27423ac9b..63ed037dab142bcfb13af331e1bb7a4fe13f0802 100644 (file)
Binary files a/lib/aspectj/lib/aspectjrt.jar and b/lib/aspectj/lib/aspectjrt.jar differ
index f0a9347781205030236c4bba810d2ec27423ac9b..63ed037dab142bcfb13af331e1bb7a4fe13f0802 100644 (file)
Binary files a/lib/test/aspectjrt.jar and b/lib/test/aspectjrt.jar differ
index 985300360c03b35fa4a7fda7bda57077f07540a4..a7f688d5827119848bd7adb6679306679e5984ad 100644 (file)
@@ -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
                        }
index f22b603a5d11d98b7530ff5e090b272408c30bfd..8c3de24c42ebeb005a67bb6da498d2939b330d72 100644 (file)
@@ -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
                        }
index 8b074e707e73078a022e2c1589dada33ffacec87..adb8f840e71305d528cd18f50d67a0adf28fc351 100644 (file)
@@ -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 (file)
index 0000000..f3aac90
--- /dev/null
@@ -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 (file)
index 0000000..53ae50f
--- /dev/null
@@ -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 (file)
index 0000000..94b3ed4
--- /dev/null
@@ -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 (file)
index 0000000..e28eb1b
--- /dev/null
@@ -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());
+       }
+}
index 65f9f913e1eaae875b6c8957ed1e061a89ce3661..8f53af8fca8df754262f1fecadcf8dc6cc181257 100644 (file)
@@ -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);
index 68bd94185c845ea90936e4eaa856da8b36cc041e..2dc4ec7e7b679a6b3af68822f4558939b8521b3b 100644 (file)
       </run>
     </ajc-test>
     
+    <ajc-test dir="bugs153/pr155972" title="NPE in ConstructorSignatureImpl">
+      <compile files="ConstructorTest.java, SignatureImplAspect.aj" options="-Xlint:ignore"/>
+      <run class="ConstructorTest">
+        <stdout>
+          <line text="ConstructorTest"/>
+        </stdout>
+      </run>
+    </ajc-test>
+    
+    <ajc-test dir="bugs153/pr155972" title="NPE in FieldSignatureImpl">
+      <compile files="FieldTest.java, SignatureImplAspect.aj" options="-Xlint:ignore"/>
+      <run class="FieldTest">
+        <stdout>
+          <line text="intField"/>
+        </stdout>
+      </run>
+    </ajc-test>
+    
+    <ajc-test dir="bugs153/pr155972" title="NPE in InitializerSignatureImpl">
+      <compile files="InitializerTest.java, SignatureImplAspect.aj" options="-Xlint:ignore"/>
+      <run class="InitializerTest">
+        <stdout>
+          <line text="InitializerTest"/>
+        </stdout>
+      </run>
+    </ajc-test>
+    
 </suite>
\ No newline at end of file