diff options
author | Alexander Kriegisch <Alexander@Kriegisch.name> | 2021-05-16 10:17:12 +0700 |
---|---|---|
committer | Alexander Kriegisch <Alexander@Kriegisch.name> | 2021-05-16 10:17:12 +0700 |
commit | 45254f588150c944dfde84821308d27cc9d34a37 (patch) | |
tree | 51bfa4cb19820107aa817137e9ffd07b12f7ba10 /weaver | |
parent | 95fc5eec2de1b46c069f805a0a8657427a1a0a0a (diff) | |
download | aspectj-45254f588150c944dfde84821308d27cc9d34a37.tar.gz aspectj-45254f588150c944dfde84821308d27cc9d34a37.zip |
Replace use of ASM-renamed by original ASM
This involves replacing references in weaver application code as well as
a few tests.
In order to make AspectJ weaver + tools contain a relocated ASM version,
I added a Maven Shade relocation step after Maven Assembly created the
uber JARs. Relocation works for both binaries and sources and also
encompasses Class::forName calls like in class AsmDetector.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'weaver')
4 files changed, 20 insertions, 17 deletions
diff --git a/weaver/pom.xml b/weaver/pom.xml index b812ffba1..f47c1ddc5 100644 --- a/weaver/pom.xml +++ b/weaver/pom.xml @@ -62,8 +62,8 @@ <version>${project.version}</version> </dependency> <dependency> - <groupId>org.aspectj</groupId> - <artifactId>asm-renamed</artifactId> + <groupId>org.ow2.asm</groupId> + <artifactId>asm</artifactId> </dependency> </dependencies> </project> diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java b/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java index 5e72d84ce..22c7945f0 100644 --- a/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java +++ b/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java @@ -754,7 +754,11 @@ public final class LazyClassGen { // are required (unless turning off the verifier) if ((myGen.getMajor() == Constants.MAJOR_1_6 && world.shouldGenerateStackMaps()) || myGen.getMajor() > Constants.MAJOR_1_6) { if (!AsmDetector.isAsmAround) { - throw new BCException("Unable to find Asm for stackmap generation (Looking for 'aj.org.objectweb.asm.ClassReader'). Stackmap generation for woven code is required to avoid verify errors on a Java 1.7 or higher runtime"); + throw new BCException( + "Unable to find ASM classes (" + AsmDetector.CLASS_READER + ", " + AsmDetector.CLASS_VISITOR + ") " + + "for stackmap generation. Stackmap generation for woven code is required to avoid verify errors " + + "on a Java 1.7 or higher runtime." + ); } wovenClassFileData = StackMapAdder.addStackMaps(world, wovenClassFileData); } diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/asm/AsmDetector.java b/weaver/src/main/java/org/aspectj/weaver/bcel/asm/AsmDetector.java index 5d5bb6990..5fa7bd006 100644 --- a/weaver/src/main/java/org/aspectj/weaver/bcel/asm/AsmDetector.java +++ b/weaver/src/main/java/org/aspectj/weaver/bcel/asm/AsmDetector.java @@ -11,26 +11,25 @@ * ******************************************************************/ package org.aspectj.weaver.bcel.asm; -import java.lang.reflect.Method; - /** * Determines if a version of asm is around that will enable us to add stack map attributes to classes that we produce. - * + * * @author Andy Clement */ public class AsmDetector { - + public static final String CLASS_READER = "org.objectweb.asm.ClassReader"; + public static final String CLASS_VISITOR = "org.objectweb.asm.ClassVisitor"; public static boolean isAsmAround; static { try { - Class<?> reader = Class.forName("aj.org.objectweb.asm.ClassReader"); - Class<?> visitor = Class.forName("aj.org.objectweb.asm.ClassVisitor"); - Method m = reader.getMethod("accept", new Class[] { visitor, Integer.TYPE }); - isAsmAround = m != null; + Class<?> reader = Class.forName(CLASS_READER); + Class<?> visitor = Class.forName(CLASS_VISITOR); + reader.getMethod("accept", visitor, Integer.TYPE); + isAsmAround = true; } catch (Exception e) { isAsmAround = false; } - // System.out.println(isAsmAround?"ASM detected":"No ASM found"); + //System.out.println(isAsmAround ? "ASM detected" : "No ASM found"); } } diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/asm/StackMapAdder.java b/weaver/src/main/java/org/aspectj/weaver/bcel/asm/StackMapAdder.java index 1de90f888..07f3435ae 100644 --- a/weaver/src/main/java/org/aspectj/weaver/bcel/asm/StackMapAdder.java +++ b/weaver/src/main/java/org/aspectj/weaver/bcel/asm/StackMapAdder.java @@ -15,11 +15,11 @@ import org.aspectj.weaver.ResolvedType; import org.aspectj.weaver.UnresolvedType; import org.aspectj.weaver.World; -import aj.org.objectweb.asm.ClassReader; -import aj.org.objectweb.asm.ClassVisitor; -import aj.org.objectweb.asm.ClassWriter; -import aj.org.objectweb.asm.MethodVisitor; -import aj.org.objectweb.asm.Opcodes; +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassVisitor; +import org.objectweb.asm.ClassWriter; +import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Opcodes; /** * Uses asm to add the stack map attribute to methods in a class. The class is passed in as pure byte data and then a reader/writer |