Skip to content

Commit b1553ad

Browse files
committed
hibernate6
1 parent dd66085 commit b1553ad

File tree

11 files changed

+35
-28
lines changed

11 files changed

+35
-28
lines changed

hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package tools.jackson.datatype.hibernate6;
22

33
import java.beans.Introspector;
4-
import java.io.IOException;
54
import java.lang.reflect.Field;
65
import java.lang.reflect.Method;
76
import java.util.HashMap;
@@ -22,6 +21,7 @@
2221
import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
2322
import tools.jackson.databind.jsontype.TypeSerializer;
2423
import tools.jackson.databind.ser.impl.PropertySerializerMap;
24+
import tools.jackson.databind.type.TypeFactory;
2525
import tools.jackson.databind.util.NameTransformer;
2626

2727
import jakarta.persistence.EntityNotFoundException;
@@ -130,7 +130,6 @@ public boolean isEmpty(SerializationContext provider, HibernateProxy value) {
130130

131131
@Override
132132
public void serialize(HibernateProxy value, JsonGenerator g, SerializationContext provider)
133-
throws IOException
134133
{
135134
Object proxiedValue = findProxied(value);
136135
// TODO: figure out how to suppress nulls, if necessary? (too late for that here)
@@ -144,7 +143,6 @@ public void serialize(HibernateProxy value, JsonGenerator g, SerializationContex
144143
@Override
145144
public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializationContext provider,
146145
TypeSerializer typeSer)
147-
throws IOException
148146
{
149147
Object proxiedValue = findProxied(value);
150148
if (proxiedValue == null) {
@@ -180,7 +178,6 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t
180178
*/
181179

182180
protected ValueSerializer<Object> findSerializer(SerializationContext provider, Object value)
183-
throws IOException
184181
{
185182
/* TODO: if Hibernate did use generics, or we wanted to allow use of Jackson
186183
* annotations to indicate type, should take that into account.
@@ -194,7 +191,11 @@ protected ValueSerializer<Object> findSerializer(SerializationContext provider,
194191
* really anyone's guess at this point; proxies can exist at any level?
195192
*/
196193
PropertySerializerMap.SerializerAndMapResult result =
197-
_dynamicSerializers.findAndAddPrimarySerializer(type, provider, _property);
194+
_dynamicSerializers.findAndAddPrimarySerializer(
195+
//TODO find better way to get JavaType
196+
TypeFactory.createDefaultInstance().unsafeSimpleType(type),
197+
provider,
198+
_property);
198199
if (_dynamicSerializers != result.map) {
199200
_dynamicSerializers = result.map;
200201
}

hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Serializers.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package tools.jackson.datatype.hibernate6;
22

3+
import com.fasterxml.jackson.annotation.JsonFormat;
34
import tools.jackson.databind.BeanDescription;
45
import tools.jackson.databind.JavaType;
56
import tools.jackson.databind.ValueSerializer;
@@ -31,7 +32,7 @@ public Hibernate6Serializers(Mapping mapping, int features)
3132

3233
@Override
3334
public ValueSerializer<?> findSerializer(SerializationConfig config,
34-
JavaType type, BeanDescription.Supplier beanDesc)
35+
JavaType type, BeanDescription.Supplier beanDesc, JsonFormat.Value formatOverrides)
3536
{
3637
Class<?> raw = type.getRawClass();
3738
if (HibernateProxy.class.isAssignableFrom(raw)) {

hibernate6/src/main/java/tools/jackson/datatype/hibernate6/PersistentCollectionSerializer.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import tools.jackson.databind.*;
1919
import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
2020
import tools.jackson.databind.jsontype.TypeSerializer;
21+
import tools.jackson.databind.ser.std.StdContainerSerializer;
2122
import tools.jackson.databind.util.NameTransformer;
2223

2324
import jakarta.persistence.ElementCollection;
@@ -34,7 +35,7 @@
3435
* and <code>Map</code> types (unlike in JDK).
3536
*/
3637
public class PersistentCollectionSerializer
37-
extends ContainerSerializer<Object>
38+
extends StdContainerSerializer<Object>
3839
{
3940
private static final long serialVersionUID = 1L;
4041

@@ -65,7 +66,7 @@ public class PersistentCollectionSerializer
6566
@SuppressWarnings("unchecked")
6667
public PersistentCollectionSerializer(JavaType containerType,
6768
ValueSerializer<?> serializer, int features, SessionFactory sessionFactory) {
68-
super(containerType);
69+
super(containerType, null);
6970
_originalType = containerType;
7071
_serializer = (ValueSerializer<Object>) serializer;
7172
_features = features;
@@ -96,9 +97,9 @@ protected PersistentCollectionSerializer _withSerializer(ValueSerializer<?> ser)
9697

9798
// from `ContainerSerializer`
9899
@Override
99-
protected ContainerSerializer<?> _withValueTypeSerializer(TypeSerializer vts)
100+
protected StdContainerSerializer<?> _withValueTypeSerializer(TypeSerializer vts)
100101
{
101-
ContainerSerializer<?> ser0 = _containerSerializer();
102+
StdContainerSerializer<?> ser0 = _containerSerializer();
102103
if (ser0 != null) {
103104
return _withSerializer(ser0.withValueTypeSerializer(vts));
104105
}
@@ -184,7 +185,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t
184185

185186
@Override
186187
public JavaType getContentType() {
187-
ContainerSerializer<?> ser = _containerSerializer();
188+
StdContainerSerializer<?> ser = _containerSerializer();
188189
if (ser != null) {
189190
return ser.getContentType();
190191
}
@@ -193,7 +194,7 @@ public JavaType getContentType() {
193194

194195
@Override
195196
public ValueSerializer<?> getContentSerializer() {
196-
ContainerSerializer<?> ser = _containerSerializer();
197+
StdContainerSerializer<?> ser = _containerSerializer();
197198
if (ser != null) {
198199
return ser.getContentSerializer();
199200
}
@@ -220,7 +221,6 @@ public boolean hasSingleElement(Object value) {
220221

221222
@Override
222223
public void serialize(Object value, JsonGenerator g, SerializationContext provider)
223-
throws IOException
224224
{
225225
if (value instanceof PersistentCollection) {
226226
value = findLazyValue((PersistentCollection) value);
@@ -241,7 +241,6 @@ public void serialize(Object value, JsonGenerator g, SerializationContext provid
241241
@Override
242242
public void serializeWithType(Object value, JsonGenerator g, SerializationContext provider,
243243
TypeSerializer typeSer)
244-
throws IOException
245244
{
246245
if (value instanceof PersistentCollection) {
247246
value = findLazyValue((PersistentCollection) value);
@@ -270,9 +269,9 @@ public void serializeWithType(Object value, JsonGenerator g, SerializationContex
270269
/**********************************************************************
271270
*/
272271

273-
protected ContainerSerializer<?> _containerSerializer() {
274-
if (_serializer instanceof ContainerSerializer) {
275-
return (ContainerSerializer<?>) _serializer;
272+
protected StdContainerSerializer<?> _containerSerializer() {
273+
if (_serializer instanceof StdContainerSerializer stdContainerSerializer) {
274+
return stdContainerSerializer;
276275
}
277276
return null;
278277
}

hibernate6/src/test/java/tools/jackson/datatype/hibernate6/InclusionTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import com.fasterxml.jackson.annotation.JsonInclude.Include;
88
import tools.jackson.databind.ObjectMapper;
9+
import tools.jackson.databind.json.JsonMapper;
910

1011
import static org.junit.jupiter.api.Assertions.assertEquals;
1112

hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import java.util.Map;
44
import java.util.Set;
55

6+
import tools.jackson.databind.json.JsonMapper;
67
import tools.jackson.datatype.hibernate6.data.Customer;
78
import tools.jackson.datatype.hibernate6.data.Payment;
89
import org.hibernate.Hibernate;
910

1011
import org.junit.jupiter.api.Test;
1112

12-
import tools.jackson.core.JsonProcessingException;
13+
import tools.jackson.core.JacksonException;
1314
import tools.jackson.databind.ObjectMapper;
1415
import tools.jackson.datatype.hibernate6.Hibernate6Module.Feature;
1516

@@ -64,10 +65,13 @@ public void testGetCustomerJson() throws Exception
6465
}
6566

6667
@Test
67-
public void testSerializeIdentifierFeature() throws JsonProcessingException {
68+
public void testSerializeIdentifierFeature() throws JacksonException {
6869
Hibernate6Module module = new Hibernate6Module();
6970
module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS);
70-
ObjectMapper objectMapper = new ObjectMapper().registerModule(module);
71+
ObjectMapper objectMapper =
72+
JsonMapper.builder()
73+
.addModule(module)
74+
.build();
7175

7276
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit");
7377
try {

hibernate6/src/test/java/tools/jackson/datatype/hibernate6/OneToManyTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.junit.jupiter.api.Test;
99

1010
import tools.jackson.databind.ObjectMapper;
11+
import tools.jackson.databind.json.JsonMapper;
1112

1213
import static org.junit.jupiter.api.Assertions.assertEquals;
1314

@@ -43,7 +44,7 @@ public void testMapWithOneToMany() throws Exception {
4344
}
4445

4546
private String mapWithHibernateModule(Object object) throws Exception {
46-
return new ObjectMapper().registerModule(new Hibernate6Module()).writeValueAsString(object);
47+
return JsonMapper.builder().addModule(new Hibernate6Module()).build().writeValueAsString(object);
4748
}
4849

4950
private String mapWithoutHibernateModule(Object object) throws Exception {

hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TransientTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import jakarta.persistence.Transient;
77
import org.junit.jupiter.api.Test;
8+
import tools.jackson.databind.json.JsonMapper;
89

910
import static org.junit.jupiter.api.Assertions.assertEquals;
1011

@@ -37,7 +38,7 @@ public void testSimpleTransient() throws Exception
3738
// and then with Transient disabled
3839
Hibernate6Module mod = hibernateModule(false);
3940
mod.disable(Hibernate6Module.Feature.USE_TRANSIENT_ANNOTATION);
40-
mapper = new ObjectMapper().registerModule(mod);
41+
mapper = JsonMapper.builder().addModule(mod).build();
4142

4243
assertEquals(aposToQuotes("{'a':1,'b':2}"), mapper.writeValueAsString(new WithTransient()));
4344
}

hibernate6/src/test/java/tools/jackson/datatype/hibernate6/UnwrappedTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import com.fasterxml.jackson.annotation.JsonCreator;
88
import com.fasterxml.jackson.annotation.JsonUnwrapped;
9-
import tools.jackson.core.JsonProcessingException;
9+
import tools.jackson.core.JacksonException;
1010
import tools.jackson.core.type.TypeReference;
1111
import tools.jackson.databind.ObjectMapper;
1212

@@ -40,7 +40,7 @@ public T getContent()
4040
}
4141

4242
@Test
43-
public void testSimpleUnwrapped() throws JsonProcessingException
43+
public void testSimpleUnwrapped() throws JacksonException
4444
{
4545
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit");
4646
try {

hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package tools.jackson.datatype.hibernate7;
22

33
import java.beans.Introspector;
4-
import java.io.IOException;
54
import java.lang.reflect.Field;
65
import java.lang.reflect.Method;
76
import java.util.HashMap;

hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PersistentCollectionSerializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,8 @@ public void serializeWithType(Object value, JsonGenerator g, SerializationContex
270270
*/
271271

272272
protected StdContainerSerializer<?> _containerSerializer() {
273-
if (_serializer instanceof StdContainerSerializer) {
274-
return (StdContainerSerializer<?>) _serializer;
273+
if (_serializer instanceof StdContainerSerializer stdContainerSerializer) {
274+
return stdContainerSerializer;
275275
}
276276
return null;
277277
}

0 commit comments

Comments
 (0)