This is an automated email from the ASF dual-hosted git repository. mgrigorov pushed a commit to branch WICKET-6913-replace-cglib-with-bytebuddy-wicket-10.x in repository https://gitbox.apache.org/repos/asf/wicket.git
commit f16168bee0a56ef08ab2fc36f7a6ef669a7b8463 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> AuthorDate: Thu Aug 12 14:05:07 2021 +0300 WICKET-6913 Replace CGLib with ByteBuddy Replace all occurrences of "cglib" with "byte-buddy". Merge AbstractByteBuddyInterceptor and ByteBuddyInterceptor. I see no need of both. If an application needs special impl of #writeReplace() then it could extend ByteBuddyInterceptor and override it. Improve Maven dependency management related to byte-buddy. --- NOTICE | 8 ++++---- README.md | 4 ++-- pom.xml | 12 +++++------ wicket-examples/src/main/resources/META-INF/NOTICE | 10 ++++----- wicket-ioc/pom.xml | 9 ++++---- .../apache/wicket/proxy/LazyInitProxyFactory.java | 24 +++++----------------- .../objenesis/ObjenesisByteBuddyInterceptor.java | 2 +- .../proxy/objenesis/ObjenesisProxyFactory.java | 6 ------ .../wicket/injection/util/MockDependency.java | 2 +- .../wicket/proxy/PackagePrivateConcreteObject.java | 2 +- .../apache/wicket/proxy/util/ConcreteObject.java | 2 +- wicket-jmx/pom.xml | 1 - .../annot/SpringBeanWithGenericsTest.java | 2 +- 13 files changed, 31 insertions(+), 53 deletions(-) diff --git a/NOTICE b/NOTICE index 3e462db..b212522 100644 --- a/NOTICE +++ b/NOTICE @@ -53,11 +53,11 @@ src/./wicket-examples This product includes software developed by the Spring Framework Project (http://www.springframework.org). - This product includes software developed by the CGLib Project - (http://cglib.sourceforge.net). + This product includes software developed by the ByteBuddy Project + (https://bytebuddy.net/). - This product includes ASM, released under a BSD style license (http://asm.objectweb.org). - Copyright (c) 2000-2005 INRIA, France Telecom + This product includes ASM, released under a BSD style license (https://asm.ow2.io/). + Copyright (c) 2000-2011 INRIA, France Telecom This product includes jhighlight (https://jhighlight.dev.java.net/) which is released under CDDL 1.0 license (http://www.opensource.org/licenses/cddl1.php). diff --git a/README.md b/README.md index 01e9982..32b9555 100644 --- a/README.md +++ b/README.md @@ -158,8 +158,8 @@ the src/ folder. - wicket-ioc: - cglib 3.1 (http://cglib.sourceforge.net/) and - asm-util 5.0.3 (http://asm.objectweb.org/) + byte-buddy 1.11.12 (https://bytebuddy.net/) and + asm-util 9.1 (https://asm.ow2.io/) - wicket-spring: diff --git a/pom.xml b/pom.xml index 6564ee5..551ddc3 100644 --- a/pom.xml +++ b/pom.xml @@ -137,8 +137,8 @@ <asm.version>9.1</asm.version> <aspectj.version>1.9.6</aspectj.version> <assertj-core.version>3.19.0</assertj-core.version> + <byte-buddy.version>1.11.12</byte-buddy.version> <cdi-unit.version>4.1.0</cdi-unit.version> - <cglib.version>3.3.0</cglib.version> <commons-collections.version>3.2.2</commons-collections.version> <commons-collections4.version>4.4</commons-collections4.version> <commons-fileupload.version>1.4</commons-fileupload.version> @@ -259,11 +259,6 @@ <scope>provided</scope> </dependency> <dependency> - <groupId>cglib</groupId> - <artifactId>cglib</artifactId> - <version>${cglib.version}</version> - </dependency> - <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> @@ -323,6 +318,11 @@ <optional>true</optional> </dependency> <dependency> + <groupId>net.bytebuddy</groupId> + <artifactId>byte-buddy</artifactId> + <version>${byte-buddy.version}</version> + </dependency> + <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>${commons-collections4.version}</version> diff --git a/wicket-examples/src/main/resources/META-INF/NOTICE b/wicket-examples/src/main/resources/META-INF/NOTICE index 619dd91..08cc74b 100644 --- a/wicket-examples/src/main/resources/META-INF/NOTICE +++ b/wicket-examples/src/main/resources/META-INF/NOTICE @@ -26,11 +26,11 @@ This product includes software developed by the Spring Framework Project (http://www.springframework.org). - This product includes software developed by the CGLib Project - (http://cglib.sourceforge.net). + This product includes software developed by the ByteBiddy Project + (https://bytebuddy.net/). - This product includes ASM, released under a BSD style license (http://asm.objectweb.org). - Copyright (c) 2000-2005 INRIA, France Telecom + This product includes ASM, released under a BSD style license (https://asm.ow2.io/). + Copyright (c) 2000-2011 INRIA, France Telecom This product includes jhighlight (https://jhighlight.dev.java.net/) which is released under CDDL 1.0 license (http://www.opensource.org/licenses/cddl1.php). @@ -42,4 +42,4 @@ jQuery Foundation, Inc, http://jquery.org/license Contains qunit.css released under a MIT style license. - jQuery Foundation, Inc, http://jquery.org/license \ No newline at end of file + jQuery Foundation, Inc, http://jquery.org/license diff --git a/wicket-ioc/pom.xml b/wicket-ioc/pom.xml index 1a43586..6e3697a 100644 --- a/wicket-ioc/pom.xml +++ b/wicket-ioc/pom.xml @@ -33,15 +33,14 @@ <dependencies> <dependency> - <groupId>net.bytebuddy</groupId> - <artifactId>byte-buddy</artifactId> - <version>1.11.12</version> - </dependency> - <dependency> <groupId>jakarta.inject</groupId> <artifactId>jakarta.inject-api</artifactId> </dependency> <dependency> + <groupId>net.bytebuddy</groupId> + <artifactId>byte-buddy</artifactId> + </dependency> + <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-core</artifactId> <version>${project.version}</version> diff --git a/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java b/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java index 8a24bc2..e33e67d 100644 --- a/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java +++ b/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java @@ -53,7 +53,7 @@ import org.apache.wicket.util.io.IClusterable; * forwarded. * <p> * This factory creates two kinds of proxies: A standard dynamic proxy when the specified type is an - * interface, and a CGLib proxy when the specified type is a concrete class. + * interface, and a ByteBuddy proxy when the specified type is a concrete class. * <p> * The general use case for such a proxy is to represent a dependency that should not be serialized * with a wicket page or {@link IModel}. The solution is to serialize the proxy and the @@ -307,7 +307,7 @@ public class LazyInitProxyFactory * * @author Igor Vaynberg (ivaynberg) */ - public abstract static class AbstractByteBuddyInterceptor + public static class ByteBuddyInterceptor implements ILazyInitProxy, Serializable, @@ -330,7 +330,7 @@ public class LazyInitProxyFactory * @param locator * object locator used to locate the object this proxy represents */ - public AbstractByteBuddyInterceptor(final Class<?> type, final IProxyTargetLocator locator) + public ByteBuddyInterceptor(final Class<?> type, final IProxyTargetLocator locator) { super(); typeName = type.getName(); @@ -381,20 +381,6 @@ public class LazyInitProxyFactory { return locator; } - } - - /** - * Method interceptor for proxies representing concrete object not backed by an interface. - * These proxies are representing by ByteBuddy proxies. - * - * @author Igor Vaynberg (ivaynberg) - */ - protected static class ByteBuddyInterceptor extends AbstractByteBuddyInterceptor - { - public ByteBuddyInterceptor(Class<?> type, IProxyTargetLocator locator) - { - super(type, locator); - } @Override public Object writeReplace() throws ObjectStreamException @@ -581,11 +567,11 @@ public class LazyInitProxyFactory @Override protected String name(TypeDescription superClass) { - final String prefix = superClass.getName(); + String prefix = superClass.getName(); int lastIdxOfDot = prefix.lastIndexOf('.'); String packageName = prefix.substring(0, lastIdxOfDot); String className = prefix.substring(lastIdxOfDot + 1); - String name = packageName + ".Wicket_Proxy_" + className; + String name = "bytebuddy_generated_wicket_proxy." + packageName + "." + className; return name; } diff --git a/wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisByteBuddyInterceptor.java b/wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisByteBuddyInterceptor.java index ee40a60..e2bdbff 100644 --- a/wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisByteBuddyInterceptor.java +++ b/wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisByteBuddyInterceptor.java @@ -25,7 +25,7 @@ import org.apache.wicket.proxy.LazyInitProxyFactory; * Method interceptor for proxies representing concrete object not backed by an interface. * These proxies are representing by ByteBuddy proxies. */ -public class ObjenesisByteBuddyInterceptor extends LazyInitProxyFactory.AbstractByteBuddyInterceptor +public class ObjenesisByteBuddyInterceptor extends LazyInitProxyFactory.ByteBuddyInterceptor { public ObjenesisByteBuddyInterceptor(Class<?> type, IProxyTargetLocator locator) { super(type, locator); diff --git a/wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisProxyFactory.java b/wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisProxyFactory.java index 050c255..89f79f0 100644 --- a/wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisProxyFactory.java +++ b/wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisProxyFactory.java @@ -16,16 +16,10 @@ */ package org.apache.wicket.proxy.objenesis; -import net.bytebuddy.NamingStrategy; import org.apache.wicket.proxy.IProxyTargetLocator; import org.apache.wicket.proxy.LazyInitProxyFactory; import org.objenesis.ObjenesisStd; -//import net.sf.cglib.core.NamingPolicy; -//import net.sf.cglib.proxy.Callback; -//import net.sf.cglib.proxy.Enhancer; -//import net.sf.cglib.proxy.Factory; - public class ObjenesisProxyFactory { private static final ObjenesisStd OBJENESIS = new ObjenesisStd(false); diff --git a/wicket-ioc/src/test/java/org/apache/wicket/injection/util/MockDependency.java b/wicket-ioc/src/test/java/org/apache/wicket/injection/util/MockDependency.java index cc22135..70daa3b 100644 --- a/wicket-ioc/src/test/java/org/apache/wicket/injection/util/MockDependency.java +++ b/wicket-ioc/src/test/java/org/apache/wicket/injection/util/MockDependency.java @@ -27,7 +27,7 @@ public class MockDependency private String message; /** - * Empty default constructor. It is required by cglib to create a proxy. + * Empty default constructor. It is required by byte-buddy to create a proxy. */ public MockDependency() { diff --git a/wicket-ioc/src/test/java/org/apache/wicket/proxy/PackagePrivateConcreteObject.java b/wicket-ioc/src/test/java/org/apache/wicket/proxy/PackagePrivateConcreteObject.java index 3b31e63..5f87e29 100644 --- a/wicket-ioc/src/test/java/org/apache/wicket/proxy/PackagePrivateConcreteObject.java +++ b/wicket-ioc/src/test/java/org/apache/wicket/proxy/PackagePrivateConcreteObject.java @@ -26,7 +26,7 @@ class PackagePrivateConcreteObject private String message; /** - * Empty default constructor. It is required by cglib to create a proxy. + * Empty default constructor. It is required by byte-buddy to create a proxy. */ public PackagePrivateConcreteObject() { diff --git a/wicket-ioc/src/test/java/org/apache/wicket/proxy/util/ConcreteObject.java b/wicket-ioc/src/test/java/org/apache/wicket/proxy/util/ConcreteObject.java index e36c269..cb45c47 100644 --- a/wicket-ioc/src/test/java/org/apache/wicket/proxy/util/ConcreteObject.java +++ b/wicket-ioc/src/test/java/org/apache/wicket/proxy/util/ConcreteObject.java @@ -27,7 +27,7 @@ public class ConcreteObject private String message; /** - * Empty default constructor. It is required by cglib to create a proxy. + * Empty default constructor. It is required by byte-buddy to create a proxy. */ public ConcreteObject() { diff --git a/wicket-jmx/pom.xml b/wicket-jmx/pom.xml index b827a78..67303ae 100644 --- a/wicket-jmx/pom.xml +++ b/wicket-jmx/pom.xml @@ -32,7 +32,6 @@ <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> - <version>1.11.12</version> </dependency> <dependency> <groupId>org.apache.wicket</groupId> diff --git a/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java b/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java index 653a93c..ac743c1 100644 --- a/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java +++ b/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java @@ -290,7 +290,7 @@ class SpringBeanWithGenericsTest @Bean public List<String> stringsList() { - return Arrays.asList("foo", "bar", "baz"); + return List.of("foo", "bar", "baz"); } @Bean