]> source.dussan.org Git - aspectj.git/commitdiff
enhancements to signature to support getAccessibleMember() (see ajdk:annotations)
authoracolyer <acolyer>
Wed, 9 Mar 2005 11:16:44 +0000 (11:16 +0000)
committeracolyer <acolyer>
Wed, 9 Mar 2005 11:16:44 +0000 (11:16 +0000)
runtime/src/org/aspectj/lang/reflect/MemberSignature.java
runtime/src/org/aspectj/runtime/reflect/AdviceSignatureImpl.java
runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java
runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java
runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java
runtime/src/org/aspectj/runtime/reflect/MemberSignatureImpl.java
runtime/src/org/aspectj/runtime/reflect/MethodSignatureImpl.java

index 31f21df7d2c38285cfaa3df02cb9ca6b280efc6d..fb267e08098a1e7de9133ae82efbbe0a7bfd5bae 100644 (file)
 
 package org.aspectj.lang.reflect;
 
+import java.lang.reflect.AccessibleObject;
+
 import org.aspectj.lang.Signature;
 
 public interface MemberSignature extends Signature {
+       AccessibleObject getAccessibleObject();
 }
index 7efe2cd7dc0598a756df6a3e20755ab262f24603..74bf6e0e4f430e77121b3fd6f8c220530a3e6068 100644 (file)
@@ -14,6 +14,8 @@
 
 package org.aspectj.runtime.reflect;
 
+import java.lang.reflect.AccessibleObject;
+
 import org.aspectj.lang.reflect.AdviceSignature;
 
 class AdviceSignatureImpl extends CodeSignatureImpl implements AdviceSignature {
@@ -52,4 +54,16 @@ class AdviceSignatureImpl extends CodeSignatureImpl implements AdviceSignature {
         sm.addThrows(buf, getExceptionTypes());
         return buf.toString();
     }
+    
+    /* (non-Javadoc)
+        * @see org.aspectj.runtime.reflect.MemberSignatureImpl#createAccessibleObject()
+        */
+       protected AccessibleObject createAccessibleObject() {
+               try {
+                       return declaringType.getDeclaredMethod(getName(),getParameterTypes());
+               } catch (Exception ex) {
+                       ; // nothing we can do, caller will see null
+               }
+               return null;
+       }
 }
index 520cfdf09ef8cbf776d2ab0ad9af2693f9146faf..12ac6ba8e5c47d306aee9959461b8b041238558d 100644 (file)
@@ -14,6 +14,8 @@
 
 package org.aspectj.runtime.reflect;
 
+import java.lang.reflect.AccessibleObject;
+
 import org.aspectj.lang.reflect.ConstructorSignature;
 
 class ConstructorSignatureImpl extends CodeSignatureImpl implements ConstructorSignature {
@@ -37,4 +39,16 @@ class ConstructorSignatureImpl extends CodeSignatureImpl implements ConstructorS
         sm.addThrows(buf, getExceptionTypes());
         return buf.toString();
     }
+    
+    /* (non-Javadoc)
+        * @see org.aspectj.runtime.reflect.MemberSignatureImpl#createAccessibleObject()
+        */
+       protected AccessibleObject createAccessibleObject() {
+               try {
+                       return declaringType.getDeclaredConstructor(getParameterTypes());
+               } catch (Exception ex) {
+                       ; // nothing we can do, caller will see null
+               }
+               return null;
+       }
 }
index c56ca52124a1709c6be83b3fe02983b569464a33..3c14e405033721497d91156ee4a709ee1e8bacf5 100644 (file)
@@ -14,6 +14,8 @@
 
 package org.aspectj.runtime.reflect;
  
+import java.lang.reflect.AccessibleObject;
+
 import org.aspectj.lang.reflect.FieldSignature;
 
 public class FieldSignatureImpl extends MemberSignatureImpl implements FieldSignature {
@@ -45,4 +47,16 @@ public class FieldSignatureImpl extends MemberSignatureImpl implements FieldSign
         buf.append(getName());        
         return buf.toString();
     } 
