aboutsummaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/src/org/aspectj/lang/reflect/AdviceSignature.java2
-rw-r--r--runtime/src/org/aspectj/lang/reflect/ConstructorSignature.java2
-rw-r--r--runtime/src/org/aspectj/lang/reflect/FieldSignature.java2
-rw-r--r--runtime/src/org/aspectj/lang/reflect/InitializerSignature.java5
-rw-r--r--runtime/src/org/aspectj/lang/reflect/MemberSignature.java5
-rw-r--r--runtime/src/org/aspectj/lang/reflect/MethodSignature.java2
-rw-r--r--runtime/src/org/aspectj/runtime/reflect/AdviceSignatureImpl.java17
-rw-r--r--runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java18
-rw-r--r--runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java17
-rw-r--r--runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java18
-rw-r--r--runtime/src/org/aspectj/runtime/reflect/MemberSignatureImpl.java14
-rw-r--r--runtime/src/org/aspectj/runtime/reflect/MethodSignatureImpl.java17
12 files changed, 66 insertions, 53 deletions
diff --git a/runtime/src/org/aspectj/lang/reflect/AdviceSignature.java b/runtime/src/org/aspectj/lang/reflect/AdviceSignature.java
index 8afc4e1ac..e88aebbba 100644
--- a/runtime/src/org/aspectj/lang/reflect/AdviceSignature.java
+++ b/runtime/src/org/aspectj/lang/reflect/AdviceSignature.java
@@ -13,9 +13,11 @@
package org.aspectj.lang.reflect;
+import java.lang.reflect.Method;
public interface AdviceSignature extends CodeSignature {
Class getReturnType(); /* name is consistent with reflection API */
/* before and after always return Void.TYPE */
/* (some around also return Void.Type) */
+ Method getAdvice();
}
diff --git a/runtime/src/org/aspectj/lang/reflect/ConstructorSignature.java b/runtime/src/org/aspectj/lang/reflect/ConstructorSignature.java
index 66ab51397..3aea63dff 100644
--- a/runtime/src/org/aspectj/lang/reflect/ConstructorSignature.java
+++ b/runtime/src/org/aspectj/lang/reflect/ConstructorSignature.java
@@ -13,6 +13,8 @@
package org.aspectj.lang.reflect;
+import java.lang.reflect.Constructor;
public interface ConstructorSignature extends CodeSignature {
+ Constructor getConstructor();
}
diff --git a/runtime/src/org/aspectj/lang/reflect/FieldSignature.java b/runtime/src/org/aspectj/lang/reflect/FieldSignature.java
index d2973543a..af20d84de 100644
--- a/runtime/src/org/aspectj/lang/reflect/FieldSignature.java
+++ b/runtime/src/org/aspectj/lang/reflect/FieldSignature.java
@@ -13,7 +13,9 @@
package org.aspectj.lang.reflect;
+import java.lang.reflect.Field;
public interface FieldSignature extends MemberSignature {
public Class getFieldType();
+ public Field getField();
}
diff --git a/runtime/src/org/aspectj/lang/reflect/InitializerSignature.java b/runtime/src/org/aspectj/lang/reflect/InitializerSignature.java
index 2b75f92a6..510a8d288 100644
--- a/runtime/src/org/aspectj/lang/reflect/InitializerSignature.java
+++ b/runtime/src/org/aspectj/lang/reflect/InitializerSignature.java
@@ -13,5 +13,8 @@
package org.aspectj.lang.reflect;
+import java.lang.reflect.Constructor;
-public interface InitializerSignature extends CodeSignature { }
+public interface InitializerSignature extends CodeSignature {
+ Constructor getInitializer();
+}
diff --git a/runtime/src/org/aspectj/lang/reflect/MemberSignature.java b/runtime/src/org/aspectj/lang/reflect/MemberSignature.java
index fb267e080..1dcae6403 100644
--- a/runtime/src/org/aspectj/lang/reflect/MemberSignature.java
+++ b/runtime/src/org/aspectj/lang/reflect/MemberSignature.java
@@ -14,10 +14,9 @@
package org.aspectj.lang.reflect;
-import java.lang.reflect.AccessibleObject;
-
import org.aspectj.lang.Signature;
public interface MemberSignature extends Signature {
- AccessibleObject getAccessibleObject();
+ // AccessibleObject is a 1.2 API, we run on 1.1... (thanks Wes for catching this)
+ //AccessibleObject getAccessibleObject();
}
diff --git a/runtime/src/org/aspectj/lang/reflect/MethodSignature.java b/runtime/src/org/aspectj/lang/reflect/MethodSignature.java
index f26d6c504..ab6b0d4f5 100644
--- a/runtime/src/org/aspectj/lang/reflect/MethodSignature.java
+++ b/runtime/src/org/aspectj/lang/reflect/MethodSignature.java
@@ -13,7 +13,9 @@
package org.aspectj.lang.reflect;
+import java.lang.reflect.Method;
public interface MethodSignature extends CodeSignature {
Class getReturnType(); /* name is consistent with reflection API */
+ Method getMethod();
}
diff --git a/runtime/src/org/aspectj/runtime/reflect/AdviceSignatureImpl.java b/runtime/src/org/aspectj/runtime/reflect/AdviceSignatureImpl.java
index 74bf6e0e4..e814a5add 100644
--- a/runtime/src/org/aspectj/runtime/reflect/AdviceSignatureImpl.java
+++ b/runtime/src/org/aspectj/runtime/reflect/AdviceSignatureImpl.java
@@ -14,12 +14,13 @@
package org.aspectj.runtime.reflect;
-import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Method;
import org.aspectj.lang.reflect.AdviceSignature;
class AdviceSignatureImpl extends CodeSignatureImpl implements AdviceSignature {
Class returnType;
+ private Method adviceMethod = null;
AdviceSignatureImpl(int modifiers, String name, Class declaringType,
Class[] parameterTypes, String[] parameterNames, Class[] exceptionTypes,
@@ -58,12 +59,14 @@ class AdviceSignatureImpl extends CodeSignatureImpl implements AdviceSignature {
/* (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
+ public Method getAdvice() {
+ if (adviceMethod == null) {
+ try {
+ adviceMethod = declaringType.getDeclaredMethod(getName(),getParameterTypes());
+ } catch (Exception ex) {
+ ; // nothing we can do, caller will see null
+ }
}
- return null;
+ return adviceMethod;
}
}
diff --git a/runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java b/runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java
index 12ac6ba8e..b607df629 100644
--- a/runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java
+++ b/runtime/src/org/aspectj/runtime/reflect/ConstructorSignatureImpl.java
@@ -14,11 +14,13 @@
package org.aspectj.runtime.reflect;
-import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Constructor;
import org.aspectj.lang.reflect.ConstructorSignature;
class ConstructorSignatureImpl extends CodeSignatureImpl implements ConstructorSignature {
+ private Constructor constructor;
+
ConstructorSignatureImpl(int modifiers, Class declaringType,
Class[] parameterTypes, String[] parameterNames, Class[] exceptionTypes)
{
@@ -43,12 +45,14 @@ class ConstructorSignatureImpl extends CodeSignatureImpl implements ConstructorS
/* (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
+ public Constructor getConstructor() {
+ if (constructor == null) {
+ try {
+ constructor = declaringType.getDeclaredConstructor(getParameterTypes());
+ } catch (Exception ex) {
+ ; // nothing we can do, caller will see null
+ }
}
- return null;
+ return constructor;
}
}
diff --git a/runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java b/runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java
index 3c14e4050..ff1e6e452 100644
--- a/runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java
+++ b/runtime/src/org/aspectj/runtime/reflect/FieldSignatureImpl.java
@@ -14,12 +14,13 @@
package org.aspectj.runtime.reflect;
-import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Field;
import org.aspectj.lang.reflect.FieldSignature;
public class FieldSignatureImpl extends MemberSignatureImpl implements FieldSignature {
Class fieldType;
+ private Field field;
FieldSignatureImpl(int modifiers, String name, Class declaringType,
Class fieldType)
@@ -51,12 +52,14 @@ public class FieldSignatureImpl extends MemberSignatureImpl implements FieldSign
/* (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
+ public Field getField() {
+ if (field == null) {
+ try {
+ field = declaringType.getDeclaredField(getName());
+ } catch (Exception ex) {
+ ; // nothing we can do, caller will see null
+ }
}
- return null;
+ return field;
}
}
diff --git a/runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java b/runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java
index 7b5e41683..dcf1a3131 100644
--- a/runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java
+++ b/runtime/src/org/aspectj/runtime/reflect/InitializerSignatureImpl.java
@@ -16,10 +16,12 @@ package org.aspectj.runtime.reflect;
import org.aspectj.lang.reflect.InitializerSignature;
-import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
class InitializerSignatureImpl extends CodeSignatureImpl implements InitializerSignature {
+ private Constructor constructor;
+
InitializerSignatureImpl(int modifiers, Class declaringType) {
super(modifiers, Modifier.isStatic(modifiers) ? "<clinit>" : "<init>", declaringType, EMPTY_CLASS_ARRAY,
EMPTY_STRING_ARRAY, EMPTY_CLASS_ARRAY);
@@ -45,12 +47,14 @@ class InitializerSignatureImpl extends CodeSignatureImpl implements InitializerS
/* (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
+ public Constructor getInitializer() {
+ if (constructor == null) {
+ try {
+ constructor = declaringType.getDeclaredConstructor(getParameterTypes());
+ } catch (Exception ex) {
+ ; // nothing we can do, caller will see null
+ }
}
- return null;
+ return constructor;
}
}
diff --git a/runtime/src/org/aspectj/runtime/reflect/MemberSignatureImpl.java b/runtime/src/org/aspectj/runtime/reflect/MemberSignatureImpl.java
index 09ebba7ff..c49c016e1 100644
--- a/runtime/src/org/aspectj/runtime/reflect/MemberSignatureImpl.java
+++ b/runtime/src/org/aspectj/runtime/reflect/MemberSignatureImpl.java
@@ -14,12 +14,9 @@
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);
@@ -29,15 +26,4 @@ abstract class MemberSignatureImpl extends SignatureImpl implements MemberSignat
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();
}
diff --git a/runtime/src/org/aspectj/runtime/reflect/MethodSignatureImpl.java b/runtime/src/org/aspectj/runtime/reflect/MethodSignatureImpl.java
index 51ba06237..3331df08d 100644
--- a/runtime/src/org/aspectj/runtime/reflect/MethodSignatureImpl.java
+++ b/runtime/src/org/aspectj/runtime/reflect/MethodSignatureImpl.java
@@ -14,11 +14,12 @@
package org.aspectj.runtime.reflect;
-import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Method;
import org.aspectj.lang.reflect.MethodSignature;
class MethodSignatureImpl extends CodeSignatureImpl implements MethodSignature {
+ private Method method;
Class returnType;
MethodSignatureImpl(int modifiers, String name, Class declaringType,
@@ -56,12 +57,14 @@ class MethodSignatureImpl extends CodeSignatureImpl implements MethodSignature {
/* (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
+ public Method getMethod() {
+ if (method == null) {
+ try {
+ method = declaringType.getDeclaredMethod(getName(),getParameterTypes());
+ } catch (NoSuchMethodException nsmEx) {
+ ; // nothing we can do, user will see null return
+ }
}
- return null;
+ return method;
}
}