Skip to content

Commit bbb9582

Browse files
authored
Change no longer supported CGLIB to ByteBuddy - 5x test dependency (#208)
2 parents 3eec03c + a2f1990 commit bbb9582

File tree

11 files changed

+46
-58
lines changed

11 files changed

+46
-58
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
<guava.version>33.0.0-jre</guava.version>
9191
<codegen.version>0.6.8</codegen.version>
9292
<mysema.lang.version>0.2.4</mysema.lang.version>
93-
<cglib.version>3.3.0</cglib.version>
93+
<byte-buddy.version>1.14.10</byte-buddy.version>
9494
<slf4j.version>2.0.9</slf4j.version>
9595
<surefire.version>3.2.3</surefire.version>
9696
<animal-sniffer.version>1.23</animal-sniffer.version>

querydsl-codegen-utils/src/main/java/com/querydsl/codegen/utils/support/ClassUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ public static Class<?> normalize(Class<?> clazz) {
7979
return Collection.class;
8080
} else if (Map.class.isAssignableFrom(clazz)) {
8181
return Map.class;
82-
// check for CGLIB generated classes
83-
} else if (clazz.getName().contains("$$")) {
82+
// check for Easy Mock or Byte Buddy generated classes
83+
} else if (clazz.getName().contains("$$") || clazz.getName().contains("$ByteBuddy$")) {
8484
Class<?> zuper = clazz.getSuperclass();
8585
if (zuper != null && !Object.class.equals(zuper)) {
8686
return zuper;

querydsl-collections/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@
7171
</dependency>
7272

7373
<dependency>
74-
<groupId>cglib</groupId>
75-
<artifactId>cglib</artifactId>
76-
<version>${cglib.version}</version>
74+
<groupId>net.bytebuddy</groupId>
75+
<artifactId>byte-buddy</artifactId>
76+
<version>${byte-buddy.version}</version>
7777
<scope>test</scope>
7878
</dependency>
7979

querydsl-core/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@
4141

4242
<!-- alias dependencies -->
4343
<dependency>
44-
<groupId>cglib</groupId>
45-
<artifactId>cglib</artifactId>
46-
<version>${cglib.version}</version>
44+
<groupId>net.bytebuddy</groupId>
45+
<artifactId>byte-buddy</artifactId>
46+
<version>${byte-buddy.version}</version>
4747
<optional>true</optional>
4848
</dependency>
4949

querydsl-core/src/main/java/com/querydsl/core/alias/AliasFactory.java

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717
import com.querydsl.core.types.Expression;
1818
import com.querydsl.core.types.Path;
1919
import com.querydsl.core.types.PathMetadataFactory;
20+
import java.lang.reflect.InvocationTargetException;
2021
import java.util.Collections;
2122
import java.util.Map;
2223
import java.util.WeakHashMap;
2324
import java.util.concurrent.ConcurrentHashMap;
24-
import net.sf.cglib.proxy.Enhancer;
25-
import net.sf.cglib.proxy.MethodInterceptor;
25+
import net.bytebuddy.ByteBuddy;
26+
import net.bytebuddy.implementation.MethodDelegation;
27+
import net.bytebuddy.matcher.ElementMatchers;
2628
import org.jetbrains.annotations.Nullable;
2729

2830
/**
@@ -98,21 +100,26 @@ public <A> A createAliasForVariable(Class<A> cl, String var) {
98100
* @param path underlying expression
99101
* @return proxy instance
100102
*/
101-
@SuppressWarnings("unchecked")
102103
protected <A> A createProxy(Class<A> cl, Expression<?> path) {
103-
Enhancer enhancer = new Enhancer();
104-
enhancer.setClassLoader(AliasFactory.class.getClassLoader());
105-
if (cl.isInterface()) {
106-
enhancer.setInterfaces(new Class<?>[] {cl, ManagedObject.class});
107-
} else {
108-
enhancer.setSuperclass(cl);
109-
enhancer.setInterfaces(new Class<?>[] {ManagedObject.class});
104+
try {
105+
return new ByteBuddy()
106+
.subclass(cl)
107+
.implement(ManagedObject.class)
108+
.method(ElementMatchers.any())
109+
.intercept(
110+
MethodDelegation.to(
111+
new PropertyAccessInvocationHandler(path, this, pathFactory, typeSystem)))
112+
.make()
113+
.load(AliasFactory.class.getClassLoader())
114+
.getLoaded()
115+
.getDeclaredConstructor()
116+
.newInstance();
117+
} catch (InvocationTargetException
118+
| InstantiationException
119+
| IllegalAccessException
120+
| NoSuchMethodException e) {
121+
throw new RuntimeException(e);
110122
}
111-
// creates one handler per proxy
112-
MethodInterceptor handler =
113-
new PropertyAccessInvocationHandler(path, this, pathFactory, typeSystem);
114-
enhancer.setCallback(handler);
115-
return (A) enhancer.create();
116123
}
117124

118125
/**

querydsl-core/src/main/java/com/querydsl/core/alias/ManagedObject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import com.querydsl.core.types.Path;
1717

18-
/** {@code ManagedObject} is a tagging interface for CGLIB alias proxies */
18+
/** {@code ManagedObject} is a tagging interface for Byte Buddy alias proxies */
1919
public interface ManagedObject {
2020

2121
/**

querydsl-core/src/main/java/com/querydsl/core/alias/PropertyAccessInvocationHandler.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@
1313
*/
1414
package com.querydsl.core.alias;
1515

16-
import com.querydsl.core.types.*;
16+
import com.querydsl.core.types.Expression;
17+
import com.querydsl.core.types.ParameterizedExpression;
18+
import com.querydsl.core.types.Path;
19+
import com.querydsl.core.types.PathMetadata;
20+
import com.querydsl.core.types.PathMetadataFactory;
1721
import com.querydsl.core.util.BeanUtils;
1822
import com.querydsl.core.util.ReflectionUtils;
1923
import java.lang.reflect.Array;
@@ -27,17 +31,19 @@
2731
import java.util.Date;
2832
import java.util.Map;
2933
import java.util.concurrent.ConcurrentHashMap;
30-
import net.sf.cglib.proxy.MethodInterceptor;
31-
import net.sf.cglib.proxy.MethodProxy;
34+
import net.bytebuddy.implementation.bind.annotation.AllArguments;
35+
import net.bytebuddy.implementation.bind.annotation.Origin;
36+
import net.bytebuddy.implementation.bind.annotation.RuntimeType;
37+
import net.bytebuddy.implementation.bind.annotation.This;
3238
import org.jetbrains.annotations.Nullable;
3339

3440
/**
35-
* {@code PropertyAccessInvocationHandler} is the main InvocationHandler class for the CGLIB alias
36-
* proxies
41+
* {@code PropertyAccessInvocationHandler} is the main InvocationHandler class for the Byte Buddy
42+
* alias proxies
3743
*
3844
* @author tiwe
3945
*/
40-
class PropertyAccessInvocationHandler implements MethodInterceptor {
46+
public class PropertyAccessInvocationHandler {
4147

4248
private static final int RETURN_VALUE = 42;
4349

@@ -65,9 +71,8 @@ class PropertyAccessInvocationHandler implements MethodInterceptor {
6571
}
6672

6773
// CHECKSTYLE:OFF
68-
@Override
69-
public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy)
70-
throws Throwable {
74+
@RuntimeType
75+
public Object intercept(@This Object proxy, @AllArguments Object[] args, @Origin Method method) {
7176
// CHECKSTYLE:ON
7277
Object rv = null;
7378

querydsl-jpa/pom.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,6 @@
9898
<version>${jodatime.version}</version>
9999
<scope>test</scope>
100100
</dependency>
101-
<dependency>
102-
<groupId>cglib</groupId>
103-
<artifactId>cglib</artifactId>
104-
<version>${cglib.version}</version>
105-
<scope>test</scope>
106-
</dependency>
107101
<dependency>
108102
<groupId>org.eclipse.persistence</groupId>
109103
<artifactId>eclipselink</artifactId>

querydsl-lucene3/pom.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,6 @@
5353
</dependency>
5454

5555
<!-- test -->
56-
<dependency>
57-
<groupId>cglib</groupId>
58-
<artifactId>cglib</artifactId>
59-
<version>${cglib.version}</version>
60-
<scope>test</scope>
61-
</dependency>
6256
<dependency>
6357
<groupId>io.github.openfeign.querydsl</groupId>
6458
<artifactId>querydsl-core</artifactId>

querydsl-sql-spatial/pom.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,6 @@
5858
<version>${jodatime.version}</version>
5959
<scope>test</scope>
6060
</dependency>
61-
<dependency>
62-
<groupId>cglib</groupId>
63-
<artifactId>cglib</artifactId>
64-
<version>${cglib.version}</version>
65-
<scope>test</scope>
66-
</dependency>
6761
<dependency>
6862
<groupId>org.hsqldb</groupId>
6963
<artifactId>hsqldb</artifactId>

0 commit comments

Comments
 (0)