+    
+    /* (non-Javadoc)
+        * @see org.aspectj.runtime.reflect.MemberSignatureImpl#createAccessibleObject()
+        */
+       protected AccessibleObject createAccessibleObject() {
+               try {
+                       return declaringType.getDeclaredField(getName());
+               } catch (Exception ex) {
+                       ; // nothing we can do, caller will see null
+               }
+               return null;
+       }
 }
index 740ec07f3a5a900aee3b111631ae88eeb87dc560..7b5e41683d53033656900de93d9d056c8be4f96d 100644 (file)
@@ -16,6 +16,7 @@ package org.aspectj.runtime.reflect;
 
 import org.aspectj.lang.reflect.InitializerSignature;
 
+import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Modifier;
 
 class InitializerSignatureImpl extends CodeSignatureImpl implements InitializerSignature {
@@ -40,4 +41,16 @@ class InitializerSignatureImpl extends CodeSignatureImpl implements InitializerS
         buf.append(getName());        
         return buf.toString();
     }
+    
+    /* (non-Javadoc)
+        * @see org.aspectj.runtime.reflect.MemberSignatureImpl#createAccessibleObject()
+        */
+       protected AccessibleObject createAccessibleObject() {
+               try {
+                       return declaringType.getDeclaredConstructor(getParameterTypes());
+               } catch (Exception ex) {
+                       ; // nothing we can do, caller will see null
+               }
+               return null;
+       }
 }
index 66c535a5c13dad2de3aa4ca4c23f402cf7ba3bfa..09ebba7fffbfb9bf51657511ca5405603235f054 100644 (file)
 
 package org.aspectj.runtime.reflect;
 
+import java.lang.reflect.AccessibleObject;
+
 import org.aspectj.lang.reflect.MemberSignature;
 
 abstract class MemberSignatureImpl extends SignatureImpl implements MemberSignature {
+       protected AccessibleObject accessibleObj = null;
+       
     MemberSignatureImpl(int modifiers, String name, Class declaringType) {   
         super(modifiers, name, declaringType);
     }
@@ -24,4 +28,16 @@ abstract class MemberSignatureImpl extends SignatureImpl implements MemberSignat
     public MemberSignatureImpl(String stringRep) {
         super(stringRep);
     }
+    
+    /* (non-Javadoc)
+        * @see org.aspectj.lang.reflect.MemberSignature#getAccessibleObject()
+        */
+       public AccessibleObject getAccessibleObject() {
+               if (accessibleObj == null) {
+                       accessibleObj = createAccessibleObject();
+               }
+               return accessibleObj;
+       }
+       
+       protected abstract AccessibleObject createAccessibleObject();
 }
index 7e667425d45a4cfb33a324d2ef4c491b013abfce..51ba06237bb25cfa2ff579b98b7780e7fc97966a 100644 (file)
@@ -14,6 +14,8 @@
 
 package org.aspectj.runtime.reflect;
 
+import java.lang.reflect.AccessibleObject;
+
 import org.aspectj.lang.reflect.MethodSignature;
 
 class MethodSignatureImpl extends CodeSignatureImpl implements MethodSignature {
@@ -50,4 +52,16 @@ class MethodSignatureImpl extends CodeSignatureImpl implements MethodSignature {
         sm.addThrows(buf, getExceptionTypes());
         return buf.toString();
     }
+    
+    /* (non-Javadoc)
+        * @see org.aspectj.lang.reflect.MemberSignature#getAccessibleObject()
+        */
+       public AccessibleObject createAccessibleObject() {
+               try {
+                       return declaringType.getDeclaredMethod(getName(),getParameterTypes());
+               } catch (NoSuchMethodException nsmEx) {
+                       ; // nothing we can do, user will see null return
+               }
+               return null;
+       }
 }