From 4bb2e2323994791d23649ac9de4faf9b306498a2 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 11 Oct 2022 15:34:07 +0200 Subject: [PATCH] Resolve CGLIB core<->transform package cycle See gh-28955 --- .../java/org/springframework/cglib/core/ClassEmitter.java | 2 -- .../cglib/{transform => core}/ClassTransformer.java | 3 +-- .../cglib/transform/AbstractClassFilterTransformer.java | 7 ++++++- .../cglib/transform/AbstractClassTransformer.java | 1 + .../cglib/transform/ClassFilterTransformer.java | 2 ++ .../cglib/transform/ClassTransformerChain.java | 4 +++- .../cglib/transform/ClassTransformerFactory.java | 2 ++ .../cglib/transform/ClassTransformerTee.java | 1 + .../springframework/cglib/transform/ClassVisitorTee.java | 7 ++++++- .../cglib/transform/MethodFilterTransformer.java | 4 +++- .../springframework/cglib/transform/MethodVisitorTee.java | 7 ++++++- .../cglib/transform/TransformingClassGenerator.java | 1 + .../cglib/transform/TransformingClassLoader.java | 1 + .../cglib/transform/impl/UndeclaredThrowableStrategy.java | 2 +- 14 files changed, 34 insertions(+), 10 deletions(-) rename spring-core/src/main/java/org/springframework/cglib/{transform => core}/ClassTransformer.java (90%) diff --git a/spring-core/src/main/java/org/springframework/cglib/core/ClassEmitter.java b/spring-core/src/main/java/org/springframework/cglib/core/ClassEmitter.java index 10c8997bec5..dbe7f3dce4e 100644 --- a/spring-core/src/main/java/org/springframework/cglib/core/ClassEmitter.java +++ b/spring-core/src/main/java/org/springframework/cglib/core/ClassEmitter.java @@ -15,8 +15,6 @@ */ package org.springframework.cglib.core; -import org.springframework.cglib.transform.ClassTransformer; - import org.springframework.asm.ClassVisitor; import org.springframework.asm.FieldVisitor; import org.springframework.asm.MethodVisitor; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformer.java b/spring-core/src/main/java/org/springframework/cglib/core/ClassTransformer.java similarity index 90% rename from spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformer.java rename to spring-core/src/main/java/org/springframework/cglib/core/ClassTransformer.java index 0c678d9b50e..cf917e9ebe2 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformer.java +++ b/spring-core/src/main/java/org/springframework/cglib/core/ClassTransformer.java @@ -13,9 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.cglib.transform; +package org.springframework.cglib.core; -import org.springframework.cglib.core.Constants; import org.springframework.asm.ClassVisitor; public abstract class ClassTransformer extends ClassVisitor { diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/AbstractClassFilterTransformer.java b/spring-core/src/main/java/org/springframework/cglib/transform/AbstractClassFilterTransformer.java index e82cc31a0d1..d3e055485cc 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/AbstractClassFilterTransformer.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/AbstractClassFilterTransformer.java @@ -15,7 +15,12 @@ */ package org.springframework.cglib.transform; -import org.springframework.asm.*; +import org.springframework.asm.AnnotationVisitor; +import org.springframework.asm.Attribute; +import org.springframework.asm.ClassVisitor; +import org.springframework.asm.FieldVisitor; +import org.springframework.asm.MethodVisitor; +import org.springframework.cglib.core.ClassTransformer; abstract public class AbstractClassFilterTransformer extends AbstractClassTransformer { private ClassTransformer pass; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/AbstractClassTransformer.java b/spring-core/src/main/java/org/springframework/cglib/transform/AbstractClassTransformer.java index 7236f1d50e5..954204fda4b 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/AbstractClassTransformer.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/AbstractClassTransformer.java @@ -15,6 +15,7 @@ */ package org.springframework.cglib.transform; +import org.springframework.cglib.core.ClassTransformer; import org.springframework.cglib.core.Constants; import org.springframework.asm.ClassVisitor; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/ClassFilterTransformer.java b/spring-core/src/main/java/org/springframework/cglib/transform/ClassFilterTransformer.java index 13d6e481275..73e016c3205 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/ClassFilterTransformer.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/ClassFilterTransformer.java @@ -16,6 +16,8 @@ package org.springframework.cglib.transform; +import org.springframework.cglib.core.ClassTransformer; + public class ClassFilterTransformer extends AbstractClassFilterTransformer { private ClassFilter filter; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java b/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java index 482464ebeeb..f95179b9463 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java @@ -15,7 +15,9 @@ */ package org.springframework.cglib.transform; -import org.springframework.asm.*; +import org.springframework.asm.ClassVisitor; +import org.springframework.asm.MethodVisitor; +import org.springframework.cglib.core.ClassTransformer; public class ClassTransformerChain extends AbstractClassTransformer { private ClassTransformer[] chain; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerFactory.java b/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerFactory.java index 8f9305a6279..cb72be9ee19 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerFactory.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerFactory.java @@ -15,6 +15,8 @@ */ package org.springframework.cglib.transform; +import org.springframework.cglib.core.ClassTransformer; + public interface ClassTransformerFactory { ClassTransformer newInstance(); } diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerTee.java b/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerTee.java index 1588a0ac66c..a4572fe4065 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerTee.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerTee.java @@ -15,6 +15,7 @@ */ package org.springframework.cglib.transform; +import org.springframework.cglib.core.ClassTransformer; import org.springframework.cglib.core.Constants; import org.springframework.asm.ClassVisitor; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/ClassVisitorTee.java b/spring-core/src/main/java/org/springframework/cglib/transform/ClassVisitorTee.java index ba94335feb9..638d320e1f9 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/ClassVisitorTee.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/ClassVisitorTee.java @@ -15,8 +15,13 @@ */ package org.springframework.cglib.transform; +import org.springframework.asm.AnnotationVisitor; +import org.springframework.asm.Attribute; +import org.springframework.asm.ClassVisitor; +import org.springframework.asm.FieldVisitor; +import org.springframework.asm.MethodVisitor; +import org.springframework.asm.TypePath; import org.springframework.cglib.core.Constants; -import org.springframework.asm.*; public class ClassVisitorTee extends ClassVisitor { private ClassVisitor cv1, cv2; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/MethodFilterTransformer.java b/spring-core/src/main/java/org/springframework/cglib/transform/MethodFilterTransformer.java index aa7591dccd4..615331ea506 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/MethodFilterTransformer.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/MethodFilterTransformer.java @@ -15,7 +15,9 @@ */ package org.springframework.cglib.transform; -import org.springframework.asm.*; +import org.springframework.asm.ClassVisitor; +import org.springframework.asm.MethodVisitor; +import org.springframework.cglib.core.ClassTransformer; public class MethodFilterTransformer extends AbstractClassTransformer { private MethodFilter filter; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/MethodVisitorTee.java b/spring-core/src/main/java/org/springframework/cglib/transform/MethodVisitorTee.java index 20470bda9d2..c0e60c57da2 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/MethodVisitorTee.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/MethodVisitorTee.java @@ -15,8 +15,13 @@ */ package org.springframework.cglib.transform; +import org.springframework.asm.AnnotationVisitor; +import org.springframework.asm.Attribute; +import org.springframework.asm.Handle; +import org.springframework.asm.Label; +import org.springframework.asm.MethodVisitor; +import org.springframework.asm.TypePath; import org.springframework.cglib.core.Constants; -import org.springframework.asm.*; @SuppressWarnings("deprecation") public class MethodVisitorTee extends MethodVisitor { diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/TransformingClassGenerator.java b/spring-core/src/main/java/org/springframework/cglib/transform/TransformingClassGenerator.java index 4b95c7d75c3..3774fb4030f 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/TransformingClassGenerator.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/TransformingClassGenerator.java @@ -18,6 +18,7 @@ package org.springframework.cglib.transform; import org.springframework.asm.ClassVisitor; import org.springframework.cglib.core.ClassGenerator; +import org.springframework.cglib.core.ClassTransformer; public class TransformingClassGenerator implements ClassGenerator { private final ClassGenerator gen; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/TransformingClassLoader.java b/spring-core/src/main/java/org/springframework/cglib/transform/TransformingClassLoader.java index 4b1bd7ca69d..dbb17c21145 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/TransformingClassLoader.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/TransformingClassLoader.java @@ -18,6 +18,7 @@ package org.springframework.cglib.transform; import org.springframework.asm.ClassReader; import org.springframework.cglib.core.ClassGenerator; +import org.springframework.cglib.core.ClassTransformer; public class TransformingClassLoader extends AbstractClassLoader { private final ClassTransformerFactory t; diff --git a/spring-core/src/main/java/org/springframework/cglib/transform/impl/UndeclaredThrowableStrategy.java b/spring-core/src/main/java/org/springframework/cglib/transform/impl/UndeclaredThrowableStrategy.java index 4e18cefce4c..81633786b61 100644 --- a/spring-core/src/main/java/org/springframework/cglib/transform/impl/UndeclaredThrowableStrategy.java +++ b/spring-core/src/main/java/org/springframework/cglib/transform/impl/UndeclaredThrowableStrategy.java @@ -19,7 +19,7 @@ import org.springframework.cglib.core.ClassGenerator; import org.springframework.cglib.core.DefaultGeneratorStrategy; import org.springframework.cglib.core.GeneratorStrategy; import org.springframework.cglib.core.TypeUtils; -import org.springframework.cglib.transform.ClassTransformer; +import org.springframework.cglib.core.ClassTransformer; import org.springframework.cglib.transform.MethodFilter; import org.springframework.cglib.transform.MethodFilterTransformer; import org.springframework.cglib.transform.TransformingClassGenerator;