From fc108cb994f48294d01bb9a5c2c06b9c7ed1e4c9 Mon Sep 17 00:00:00 2001 From: dukun Date: Wed, 8 May 2024 13:57:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98=20#?= =?UTF-8?q?455?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/jvm/sandbox/agent/AgentLauncher.java | 3 --- sandbox-core/pom.xml | 11 +++++++++-- .../com/alibaba/jvm/sandbox/core/Constants.java | 15 +++++++++++++++ .../jvm/sandbox/core/enhance/EventEnhancer.java | 4 ++-- .../impl/DefaultCoreLoadedClassDataSource.java | 4 +--- .../structure/ClassStructureImplByAsm.java | 11 ++++++----- .../enhance/transformer/TestThirdEnhance.java | 4 ++-- .../ClassStructureByChildClassTestCase.java | 1 - .../core/util/matcher/target/ChildClass.java | 2 +- .../jvm/sandbox/module/mgr/ModuleMgrModule.java | 3 +-- 10 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/Constants.java diff --git a/sandbox-agent/src/main/java/com/alibaba/jvm/sandbox/agent/AgentLauncher.java b/sandbox-agent/src/main/java/com/alibaba/jvm/sandbox/agent/AgentLauncher.java index c9eb8d94..ddfbf3df 100755 --- a/sandbox-agent/src/main/java/com/alibaba/jvm/sandbox/agent/AgentLauncher.java +++ b/sandbox-agent/src/main/java/com/alibaba/jvm/sandbox/agent/AgentLauncher.java @@ -310,9 +310,6 @@ private static Map toFeatureMap(final String featureString) { // KV对片段数组 final String[] kvPairSegmentArray = featureString.split(";"); - if (kvPairSegmentArray.length == 0) { - return featureMap; - } for (String kvPairSegmentString : kvPairSegmentArray) { if (isBlankString(kvPairSegmentString)) { diff --git a/sandbox-core/pom.xml b/sandbox-core/pom.xml index 335bc77a..c8b9f694 100644 --- a/sandbox-core/pom.xml +++ b/sandbox-core/pom.xml @@ -55,7 +55,7 @@ org.apache.maven.plugins maven-surefire-plugin - once + -Xbootclasspath/p:./src/test/resources/lib/sandbox-spy-1.3.0-for-qatest.jar -Dsun.zip.disableMemoryMapping=true @@ -150,7 +150,7 @@ org.ow2.asm asm - 9.4 + 9.7 org.ow2.asm @@ -170,4 +170,11 @@ + + + maven_central + Maven Central + https://repo.maven.apache.org/maven2/ + + diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/Constants.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/Constants.java new file mode 100644 index 00000000..b82d4f33 --- /dev/null +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/Constants.java @@ -0,0 +1,15 @@ +package com.alibaba.jvm.sandbox.core; + +import org.objectweb.asm.Opcodes; + +/** + * 常量类 + */ +public interface Constants { + + /** + * 支持的ASM版本 + */ + int SUPPORT_ASM = Opcodes.ASM9; + +} diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.java index c58f4d84..14922994 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.java @@ -1,6 +1,7 @@ package com.alibaba.jvm.sandbox.core.enhance; import com.alibaba.jvm.sandbox.api.event.Event; +import com.alibaba.jvm.sandbox.core.Constants; import com.alibaba.jvm.sandbox.core.enhance.weaver.asm.EventWeaver; import com.alibaba.jvm.sandbox.core.util.AsmUtils; import com.alibaba.jvm.sandbox.core.util.ObjectIDs; @@ -17,7 +18,6 @@ import static org.objectweb.asm.ClassReader.EXPAND_FRAMES; import static org.objectweb.asm.ClassWriter.COMPUTE_FRAMES; import static org.objectweb.asm.ClassWriter.COMPUTE_MAXS; -import static org.objectweb.asm.Opcodes.ASM7; /** * 事件代码增强器 @@ -104,7 +104,7 @@ public byte[] toByteCodeArray(final ClassLoader targetClassLoader, final ClassWriter cw = createClassWriter(targetClassLoader, cr); final int targetClassLoaderObjectID = ObjectIDs.instance.identity(targetClassLoader); cr.accept( - new EventWeaver(ASM7, cw, namespace, listenerId, + new EventWeaver(Constants.SUPPORT_ASM, cw, namespace, listenerId, targetClassLoaderObjectID, cr.getClassName(), signCodes, diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreLoadedClassDataSource.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreLoadedClassDataSource.java index 9d08f47f..ea23d936 100644 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreLoadedClassDataSource.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreLoadedClassDataSource.java @@ -40,9 +40,7 @@ public DefaultCoreLoadedClassDataSource(final Instrumentation inst, @Override public Set> list() { final Set> classes = new LinkedHashSet<>(); - for(final Class clazz : inst.getAllLoadedClasses()) { - classes.add(clazz); - } + Collections.addAll(classes, (Class[])inst.getAllLoadedClasses()); return classes; } diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm.java index e2397403..9a3780a4 100644 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm.java @@ -1,6 +1,7 @@ package com.alibaba.jvm.sandbox.core.util.matcher.structure; import com.alibaba.jvm.sandbox.api.util.LazyGet; +import com.alibaba.jvm.sandbox.core.Constants; import com.alibaba.jvm.sandbox.core.util.BitUtils; import com.alibaba.jvm.sandbox.core.util.collection.Pair; import com.alibaba.jvm.sandbox.core.util.matcher.structure.PrimitiveClassStructure.Primitive; @@ -256,14 +257,14 @@ public class ClassStructureImplByAsm extends FamilyClassStructure { private Access fixAccess() { final AtomicInteger accessRef = new AtomicInteger(this.classReader.getAccess()); final String internalClassName = this.classReader.getClassName(); - this.classReader.accept(new ClassVisitor(ASM7) { + this.classReader.accept(new ClassVisitor(Constants.SUPPORT_ASM) { @Override public void visitInnerClass(String name, String outerName, String innerName, int access) { if (StringUtils.equals(name, internalClassName)) { accessRef.set(access); } } - }, ASM7); + }, Constants.SUPPORT_ASM); return new AccessImplByAsm(accessRef.get()); } @@ -413,7 +414,7 @@ public List getInterfaceClassStructures() { @Override protected List initialValue() { final List annotationTypeClassStructures = new ArrayList<>(); - accept(new ClassVisitor(ASM7) { + accept(new ClassVisitor(Constants.SUPPORT_ASM) { @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { @@ -442,7 +443,7 @@ public List getAnnotationTypeClassStructures() { @Override protected List initialValue() { final List behaviorStructures = new ArrayList<>(); - accept(new ClassVisitor(ASM7) { + accept(new ClassVisitor(Constants.SUPPORT_ASM) { @Override public MethodVisitor visitMethod(final int access, @@ -457,7 +458,7 @@ public MethodVisitor visitMethod(final int access, return super.visitMethod(access, name, desc, signature, exceptions); } - return new MethodVisitor(ASM7, super.visitMethod(access, name, desc, signature, exceptions)) { + return new MethodVisitor(Constants.SUPPORT_ASM, super.visitMethod(access, name, desc, signature, exceptions)) { private final Type methodType = Type.getMethodType(desc); private final List annotationTypeClassStructures = new ArrayList<>(); diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/transformer/TestThirdEnhance.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/transformer/TestThirdEnhance.java index 07570ad0..5db0b10d 100644 --- a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/transformer/TestThirdEnhance.java +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/transformer/TestThirdEnhance.java @@ -1,5 +1,6 @@ package com.alibaba.jvm.sandbox.qatest.core.enhance.transformer; +import com.alibaba.jvm.sandbox.core.Constants; import com.alibaba.jvm.sandbox.core.enhance.weaver.asm.AsmMethods; import com.alibaba.jvm.sandbox.core.enhance.weaver.asm.AsmTypes; import com.alibaba.jvm.sandbox.core.util.AsmUtils; @@ -15,7 +16,6 @@ import static org.objectweb.asm.ClassReader.EXPAND_FRAMES; import static org.objectweb.asm.ClassWriter.COMPUTE_FRAMES; import static org.objectweb.asm.ClassWriter.COMPUTE_MAXS; -import static org.objectweb.asm.Opcodes.ASM7; /** * 测试第三方增强冲突情况 @@ -35,7 +35,7 @@ public byte[] transform(ClassLoader loader, byte[] classfileBuffer){ // 返回增强后字节码 final ClassReader cr = new ClassReader(classfileBuffer); final ClassWriter cw = createClassWriter(loader, cr); - cr.accept(new ThirdClassVisitor(ASM7,cw,signCodes,cr.getClassName()), + cr.accept(new ThirdClassVisitor(Constants.SUPPORT_ASM,cw,signCodes,cr.getClassName()), EXPAND_FRAMES ); return dumpClassIfNecessary(cr.getClassName(), cw.toByteArray()); diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureByChildClassTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureByChildClassTestCase.java index b4f1eddd..d91ff8fb 100644 --- a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureByChildClassTestCase.java +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureByChildClassTestCase.java @@ -300,7 +300,6 @@ private static String buildSignCode(final String javaClassName, buildSignCode(PACKAGE_PREFIX + "ChildClass", "methodOfChildClassWithAnnotation"), new BehaviorStructureAsserter() .assertExceptionTypes(buildJavaClassNameArrayAsserter( - "java.lang.IllegalStateException", "java.lang.RuntimeException" )) .assertAnnotationTypes(buildJavaClassNameArrayAsserter( diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.java index cd3a3e60..c89634a0 100644 --- a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.java +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.java @@ -96,7 +96,7 @@ public void methodOfArrayArguments( @InheritedAnnotation - public void methodOfChildClassWithAnnotation() throws IllegalStateException, RuntimeException { + public void methodOfChildClassWithAnnotation() throws RuntimeException { } diff --git a/sandbox-mgr-module/src/main/java/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.java b/sandbox-mgr-module/src/main/java/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.java index 63f0926a..d5b94da7 100755 --- a/sandbox-mgr-module/src/main/java/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.java +++ b/sandbox-mgr-module/src/main/java/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.java @@ -207,8 +207,7 @@ public void detail(final Map param, final int cCnt = moduleManager.cCnt(info.id()); final int mCnt = moduleManager.mCnt(info.id()); final File jarFile = moduleManager.getJarFile(info.id()); - String sb = "" + - " ID : " + info.id() + "\n" + + String sb = " ID : " + info.id() + "\n" + " VERSION : " + info.version() + "\n" + " AUTHOR : " + info.author() + "\n" + "JAR_FILE : " + jarFile.getPath() + "\n" +