Skip to content

Commit 581936e

Browse files
committed
Merge branch '2.x' into 3.x
2 parents ed59236 + 2ea38b0 commit 581936e

File tree

8 files changed

+151
-0
lines changed

8 files changed

+151
-0
lines changed

src/test/java/module-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
opens tools.jackson.databind.deser.merge;
7474
opens tools.jackson.databind.deser.validate;
7575
opens tools.jackson.databind.ext;
76+
opens tools.jackson.databind.ext.cglib;
7677
opens tools.jackson.databind.ext.desktop;
7778
opens tools.jackson.databind.ext.jdk8;
7879
opens tools.jackson.databind.ext.jdk9;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package net.sf.cglib;
2+
3+
/**
4+
* A mock object to test if a method is returning cglib's
5+
* {@code Callback[] getCallbacks()} found on a cglib proxy object.
6+
* @author Rob Winch
7+
*/
8+
public class Callback {
9+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package net.sf.cglib;
2+
3+
/**
4+
* A mock Proxy object used to test writing a cglib proxy object.
5+
* @author Rob Winch
6+
*/
7+
public class MockedNetCglibProxy {
8+
9+
private final String propertyName;
10+
11+
public MockedNetCglibProxy(String propertyName) {
12+
this.propertyName = propertyName;
13+
}
14+
15+
public String getPropertyName() {
16+
return this.propertyName;
17+
}
18+
19+
public Callback[] getCallbacks() {
20+
return new Callback[] { new Callback(), new Callback() };
21+
}
22+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.hibernate.repackage.cglib;
2+
3+
/**
4+
* A mock object to test if a method is returning Hibernate's
5+
* {@code Callback[] getCallbacks()} found on a cglib proxy object.
6+
* NOTE: Hibernate repackages the Callback interface to this location.
7+
* @author Rob Winch
8+
*/
9+
public class Callback {
10+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.hibernate.repackage.cglib;
2+
3+
/**
4+
* A mock Proxy object used to test writing a Hibernate cglib proxy object.
5+
* @author Rob Winch
6+
*/
7+
public class MockedHibernateCglibProxy {
8+
9+
private final String propertyName;
10+
11+
public MockedHibernateCglibProxy(String propertyName) {
12+
this.propertyName = propertyName;
13+
}
14+
15+
public String getPropertyName() {
16+
return this.propertyName;
17+
}
18+
19+
public Callback[] getCallbacks() {
20+
return new Callback[] { new Callback(), new Callback() };
21+
}
22+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.springframework.cglib.proxy;
2+
3+
/**
4+
* A mock object to test if a method is returning Spring Framework's
5+
* {@code Callback[] getCallbacks()} found on a cglib proxy object.
6+
* NOTE: Spring repackages the Callback interface to this location.
7+
* @author Rob Winch
8+
*/
9+
public class Callback {
10+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.springframework.cglib.proxy;
2+
3+
/**
4+
* A mock Proxy object used to test writing a Springframework cglib proxy object.
5+
* @author Rob Winch
6+
*/
7+
public class MockedSpringCglibProxy {
8+
9+
private final String propertyName;
10+
11+
public MockedSpringCglibProxy(String propertyName) {
12+
this.propertyName = propertyName;
13+
}
14+
15+
public String getPropertyName() {
16+
return this.propertyName;
17+
}
18+
19+
public Callback[] getCallbacks() {
20+
return new Callback[] { new Callback(), new Callback() };
21+
}
22+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package tools.jackson.databind.ext.cglib;
2+
3+
import java.util.Collections;
4+
import java.util.Map;
5+
6+
import org.hibernate.repackage.cglib.MockedHibernateCglibProxy;
7+
import org.junit.jupiter.api.Test;
8+
import org.springframework.cglib.proxy.MockedSpringCglibProxy;
9+
10+
import tools.jackson.databind.ObjectMapper;
11+
import tools.jackson.databind.testutil.DatabindTestUtil;
12+
13+
import static org.junit.jupiter.api.Assertions.assertEquals;
14+
15+
import net.sf.cglib.MockedNetCglibProxy;
16+
17+
// [databind#5354] Test for filtering out CGLIB-generated properties
18+
public class CglibFiltering5354Test
19+
extends DatabindTestUtil
20+
{
21+
private final ObjectMapper MAPPER = newJsonMapper();
22+
23+
// https://github.com/FasterXML/jackson-databind/issues/5354
24+
@Test
25+
public void testWriteWithSpringCglibProxyDoesNotIncludeCallbacksProperty() throws Exception
26+
{
27+
// 20-Oct-2025, tatu: Temporarily disable until #5357 merged
28+
if (true) { return; }
29+
30+
MockedSpringCglibProxy mockedProxy = new MockedSpringCglibProxy("hello");
31+
String json = MAPPER.writeValueAsString(mockedProxy);
32+
Map<?, ?> properties = MAPPER.readValue(json, Map.class);
33+
assertEquals(Collections.singleton("propertyName"), properties.keySet());
34+
}
35+
36+
// https://github.com/FasterXML/jackson-databind/issues/5354
37+
//@Test
38+
public void testWriteWithHibernateCglibProxyDoesNotIncludeCallbacksProperty() throws Exception
39+
{
40+
MockedHibernateCglibProxy mockedProxy = new MockedHibernateCglibProxy("hello");
41+
String json = MAPPER.writeValueAsString(mockedProxy);
42+
Map<?, ?> properties = MAPPER.readValue(json, Map.class);
43+
assertEquals(Collections.singleton("propertyName"), properties.keySet());
44+
}
45+
46+
// https://github.com/FasterXML/jackson-databind/issues/5354
47+
//@Test
48+
public void testWriteWithNetCglibProxyDoesNotIncludeCallbacksProperty() throws Exception
49+
{
50+
MockedNetCglibProxy mockedProxy = new MockedNetCglibProxy("hello");
51+
String json = MAPPER.writeValueAsString(mockedProxy);
52+
Map<?, ?> properties = MAPPER.readValue(json, Map.class);
53+
assertEquals(Collections.singleton("propertyName"), properties.keySet());
54+
}
55+
}

0 commit comments

Comments
 (0)