@@ -14,7 +14,10 @@ | |||
package org.aspectj.lang.reflect; | |||
import java.lang.reflect.AccessibleObject; | |||
import org.aspectj.lang.Signature; | |||
public interface MemberSignature extends Signature { | |||
AccessibleObject getAccessibleObject(); | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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; | |||
} | |||
} |
@@ -14,9 +14,13 @@ | |||
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(); | |||
} |
@@ -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; | |||
} | |||
} |