aboutsummaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authorAlexander Kriegisch <Alexander@Kriegisch.name>2021-05-16 10:17:12 +0700
committerAlexander Kriegisch <Alexander@Kriegisch.name>2021-05-16 10:17:12 +0700
commit45254f588150c944dfde84821308d27cc9d34a37 (patch)
tree51bfa4cb19820107aa817137e9ffd07b12f7ba10 /weaver
parent95fc5eec2de1b46c069f805a0a8657427a1a0a0a (diff)
downloadaspectj-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')
-rw-r--r--weaver/pom.xml4
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java6
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/asm/AsmDetector.java17
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/asm/StackMapAdder.java10
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