aboutsummaryrefslogtreecommitdiffstats
path: root/weaver5/java5-src/org
diff options
context:
space:
mode:
authorAndy Clement <aclement@pivotal.io>2019-02-08 15:02:11 -0800
committerAndy Clement <aclement@pivotal.io>2019-02-08 15:02:11 -0800
commit635f0ed47ffe11e93d96e4d24e4411eedfa1ddc9 (patch)
tree2fa95e5cf13bdefa559ce341761f90de747421e9 /weaver5/java5-src/org
parent66f6e011d251d84250c562950f491cab31af0ad3 (diff)
downloadaspectj-635f0ed47ffe11e93d96e4d24e4411eedfa1ddc9.tar.gz
aspectj-635f0ed47ffe11e93d96e4d24e4411eedfa1ddc9.zip
tidyup retired modules and add aspectjtools submodule
Diffstat (limited to 'weaver5/java5-src/org')
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/reflect/ArgNameFinder.java26
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/reflect/DeferredResolvedPointcutDefinition.java35
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/reflect/InternalUseOnlyPointcutParser.java43
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java386
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/reflect/Java15GenericSignatureInformationProvider.java103
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/reflect/Java15ReflectionBasedReferenceTypeDelegate.java389
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java134
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/tools/Jdk14Trace.java127
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/tools/Jdk14TraceFactory.java20
9 files changed, 0 insertions, 1263 deletions
diff --git a/weaver5/java5-src/org/aspectj/weaver/reflect/ArgNameFinder.java b/weaver5/java5-src/org/aspectj/weaver/reflect/ArgNameFinder.java
deleted file mode 100644
index 25945a90a..000000000
--- a/weaver5/java5-src/org/aspectj/weaver/reflect/ArgNameFinder.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/* *******************************************************************
- * Copyright (c) 2005-2017 Contributors.
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://eclipse.org/legal/epl-v10.html
- * ******************************************************************/
-package org.aspectj.weaver.reflect;
-
-import java.lang.reflect.Member;
-
-/**
- * @author Adrian Colyer
- * @author Andy Clement
- */
-public interface ArgNameFinder {
-
- /**
- * Attempt to discover the parameter names for a reflectively obtained member.
- * @param forMember the member for which parameter names are being looked up
- * @return parameter names or null if names can't be determined
- */
- String[] getParameterNames(Member forMember);
-
-}
diff --git a/weaver5/java5-src/org/aspectj/weaver/reflect/DeferredResolvedPointcutDefinition.java b/weaver5/java5-src/org/aspectj/weaver/reflect/DeferredResolvedPointcutDefinition.java
deleted file mode 100644
index b0af93f16..000000000
--- a/weaver5/java5-src/org/aspectj/weaver/reflect/DeferredResolvedPointcutDefinition.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/* *******************************************************************
- * Copyright (c) 2006 Contributors.
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Adrian Colyer Initial implementation
- * ******************************************************************/
-
-package org.aspectj.weaver.reflect;
-
-import org.aspectj.weaver.ResolvedPointcutDefinition;
-import org.aspectj.weaver.UnresolvedType;
-
-/**
- * When a Java15ReflectionBasedDelegate gets the pointcuts for a given class it tries to resolve them before returning. This can
- * cause problems if the resolution of one pointcut in the type depends on another pointcut in the same type. Therefore the
- * algorithm proceeds in two phases, first we create and store instances of this class in the pointcuts array, and once that is
- * done, we come back round and resolve the actual pointcut expression. This means that if we recurse doing resolution, we will find
- * the named pointcut we are looking for!
- *
- * @author adrian colyer
- *
- */
-public class DeferredResolvedPointcutDefinition extends ResolvedPointcutDefinition {
-
- public DeferredResolvedPointcutDefinition(UnresolvedType declaringType, int modifiers, String name,
- UnresolvedType[] parameterTypes) {
- super(declaringType, modifiers, name, parameterTypes, UnresolvedType.VOID, null);
- }
-
-}
diff --git a/weaver5/java5-src/org/aspectj/weaver/reflect/InternalUseOnlyPointcutParser.java b/weaver5/java5-src/org/aspectj/weaver/reflect/InternalUseOnlyPointcutParser.java
deleted file mode 100644
index 8d81d7b08..000000000
--- a/weaver5/java5-src/org/aspectj/weaver/reflect/InternalUseOnlyPointcutParser.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/* *******************************************************************
- * Copyright (c) 2006 Contributors.
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Adrian Colyer Initial implementation
- * ******************************************************************/
-
-package org.aspectj.weaver.reflect;
-
-import org.aspectj.weaver.patterns.Pointcut;
-import org.aspectj.weaver.tools.PointcutParameter;
-import org.aspectj.weaver.tools.PointcutParser;
-
-public class InternalUseOnlyPointcutParser extends PointcutParser {
-
- public InternalUseOnlyPointcutParser(ClassLoader classLoader, ReflectionWorld world) {
- super();
- setClassLoader(classLoader);
- setWorld(world);
- }
-
- public InternalUseOnlyPointcutParser(ClassLoader classLoader) {
- super();
- setClassLoader(classLoader);
- }
-
- public Pointcut resolvePointcutExpression(
- String expression,
- Class inScope,
- PointcutParameter[] formalParameters) {
- return super.resolvePointcutExpression(expression, inScope, formalParameters);
- }
-
- public Pointcut concretizePointcutExpression(Pointcut pc, Class inScope, PointcutParameter[] formalParameters) {
- return super.concretizePointcutExpression(pc, inScope, formalParameters);
- }
-
-}
diff --git a/weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java b/weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java
deleted file mode 100644
index 016becf87..000000000
--- a/weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/* *******************************************************************
- * Copyright (c) 2005, 2017 Contributors.
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://eclipse.org/legal/epl-v10.html
- * ******************************************************************/
-package org.aspectj.weaver.reflect;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-
-import org.aspectj.apache.bcel.classfile.AnnotationDefault;
-import org.aspectj.apache.bcel.classfile.Attribute;
-import org.aspectj.apache.bcel.classfile.JavaClass;
-import org.aspectj.apache.bcel.classfile.LocalVariable;
-import org.aspectj.apache.bcel.classfile.LocalVariableTable;
-import org.aspectj.apache.bcel.util.ClassLoaderRepository;
-import org.aspectj.apache.bcel.util.NonCachingClassLoaderRepository;
-import org.aspectj.apache.bcel.util.Repository;
-import org.aspectj.weaver.AnnotationAJ;
-import org.aspectj.weaver.ResolvedType;
-import org.aspectj.weaver.UnresolvedType;
-import org.aspectj.weaver.World;
-import org.aspectj.weaver.bcel.BcelAnnotation;
-import org.aspectj.weaver.bcel.BcelWeakClassLoaderReference;
-
-/**
- *
- * @author Adrian Colyer
- * @author Andy Clement
- */
-public class Java15AnnotationFinder implements AnnotationFinder, ArgNameFinder {
-
- public static final ResolvedType[][] NO_PARAMETER_ANNOTATIONS = new ResolvedType[][] {};
-
- private Repository bcelRepository;
- private BcelWeakClassLoaderReference classLoaderRef;
- private World world;
- private static boolean useCachingClassLoaderRepository;
-
- static {
- try {
- useCachingClassLoaderRepository = System.getProperty("Xset:bcelRepositoryCaching","true").equalsIgnoreCase("true");
- } catch (Throwable t) {
- useCachingClassLoaderRepository = false;
- }
- }
-
- // must have no-arg constructor for reflective construction
- public Java15AnnotationFinder() {
- }
-
- public void setClassLoader(ClassLoader aLoader) {
- this.classLoaderRef = new BcelWeakClassLoaderReference(aLoader);
- if (useCachingClassLoaderRepository) {
- this.bcelRepository = new ClassLoaderRepository(classLoaderRef);
- } else {
- this.bcelRepository = new NonCachingClassLoaderRepository(classLoaderRef);
- }
- }
-
- public void setWorld(World aWorld) {
- this.world = aWorld;
- }
-
- public Object getAnnotation(ResolvedType annotationType, Object onObject) {
- try {
- Class<? extends Annotation> annotationClass = (Class<? extends Annotation>) Class.forName(annotationType.getName(),
- false, getClassLoader());
- if (onObject.getClass().isAnnotationPresent(annotationClass)) {
- return onObject.getClass().getAnnotation(annotationClass);
- }
- } catch (ClassNotFoundException ex) {
- // just return null
- }
- return null;
- }
-
- public Object getAnnotationFromClass(ResolvedType annotationType, Class aClass) {
- try {
- Class<? extends Annotation> annotationClass = (Class<? extends Annotation>) Class.forName(annotationType.getName(),
- false, getClassLoader());
- if (aClass.isAnnotationPresent(annotationClass)) {
- return aClass.getAnnotation(annotationClass);
- }
- } catch (ClassNotFoundException ex) {
- // just return null
- }
- return null;
- }
-
- public Object getAnnotationFromMember(ResolvedType annotationType, Member aMember) {
- if (!(aMember instanceof AccessibleObject))
- return null;
- AccessibleObject ao = (AccessibleObject) aMember;
- try {
- Class annotationClass = Class.forName(annotationType.getName(), false, getClassLoader());
- if (ao.isAnnotationPresent(annotationClass)) {
- return ao.getAnnotation(annotationClass);
- }
- } catch (ClassNotFoundException ex) {
- // just return null
- }
- return null;
- }
-
- private ClassLoader getClassLoader() {
- return classLoaderRef.getClassLoader();
- }
-
- public AnnotationAJ getAnnotationOfType(UnresolvedType ofType, Member onMember) {
- if (!(onMember instanceof AccessibleObject))
- return null;
- // here we really want both the runtime visible AND the class visible
- // annotations
- // so we bail out to Bcel and then chuck away the JavaClass so that we
- // don't hog
- // memory.
- try {
- JavaClass jc = bcelRepository.loadClass(onMember.getDeclaringClass());
- org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[] anns = new org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[0];
- if (onMember instanceof Method) {
- org.aspectj.apache.bcel.classfile.Method bcelMethod = jc.getMethod((Method) onMember);
- if (bcelMethod == null) {
- // pr220430
- // System.err.println(
- // "Unexpected problem in Java15AnnotationFinder: cannot retrieve annotations on method '"
- // +
- // onMember.getName()+"' in class '"+jc.getClassName()+"'");
- } else {
- anns = bcelMethod.getAnnotations();
- }
- } else if (onMember instanceof Constructor) {
- org.aspectj.apache.bcel.classfile.Method bcelCons = jc.getMethod((Constructor) onMember);
- anns = bcelCons.getAnnotations();
- } else if (onMember instanceof Field) {
- org.aspectj.apache.bcel.classfile.Field bcelField = jc.getField((Field) onMember);
- anns = bcelField.getAnnotations();
- }
- // the answer is cached and we don't want to hold on to memory
- bcelRepository.clear();
- // OPTIMIZE make constant 0 size array for sharing
- if (anns == null)
- anns = new org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[0];
- // convert to our Annotation type
- for (int i = 0; i < anns.length; i++) {
- if (anns[i].getTypeSignature().equals(ofType.getSignature())) {
- return new BcelAnnotation(anns[i], world);
- }
- }
- return null;
- } catch (ClassNotFoundException cnfEx) {
- // just use reflection then
- }
- return null;
- }
-
- public String getAnnotationDefaultValue(Member onMember) {
- try {
- JavaClass jc = bcelRepository.loadClass(onMember.getDeclaringClass());
- if (onMember instanceof Method) {
- org.aspectj.apache.bcel.classfile.Method bcelMethod = jc.getMethod((Method) onMember);
-
- if (bcelMethod == null) {
- // pr220430
- // System.err.println(
- // "Unexpected problem in Java15AnnotationFinder: cannot retrieve annotations on method '"
- // +
- // onMember.getName()+"' in class '"+jc.getClassName()+"'");
- } else {
- Attribute[] attrs = bcelMethod.getAttributes();
- for (int i = 0; i < attrs.length; i++) {
- Attribute attribute = attrs[i];
- if (attribute.getName().equals("AnnotationDefault")) {
- AnnotationDefault def = (AnnotationDefault) attribute;
- return def.getElementValue().stringifyValue();
- }
- }
- return null;
- }
- }
- } catch (ClassNotFoundException cnfEx) {
- // just use reflection then
- }
- return null;
- }
-
- public ResolvedType[] getAnnotations(Member onMember, boolean areRuntimeAnnotationsSufficient) {
- if (!(onMember instanceof AccessibleObject)) {
- return ResolvedType.NONE;
- }
- // If annotations with class level retention are required then we need to open
- // open the class file. If only runtime retention annotations are required
- // we can just use reflection.
- if (!areRuntimeAnnotationsSufficient) {
- try {
- JavaClass jc = bcelRepository.loadClass(onMember.getDeclaringClass());
- org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[] anns = null;
- if (onMember instanceof Method) {
- org.aspectj.apache.bcel.classfile.Method bcelMethod = jc.getMethod((Method) onMember);
- if (bcelMethod != null) {
- anns = bcelMethod.getAnnotations();
- }
- } else if (onMember instanceof Constructor) {
- org.aspectj.apache.bcel.classfile.Method bcelCons = jc.getMethod((Constructor) onMember);
- anns = bcelCons.getAnnotations();
- } else if (onMember instanceof Field) {
- org.aspectj.apache.bcel.classfile.Field bcelField = jc.getField((Field) onMember);
- anns = bcelField.getAnnotations();
- }
- // the answer is cached and we don't want to hold on to memory
- bcelRepository.clear();
- if (anns == null || anns.length == 0) {
- return ResolvedType.NONE;
- }
- ResolvedType[] annotationTypes = new ResolvedType[anns.length];
- for (int i = 0; i < anns.length; i++) {
- annotationTypes[i] = world.resolve(UnresolvedType.forSignature(anns[i].getTypeSignature()));
- }
- return annotationTypes;
- } catch (ClassNotFoundException cnfEx) {
- // just use reflection then
- }
- }
-
- AccessibleObject ao = (AccessibleObject) onMember;
- Annotation[] anns = ao.getDeclaredAnnotations();
- if (anns.length == 0) {
- return ResolvedType.NONE;
- }
- ResolvedType[] annotationTypes = new ResolvedType[anns.length];
- for (int i = 0; i < anns.length; i++) {
- annotationTypes[i] = UnresolvedType.forName(anns[i].annotationType().getName()).resolve(world);
- }
- return annotationTypes;
- }
-
- public ResolvedType[] getAnnotations(Class forClass, World inWorld) {
- // here we really want both the runtime visible AND the class visible
- // annotations so we bail out to Bcel and then chuck away the JavaClass so that we
- // don't hog memory.
- try {
- JavaClass jc = bcelRepository.loadClass(forClass);
- org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[] anns = jc.getAnnotations();
- bcelRepository.clear();
- if (anns == null) {
- return ResolvedType.NONE;
- } else {
- ResolvedType[] ret = new ResolvedType[anns.length];
- for (int i = 0; i < ret.length; i++) {
- ret[i] = inWorld.resolve(UnresolvedType.forSignature(anns[i].getTypeSignature()));
- }
- return ret;
- }
- } catch (ClassNotFoundException cnfEx) {
- // just use reflection then
- }
-
- Annotation[] classAnnotations = forClass.getAnnotations();
- ResolvedType[] ret = new ResolvedType[classAnnotations.length];
- for (int i = 0; i < classAnnotations.length; i++) {
- ret[i] = inWorld.resolve(classAnnotations[i].annotationType().getName());
- }
-
- return ret;
- }
-
- public String[] getParameterNames(Member forMember) {
- if (!(forMember instanceof AccessibleObject))
- return null;
-
- try {
- JavaClass jc = bcelRepository.loadClass(forMember.getDeclaringClass());
- LocalVariableTable lvt = null;
- int numVars = 0;
- if (forMember instanceof Method) {
- org.aspectj.apache.bcel.classfile.Method bcelMethod = jc.getMethod((Method) forMember);
- lvt = bcelMethod.getLocalVariableTable();
- numVars = bcelMethod.getArgumentTypes().length;
- } else if (forMember instanceof Constructor) {
- org.aspectj.apache.bcel.classfile.Method bcelCons = jc.getMethod((Constructor) forMember);
- lvt = bcelCons.getLocalVariableTable();
- numVars = bcelCons.getArgumentTypes().length;
- }
- return getParameterNamesFromLVT(lvt, numVars);
- } catch (ClassNotFoundException cnfEx) {
- ; // no luck
- }
-
- return null;
- }
-
- private String[] getParameterNamesFromLVT(LocalVariableTable lvt, int numVars) {
- if (lvt == null)
- return null;// pr222987 - prevent NPE
- LocalVariable[] vars = lvt.getLocalVariableTable();
- if (vars.length < numVars) {
- // basic error, we can't get the names...
- return null;
- }
- String[] ret = new String[numVars];
- for (int i = 0; i < numVars; i++) {
- ret[i] = vars[i + 1].getName();
- }
- return ret;
- }
-
- public ResolvedType[][] getParameterAnnotationTypes(Member onMember) {
- if (!(onMember instanceof AccessibleObject))
- return NO_PARAMETER_ANNOTATIONS;
- // here we really want both the runtime visible AND the class visible
- // annotations
- // so we bail out to Bcel and then chuck away the JavaClass so that we
- // don't hog
- // memory.
- try {
- JavaClass jc = bcelRepository.loadClass(onMember.getDeclaringClass());
- org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[][] anns = null;
- if (onMember instanceof Method) {
- org.aspectj.apache.bcel.classfile.Method bcelMethod = jc.getMethod((Method) onMember);
- if (bcelMethod == null) {
- // pr220430
- // System.err.println(
- // "Unexpected problem in Java15AnnotationFinder: cannot retrieve annotations on method '"
- // +
- // onMember.getName()+"' in class '"+jc.getClassName()+"'");
- } else {
- anns = bcelMethod.getParameterAnnotations();
- }
- } else if (onMember instanceof Constructor) {
- org.aspectj.apache.bcel.classfile.Method bcelCons = jc.getMethod((Constructor) onMember);
- anns = bcelCons.getParameterAnnotations();
- } else if (onMember instanceof Field) {
- // anns = null;
- }
- // the answer is cached and we don't want to hold on to memory
- bcelRepository.clear();
- if (anns == null)
- return NO_PARAMETER_ANNOTATIONS;
- ResolvedType[][] result = new ResolvedType[anns.length][];
- // CACHING??
- for (int i = 0; i < anns.length; i++) {
- if (anns[i] != null) {
- result[i] = new ResolvedType[anns[i].length];
- for (int j = 0; j < anns[i].length; j++) {
- result[i][j] = world.resolve(UnresolvedType.forSignature(anns[i][j].getTypeSignature()));
- }
- }
- }
- return result;
- } catch (ClassNotFoundException cnfEx) {
- // just use reflection then
- }
-
- // reflection...
- AccessibleObject ao = (AccessibleObject) onMember;
- Annotation[][] anns = null;
- if (onMember instanceof Method) {
- anns = ((Method) ao).getParameterAnnotations();
- } else if (onMember instanceof Constructor) {
- anns = ((Constructor) ao).getParameterAnnotations();
- } else if (onMember instanceof Field) {
- // anns = null;
- }
- if (anns == null)
- return NO_PARAMETER_ANNOTATIONS;
- ResolvedType[][] result = new ResolvedType[anns.length][];
- // CACHING??
- for (int i = 0; i < anns.length; i++) {
- if (anns[i] != null) {
- result[i] = new ResolvedType[anns[i].length];
- for (int j = 0; j < anns[i].length; j++) {
- result[i][j] = UnresolvedType.forName(anns[i][j].annotationType().getName()).resolve(world);
- }
- }
- }
- return result;
- }
-
-}
diff --git a/weaver5/java5-src/org/aspectj/weaver/reflect/Java15GenericSignatureInformationProvider.java b/weaver5/java5-src/org/aspectj/weaver/reflect/Java15GenericSignatureInformationProvider.java
deleted file mode 100644
index c9de9517e..000000000
--- a/weaver5/java5-src/org/aspectj/weaver/reflect/Java15GenericSignatureInformationProvider.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/* *******************************************************************
- * Copyright (c) 2005 Contributors.
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Adrian Colyer Initial implementation
- * ******************************************************************/
-package org.aspectj.weaver.reflect;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-
-import org.aspectj.weaver.UnresolvedType;
-import org.aspectj.weaver.World;
-
-/**
- * Uses Java 1.5 reflection APIs to determine generic signatures
- */
-public class Java15GenericSignatureInformationProvider implements
- GenericSignatureInformationProvider {
-
- private final World world;
-
- public Java15GenericSignatureInformationProvider(World forWorld) {
- this.world = forWorld;
- }
-
- /* (non-Javadoc)
- * @see org.aspectj.weaver.reflect.GenericSignatureInformationProvider#getGenericParameterTypes(org.aspectj.weaver.reflect.ReflectionBasedResolvedMemberImpl)
- */
- public UnresolvedType[] getGenericParameterTypes(
- ReflectionBasedResolvedMemberImpl resolvedMember) {
- JavaLangTypeToResolvedTypeConverter typeConverter = new JavaLangTypeToResolvedTypeConverter(world);
- Type[] pTypes = new Type[0];
- Member member = resolvedMember.getMember();
- if (member instanceof Method) {
- pTypes = ((Method)member).getGenericParameterTypes();
- } else if (member instanceof Constructor) {
- pTypes = ((Constructor)member).getGenericParameterTypes();
- }
- return typeConverter.fromTypes(pTypes);
- }
-
- /* (non-Javadoc)
- * @see org.aspectj.weaver.reflect.GenericSignatureInformationProvider#getGenericReturnType(org.aspectj.weaver.reflect.ReflectionBasedResolvedMemberImpl)
- */
- public UnresolvedType getGenericReturnType(
- ReflectionBasedResolvedMemberImpl resolvedMember) {
- JavaLangTypeToResolvedTypeConverter typeConverter = new JavaLangTypeToResolvedTypeConverter(world);
- Member member = resolvedMember.getMember();
- if (member instanceof Field) {
- return typeConverter.fromType(((Field)member).getGenericType());
- } else if (member instanceof Method) {
- return typeConverter.fromType(((Method)member).getGenericReturnType());
- } else if (member instanceof Constructor) {
- return typeConverter.fromType(((Constructor)member).getDeclaringClass());
- } else {
- throw new IllegalStateException("unexpected member type: " + member);
- }
- }
-
- /* (non-Javadoc)
- * @see org.aspectj.weaver.reflect.GenericSignatureInformationProvider#isBridge()
- */
- public boolean isBridge(ReflectionBasedResolvedMemberImpl resolvedMember) {
- Member member = resolvedMember.getMember();
- if (member instanceof Method) {
- return ((Method)member).isBridge();
- } else {
- return false;
- }
- }
-
- /* (non-Javadoc)
- * @see org.aspectj.weaver.reflect.GenericSignatureInformationProvider#isVarArgs()
- */
- public boolean isVarArgs(ReflectionBasedResolvedMemberImpl resolvedMember) {
- Member member = resolvedMember.getMember();
- if (member instanceof Method) {
- return ((Method)member).isVarArgs();
- } else if (member instanceof Constructor) {
- return ((Constructor)member).isVarArgs();
- } else {
- return false;
- }
- }
-
- /* (non-Javadoc)
- * @see org.aspectj.weaver.reflect.GenericSignatureInformationProvider#isSynthetic()
- */
- public boolean isSynthetic(ReflectionBasedResolvedMemberImpl resolvedMember) {
- Member member = resolvedMember.getMember();
- return member.isSynthetic();
- }
-
-}
diff --git a/weaver5/java5-src/org/aspectj/weaver/reflect/Java15ReflectionBasedReferenceTypeDelegate.java b/weaver5/java5-src/org/aspectj/weaver/reflect/Java15ReflectionBasedReferenceTypeDelegate.java
deleted file mode 100644
index 6b65ed31e..000000000
--- a/weaver5/java5-src/org/aspectj/weaver/reflect/Java15ReflectionBasedReferenceTypeDelegate.java
+++ /dev/null
@@ -1,389 +0,0 @@
-/* *******************************************************************
- * Copyright (c) 2005 Contributors.
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Adrian Colyer Initial implementation
- * ******************************************************************/
-package org.aspectj.weaver.reflect;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.reflect.AjType;
-import org.aspectj.lang.reflect.AjTypeSystem;
-import org.aspectj.lang.reflect.Pointcut;
-import org.aspectj.weaver.AnnotationAJ;
-import org.aspectj.weaver.ReferenceType;
-import org.aspectj.weaver.ResolvedMember;
-import org.aspectj.weaver.ResolvedPointcutDefinition;
-import org.aspectj.weaver.ResolvedType;
-import org.aspectj.weaver.TypeVariable;
-import org.aspectj.weaver.TypeVariableReferenceType;
-import org.aspectj.weaver.UnresolvedType;
-import org.aspectj.weaver.World;
-import org.aspectj.weaver.tools.PointcutDesignatorHandler;
-import org.aspectj.weaver.tools.PointcutParameter;
-
-/**
- * Provides Java 5 behaviour in reflection based delegates (overriding 1.4 behaviour from superclass where
- * appropriate)
- *
- * @author Adrian Colyer
- * @author Andy Clement
- */
-public class Java15ReflectionBasedReferenceTypeDelegate extends ReflectionBasedReferenceTypeDelegate {
-
- private AjType<?> myType;
- private ResolvedType[] annotations;
- private ResolvedMember[] pointcuts;
- private ResolvedMember[] methods;
- private ResolvedMember[] fields;
- private TypeVariable[] typeVariables;
- private ResolvedType superclass;
- private ResolvedType[] superInterfaces;
- private String genericSignature = null;
- private JavaLangTypeToResolvedTypeConverter typeConverter;
- private Java15AnnotationFinder annotationFinder = null;
- private ArgNameFinder argNameFinder = null;
-
- public Java15ReflectionBasedReferenceTypeDelegate() {
- }
-
- @Override
- public void initialize(ReferenceType aType, Class aClass, ClassLoader classLoader, World aWorld) {
- super.initialize(aType, aClass, classLoader, aWorld);
- myType = AjTypeSystem.getAjType(aClass);
- annotationFinder = new Java15AnnotationFinder();
- argNameFinder = annotationFinder;
- annotationFinder.setClassLoader(this.classLoaderReference.getClassLoader());
- annotationFinder.setWorld(aWorld);
- this.typeConverter = new JavaLangTypeToResolvedTypeConverter(aWorld);
- }
-
- @Override
- public ReferenceType buildGenericType() {
- return (ReferenceType) UnresolvedType.forGenericTypeVariables(getResolvedTypeX().getSignature(), getTypeVariables())
- .resolve(getWorld());
- }
-
- @Override
- public AnnotationAJ[] getAnnotations() {
- // AMC - we seem not to need to implement this method...
- // throw new UnsupportedOperationException(
- // "getAnnotations on Java15ReflectionBasedReferenceTypeDelegate is not implemented yet"
- // );
- // FIXME is this the right implementation in the reflective case?
- return super.getAnnotations();
- }
-
- @Override
- public ResolvedType[] getAnnotationTypes() {
- if (annotations == null) {
- annotations = annotationFinder.getAnnotations(getBaseClass(), getWorld());
- }
- return annotations;
- }
-
- @Override
- public boolean hasAnnotations() {
- if (annotations == null) {
- annotations = annotationFinder.getAnnotations(getBaseClass(), getWorld());
- }
- return annotations.length != 0;
- }
-
- @Override
- public boolean hasAnnotation(UnresolvedType ofType) {
- ResolvedType[] myAnns = getAnnotationTypes();
- ResolvedType toLookFor = ofType.resolve(getWorld());
- for (int i = 0; i < myAnns.length; i++) {
- if (myAnns[i] == toLookFor) {
- return true;
- }
- }
- return false;
- }
-
- // use the MAP to ensure that any aj-synthetic fields are filtered out
- @Override
- public ResolvedMember[] getDeclaredFields() {
- if (fields == null) {
- Field[] reflectFields = this.myType.getDeclaredFields();
- ResolvedMember[] rFields = new ResolvedMember[reflectFields.length];
- for (int i = 0; i < reflectFields.length; i++) {
- rFields[i] = createGenericFieldMember(reflectFields[i]);
- }
- this.fields = rFields;
- }
- return fields;
- }
-
- @Override
- public String getDeclaredGenericSignature() {
- if (this.genericSignature == null && isGeneric()) {
- // BUG? what the hell is this doing - see testcode in MemberTestCase15.testMemberSignatureCreation() and run it
- // off a Reflection World
- }
- return genericSignature;
- }
-
- @Override
- public ResolvedType[] getDeclaredInterfaces() {
- if (superInterfaces == null) {
- Type[] genericInterfaces = getBaseClass().getGenericInterfaces();
- this.superInterfaces = typeConverter.fromTypes(genericInterfaces);
- }
- return superInterfaces;
- }
-
- @Override
- public ResolvedType getSuperclass() {
- // Superclass of object is null
- if (superclass == null && getBaseClass() != Object.class) {
- Type t = this.getBaseClass().getGenericSuperclass();
- if (t != null) {
- superclass = typeConverter.fromType(t);
- }
- if (t == null) {
- // If the superclass is null, return Object - same as bcel does
- superclass = getWorld().resolve(UnresolvedType.OBJECT);
- }
- }
- return superclass;
- }
-
- @Override
- public TypeVariable[] getTypeVariables() {
- TypeVariable[] workInProgressSetOfVariables = getResolvedTypeX().getWorld().getTypeVariablesCurrentlyBeingProcessed(
- getBaseClass());
- if (workInProgressSetOfVariables != null) {
- return workInProgressSetOfVariables;
- }
- if (this.typeVariables == null) {
- java.lang.reflect.TypeVariable[] tVars = this.getBaseClass().getTypeParameters();
- TypeVariable[] rTypeVariables = new TypeVariable[tVars.length];
- // basic initialization
- for (int i = 0; i < tVars.length; i++) {
- rTypeVariables[i] = new TypeVariable(tVars[i].getName());
- }
- // stash it
- this.getResolvedTypeX().getWorld().recordTypeVariablesCurrentlyBeingProcessed(getBaseClass(), rTypeVariables);
- // now fill in the details...
- for (int i = 0; i < tVars.length; i++) {
- TypeVariableReferenceType tvrt = ((TypeVariableReferenceType) typeConverter.fromType(tVars[i]));
- TypeVariable tv = tvrt.getTypeVariable();
- rTypeVariables[i].setSuperclass(tv.getSuperclass());
- rTypeVariables[i].setAdditionalInterfaceBounds(tv.getSuperInterfaces());
- rTypeVariables[i].setDeclaringElement(tv.getDeclaringElement());
- rTypeVariables[i].setDeclaringElementKind(tv.getDeclaringElementKind());
- rTypeVariables[i].setRank(tv.getRank());
- }
- this.typeVariables = rTypeVariables;
- this.getResolvedTypeX().getWorld().forgetTypeVariablesCurrentlyBeingProcessed(getBaseClass());
- }
- return this.typeVariables;
- }
-
- // overrides super method since by using the MAP we can filter out advice
- // methods that really shouldn't be seen in this list
- @Override
- public ResolvedMember[] getDeclaredMethods() {
- if (methods == null) {
- Method[] reflectMethods = this.myType.getDeclaredMethods();
- Constructor[] reflectCons = this.myType.getDeclaredConstructors();
- ResolvedMember[] rMethods = new ResolvedMember[reflectMethods.length + reflectCons.length];
- for (int i = 0; i < reflectMethods.length; i++) {
- rMethods[i] = createGenericMethodMember(reflectMethods[i]);
- }
- for (int i = 0; i < reflectCons.length; i++) {
- rMethods[i + reflectMethods.length] = createGenericConstructorMember(reflectCons[i]);
- }
- this.methods = rMethods;
- }
- return methods;
- }
-
- /**
- * Returns the generic type, regardless of the resolvedType we 'know about'
- */
- public ResolvedType getGenericResolvedType() {
- ResolvedType rt = getResolvedTypeX();
- if (rt.isParameterizedType() || rt.isRawType()) {
- return rt.getGenericType();
- }
- return rt;
- }
-
- private ResolvedMember createGenericMethodMember(Method forMethod) {
- ReflectionBasedResolvedMemberImpl ret = new ReflectionBasedResolvedMemberImpl(org.aspectj.weaver.Member.METHOD,
- getGenericResolvedType(), forMethod.getModifiers(), typeConverter.fromType(forMethod.getReturnType()),
- forMethod.getName(), typeConverter.fromTypes(forMethod.getParameterTypes()), typeConverter.fromTypes(forMethod
- .getExceptionTypes()), forMethod);
- ret.setAnnotationFinder(this.annotationFinder);
- ret.setGenericSignatureInformationProvider(new Java15GenericSignatureInformationProvider(this.getWorld()));
- return ret;
- }
-
- private ResolvedMember createGenericConstructorMember(Constructor forConstructor) {
- ReflectionBasedResolvedMemberImpl ret = new ReflectionBasedResolvedMemberImpl(org.aspectj.weaver.Member.METHOD,
- getGenericResolvedType(), forConstructor.getModifiers(),
- // to return what BCEL returns the return type is void
- UnresolvedType.VOID,// getGenericResolvedType(),
- "<init>", typeConverter.fromTypes(forConstructor.getParameterTypes()), typeConverter.fromTypes(forConstructor
- .getExceptionTypes()), forConstructor);
- ret.setAnnotationFinder(this.annotationFinder);
- ret.setGenericSignatureInformationProvider(new Java15GenericSignatureInformationProvider(this.getWorld()));
- return ret;
- }
-
- private ResolvedMember createGenericFieldMember(Field forField) {
- ReflectionBasedResolvedMemberImpl ret = new ReflectionBasedResolvedMemberImpl(org.aspectj.weaver.Member.FIELD,
- getGenericResolvedType(), forField.getModifiers(), typeConverter.fromType(forField.getType()), forField.getName(),
- new UnresolvedType[0], forField);
- ret.setAnnotationFinder(this.annotationFinder);
- ret.setGenericSignatureInformationProvider(new Java15GenericSignatureInformationProvider(this.getWorld()));
- return ret;
- }
-
- @Override
- public ResolvedMember[] getDeclaredPointcuts() {
- if (pointcuts == null) {
- Pointcut[] pcs = this.myType.getDeclaredPointcuts();
- pointcuts = new ResolvedMember[pcs.length];
- InternalUseOnlyPointcutParser parser = null;
- World world = getWorld();
- if (world instanceof ReflectionWorld) {
- parser = new InternalUseOnlyPointcutParser(classLoaderReference.getClassLoader(), (ReflectionWorld) getWorld());
- } else {
- parser = new InternalUseOnlyPointcutParser(classLoaderReference.getClassLoader());
- }
- Set additionalPointcutHandlers = world.getRegisteredPointcutHandlers();
- for (Iterator handlerIterator = additionalPointcutHandlers.iterator(); handlerIterator.hasNext();) {
- PointcutDesignatorHandler handler = (PointcutDesignatorHandler) handlerIterator.next();
- parser.registerPointcutDesignatorHandler(handler);
- }
-
- // phase 1, create legitimate entries in pointcuts[] before we
- // attempt to resolve *any* of the pointcuts
- // resolution can sometimes cause us to recurse, and this two stage
- // process allows us to cope with that
- for (int i = 0; i < pcs.length; i++) {
- AjType<?>[] ptypes = pcs[i].getParameterTypes();
- UnresolvedType[] weaverPTypes = new UnresolvedType[ptypes.length];
- for (int j = 0; j < weaverPTypes.length; j++) {
- weaverPTypes[j] = this.typeConverter.fromType(ptypes[j].getJavaClass());
- }
- pointcuts[i] = new DeferredResolvedPointcutDefinition(getResolvedTypeX(), pcs[i].getModifiers(), pcs[i].getName(),
- weaverPTypes);
- }
- // phase 2, now go back round and resolve in-place all of the
- // pointcuts
- PointcutParameter[][] parameters = new PointcutParameter[pcs.length][];
- for (int i = 0; i < pcs.length; i++) {
- AjType<?>[] ptypes = pcs[i].getParameterTypes();
- String[] pnames = pcs[i].getParameterNames();
- if (pnames.length != ptypes.length) {
- pnames = tryToDiscoverParameterNames(pcs[i]);
- if (pnames == null || (pnames.length != ptypes.length)) {
- throw new IllegalStateException("Required parameter names not available when parsing pointcut "
- + pcs[i].getName() + " in type " + getResolvedTypeX().getName());
- }
- }
- parameters[i] = new PointcutParameter[ptypes.length];
- for (int j = 0; j < parameters[i].length; j++) {
- parameters[i][j] = parser.createPointcutParameter(pnames[j], ptypes[j].getJavaClass());
- }
- String pcExpr = pcs[i].getPointcutExpression().toString();
- org.aspectj.weaver.patterns.Pointcut pc = parser.resolvePointcutExpression(pcExpr, getBaseClass(), parameters[i]);
- ((ResolvedPointcutDefinition) pointcuts[i]).setParameterNames(pnames);
- ((ResolvedPointcutDefinition) pointcuts[i]).setPointcut(pc);
- }
- // phase 3, now concretize them all
- for (int i = 0; i < pointcuts.length; i++) {
- ResolvedPointcutDefinition rpd = (ResolvedPointcutDefinition) pointcuts[i];
- rpd.setPointcut(parser.concretizePointcutExpression(rpd.getPointcut(), getBaseClass(), parameters[i]));
- }
- }
- return pointcuts;
- }
-
- // for @AspectJ pointcuts compiled by javac only...
- private String[] tryToDiscoverParameterNames(Pointcut pcut) {
- Method[] ms = pcut.getDeclaringType().getJavaClass().getDeclaredMethods();
- for (Method m : ms) {
- if (m.getName().equals(pcut.getName())) {
- return argNameFinder.getParameterNames(m);
- }
- }
- return null;
- }
-
- @Override
- public boolean isAnnotation() {
- return getBaseClass().isAnnotation();
- }
-
- @Override
- public boolean isAnnotationStyleAspect() {
- return getBaseClass().isAnnotationPresent(Aspect.class);
- }
-
- @Override
- public boolean isAnnotationWithRuntimeRetention() {
- if (!isAnnotation()) {
- return false;
- }
- if (getBaseClass().isAnnotationPresent(Retention.class)) {
- Retention retention = (Retention) getBaseClass().getAnnotation(Retention.class);
- RetentionPolicy policy = retention.value();
- return policy == RetentionPolicy.RUNTIME;
- } else {
- return false;
- }
- }
-
- @Override
- public boolean isAspect() {
- return this.myType.isAspect();
- }
-
- @Override
- public boolean isEnum() {
- return getBaseClass().isEnum();
- }
-
- @Override
- public boolean isGeneric() {
- // return false; // for now
- return getBaseClass().getTypeParameters().length > 0;
- }
-
- @Override
- public boolean isAnonymous() {
- return this.myClass.isAnonymousClass();
- }
-
- @Override
- public boolean isNested() {
- return this.myClass.isMemberClass();
- }
-
- @Override
- public ResolvedType getOuterClass() {
- return ReflectionBasedReferenceTypeDelegateFactory.resolveTypeInWorld(
- myClass.getEnclosingClass(),world);
- }
-
-}
diff --git a/weaver5/java5-src/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java b/weaver5/java5-src/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java
deleted file mode 100644
index 30983e38f..000000000
--- a/weaver5/java5-src/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/* *******************************************************************
- * Copyright (c) 2005 Contributors.
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://eclipse.org/legal/epl-v10.html
- * ******************************************************************/
-package org.aspectj.weaver.reflect;
-
-import java.lang.reflect.GenericArrayType;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.WildcardType;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.aspectj.weaver.BoundedReferenceType;
-import org.aspectj.weaver.ReferenceType;
-import org.aspectj.weaver.ResolvedType;
-import org.aspectj.weaver.TypeFactory;
-import org.aspectj.weaver.TypeVariable;
-import org.aspectj.weaver.TypeVariableReferenceType;
-import org.aspectj.weaver.UnresolvedType;
-import org.aspectj.weaver.World;
-
-/**
- * Handles the translation of java.lang.reflect.Type objects into AspectJ UnresolvedTypes.
- *
- * @author Adrian Colyer
- */
-public class JavaLangTypeToResolvedTypeConverter {
-
- // Used to prevent recursion - we record what we are working on and return it if asked again *whilst* working on it
- private Map<Type, TypeVariableReferenceType> typeVariablesInProgress = new HashMap<Type, TypeVariableReferenceType>();
- private final World world;
-
- public JavaLangTypeToResolvedTypeConverter(World aWorld) {
- this.world = aWorld;
- }
-
- private World getWorld() {
- return this.world;
- }
-
- public ResolvedType fromType(Type type) {
- if (type instanceof Class) {
- Class clazz = (Class) type;
- String name = clazz.getName();
- /**
- * getName() can return:
- *
- * 1. If this class object represents a reference type that is not an
- * array type then the binary name of the class is returned
- * 2. If this class object represents a primitive type or void, then
- * the name returned is a String equal to the Java language keyword
- * corresponding to the primitive type or void.
- * 3. If this class object represents a class of arrays, then the internal
- * form of the name consists of the name of the element type preceded by
- * one or more '[' characters representing the depth of the array nesting.
- */
- if (clazz.isArray()) {
- UnresolvedType ut = UnresolvedType.forSignature(name.replace('.', '/'));
- return getWorld().resolve(ut);
- } else {
- return getWorld().resolve(name);
- }
- } else if (type instanceof ParameterizedType) {
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=509327
- // TODO should deal with the ownerType if it set, indicating this is possibly an inner type of a parameterized type
- Type ownerType = ((ParameterizedType) type).getOwnerType();
- ParameterizedType parameterizedType = (ParameterizedType) type;
- ResolvedType baseType = fromType(parameterizedType.getRawType());
- Type[] typeArguments = parameterizedType.getActualTypeArguments();
- if (baseType.isSimpleType() && typeArguments.length == 0 && ownerType != null) {
- // 'type' is an inner type of some outer parameterized type
- // For now just return the base type - in future create the parameterized form of the outer
- // and use it with the inner. We return the base type to be compatible with what the
- // code does that accesses the info from the bytecode (unlike this code which accesses it
- // reflectively).
- return baseType;
- }
- ResolvedType[] resolvedTypeArguments = fromTypes(typeArguments);
- return TypeFactory.createParameterizedType(baseType, resolvedTypeArguments, getWorld());
- } else if (type instanceof java.lang.reflect.TypeVariable) {
- TypeVariableReferenceType inprogressVar = typeVariablesInProgress.get(type);
- if (inprogressVar != null) {
- return inprogressVar;
- }
- java.lang.reflect.TypeVariable tv = (java.lang.reflect.TypeVariable) type;
- TypeVariable rt_tv = new TypeVariable(tv.getName());
- TypeVariableReferenceType tvrt = new TypeVariableReferenceType(rt_tv, getWorld());
- typeVariablesInProgress.put(type, tvrt); // record what we are working on, for recursion case
- Type[] bounds = tv.getBounds();
- ResolvedType[] resBounds = fromTypes(bounds);
- ResolvedType upperBound = resBounds[0];
- ResolvedType[] additionalBounds = new ResolvedType[0];
- if (resBounds.length > 1) {
- additionalBounds = new ResolvedType[resBounds.length - 1];
- System.arraycopy(resBounds, 1, additionalBounds, 0, additionalBounds.length);
- }
- rt_tv.setUpperBound(upperBound);
- rt_tv.setAdditionalInterfaceBounds(additionalBounds);
- typeVariablesInProgress.remove(type); // we have finished working on it
- return tvrt;
- } else if (type instanceof WildcardType) {
- WildcardType wildType = (WildcardType) type;
- Type[] lowerBounds = wildType.getLowerBounds();
- Type[] upperBounds = wildType.getUpperBounds();
- ResolvedType bound = null;
- boolean isExtends = lowerBounds.length == 0;
- if (isExtends) {
- bound = fromType(upperBounds[0]);
- } else {
- bound = fromType(lowerBounds[0]);
- }
- return new BoundedReferenceType((ReferenceType) bound, isExtends, getWorld());
- } else if (type instanceof GenericArrayType) {
- GenericArrayType genericArrayType = (GenericArrayType) type;
- Type componentType = genericArrayType.getGenericComponentType();
- return UnresolvedType.makeArray(fromType(componentType), 1).resolve(getWorld());
- }
- return ResolvedType.MISSING;
- }
-
- public ResolvedType[] fromTypes(Type[] types) {
- ResolvedType[] ret = new ResolvedType[types.length];
- for (int i = 0; i < ret.length; i++) {
- ret[i] = fromType(types[i]);
- }
- return ret;
- }
-
-}
diff --git a/weaver5/java5-src/org/aspectj/weaver/tools/Jdk14Trace.java b/weaver5/java5-src/org/aspectj/weaver/tools/Jdk14Trace.java
deleted file mode 100644
index 061b0b0a0..000000000
--- a/weaver5/java5-src/org/aspectj/weaver/tools/Jdk14Trace.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Matthew Webster - initial implementation
- *******************************************************************************/
-package org.aspectj.weaver.tools;
-
-import java.util.logging.Handler;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-// OPTIMIZE move out for now? check what doc says about using these variants on trace (commons/14)
-public class Jdk14Trace extends AbstractTrace {
-
- private Logger logger;
- private String name;
-
- public Jdk14Trace (Class clazz) {
- super(clazz);
- this.name = clazz.getName();
- this.logger = Logger.getLogger(name);
- }
-
- public void enter(String methodName, Object thiz, Object[] args) {
- if (logger.isLoggable(Level.FINE)) {
- logger.entering(name,methodName,formatObj(thiz));
- if (args != null && logger.isLoggable(Level.FINER)) {
- logger.entering(name,methodName,formatObjects(args));
- }
- }
- }
-
- public void enter(String methodName, Object thiz) {
- enter(methodName,thiz,null);
- }
-
- public void exit(String methodName, Object ret) {
- if (logger.isLoggable(Level.FINE)) {
- logger.exiting(name,methodName,formatObj(ret));
- }
- }
-
- public void exit(String methodName, Throwable th) {
- if (logger.isLoggable(Level.FINE)) {
- logger.exiting(name,methodName,th);
- }
- }
-
- public void exit(String methodName) {
- if (logger.isLoggable(Level.FINE)) {
- logger.exiting(name,methodName);
- }
- }
-
- public void event(String methodName, Object thiz, Object[] args) {
- if (logger.isLoggable(Level.FINE)) {
- logger.logp(Level.FINER,name,methodName,"EVENT",formatObj(thiz));
- if (args != null && logger.isLoggable(Level.FINER)) {
- logger.logp(Level.FINER,name,methodName,"EVENT",formatObjects(args));
- }
- }
- }
-
- public void event(String methodName) {
- if (logger.isLoggable(Level.FINE)) {
- logger.logp(Level.FINER,name,methodName,"EVENT");
- }
- }
-
- public boolean isTraceEnabled() {
- return logger.isLoggable(Level.FINER);
- }
-
- public void setTraceEnabled (boolean b) {
- if (b) {
- logger.setLevel(Level.FINER);
- Handler[] handlers = logger.getHandlers();
- if (handlers.length == 0) {
- Logger parent = logger.getParent();
- if (parent != null) handlers = parent.getHandlers();
- }
- for (int i = 0; i < handlers.length; i++) {
- Handler handler = handlers[i];
- handler.setLevel(Level.FINER);
- }
- }
- else {
- logger.setLevel(Level.INFO);
- }
- }
-
- public void debug (String message) {
- if (logger.isLoggable(Level.FINE)) {
- logger.fine(message);
- }
- }
-
- public void info(String message) {
- if (logger.isLoggable(Level.INFO)) {
- logger.info(message);
- }
- }
-
- public void warn (String message, Throwable th) {
- if (logger.isLoggable(Level.WARNING)) {
- logger.log(Level.WARNING,message,th);
- }
- }
-
- public void error (String message, Throwable th) {
- if (logger.isLoggable(Level.SEVERE)) {
- logger.log(Level.SEVERE,message,th);
- }
- }
-
- public void fatal (String message, Throwable th) {
- if (logger.isLoggable(Level.SEVERE)) {
- logger.log(Level.SEVERE,message,th);
- }
- }
-
-}
diff --git a/weaver5/java5-src/org/aspectj/weaver/tools/Jdk14TraceFactory.java b/weaver5/java5-src/org/aspectj/weaver/tools/Jdk14TraceFactory.java
deleted file mode 100644
index 4043d1d33..000000000
--- a/weaver5/java5-src/org/aspectj/weaver/tools/Jdk14TraceFactory.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Matthew Webster - initial implementation
- *******************************************************************************/
-package org.aspectj.weaver.tools;
-
-public class Jdk14TraceFactory extends TraceFactory {
-
- @Override
- public Trace getTrace(Class clazz) {
- return new Jdk14Trace(clazz);
- }
-
-}