Skip to content

Commit 91797a3

Browse files
committed
hibernate5
1 parent b1553ad commit 91797a3

File tree

9 files changed

+31
-29
lines changed

9 files changed

+31
-29
lines changed

hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateProxySerializer.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package tools.jackson.datatype.hibernate5;
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;
@@ -17,6 +16,7 @@
1716
import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
1817
import tools.jackson.databind.jsontype.TypeSerializer;
1918
import tools.jackson.databind.ser.impl.PropertySerializerMap;
19+
import tools.jackson.databind.type.TypeFactory;
2020
import tools.jackson.databind.util.NameTransformer;
2121

2222
import org.hibernate.engine.spi.Mapping;
@@ -171,7 +171,6 @@ public boolean isEmpty(SerializationContext provider, HibernateProxy value) {
171171

172172
@Override
173173
public void serialize(HibernateProxy value, JsonGenerator g, SerializationContext provider)
174-
throws IOException
175174
{
176175
Object proxiedValue = findProxied(value);
177176
// TODO: figure out how to suppress nulls, if necessary? (too late for that here)
@@ -185,7 +184,6 @@ public void serialize(HibernateProxy value, JsonGenerator g, SerializationContex
185184
@Override
186185
public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializationContext provider,
187186
TypeSerializer typeSer)
188-
throws IOException
189187
{
190188
Object proxiedValue = findProxied(value);
191189
if (proxiedValue == null) {
@@ -221,7 +219,6 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t
221219
*/
222220

223221
protected ValueSerializer<Object> findSerializer(SerializationContext provider, Object value)
224-
throws IOException
225222
{
226223
/* TODO: if Hibernate did use generics, or we wanted to allow use of Jackson
227224
* annotations to indicate type, should take that into account.
@@ -235,7 +232,11 @@ protected ValueSerializer<Object> findSerializer(SerializationContext provider,
235232
* really anyone's guess at this point; proxies can exist at any level?
236233
*/
237234
PropertySerializerMap.SerializerAndMapResult result =
238-
_dynamicSerializers.findAndAddPrimarySerializer(type, provider, _property);
235+
_dynamicSerializers.findAndAddPrimarySerializer(
236+
//TODO find better way to get JavaType
237+
TypeFactory.createDefaultInstance().unsafeSimpleType(type),
238+
provider,
239+
_property);
239240
if (_dynamicSerializers != result.map) {
240241
_dynamicSerializers = result.map;
241242
}

hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializers.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package tools.jackson.datatype.hibernate5;
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 HibernateSerializers(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)) {

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

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

3-
import java.io.IOException;
43
import java.util.*;
54

65
import javax.persistence.*;
@@ -9,6 +8,7 @@
98
import tools.jackson.databind.*;
109
import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
1110
import tools.jackson.databind.jsontype.TypeSerializer;
11+
import tools.jackson.databind.ser.std.StdContainerSerializer;
1212
import tools.jackson.databind.util.NameTransformer;
1313
import tools.jackson.datatype.hibernate5.Hibernate5Module.Feature;
1414

@@ -29,7 +29,7 @@
2929
* and <code>Map</code> types (unlike in JDK).
3030
*/
3131
public class PersistentCollectionSerializer
32-
extends ContainerSerializer<Object>
32+
extends StdContainerSerializer<Object>
3333
{
3434
private static final long serialVersionUID = 1L; // since 2.7
3535

@@ -62,7 +62,7 @@ public class PersistentCollectionSerializer
6262
@SuppressWarnings("unchecked")
6363
public PersistentCollectionSerializer(JavaType containerType,
6464
ValueSerializer<?> serializer, int features, SessionFactory sessionFactory) {
65-
super(containerType);
65+
super(containerType, null);
6666
_originalType = containerType;
6767
_serializer = (ValueSerializer<Object>) serializer;
6868
_features = features;
@@ -96,9 +96,9 @@ protected PersistentCollectionSerializer _withSerializer(ValueSerializer<?> ser)
9696

9797
// from `ContainerSerializer`
9898
@Override
99-
protected ContainerSerializer<?> _withValueTypeSerializer(TypeSerializer vts)
99+
protected StdContainerSerializer<?> _withValueTypeSerializer(TypeSerializer vts)
100100
{
101-
ContainerSerializer<?> ser0 = _containerSerializer();
101+
StdContainerSerializer<?> ser0 = _containerSerializer();
102102
if (ser0 != null) {
103103
return _withSerializer(ser0.withValueTypeSerializer(vts));
104104
}
@@ -117,9 +117,7 @@ protected ContainerSerializer<?> _withValueTypeSerializer(TypeSerializer vts)
117117
@Override
118118
public void resolve(SerializationContext provider) throws DatabindException
119119
{
120-
if (_serializer instanceof ResolvableSerializer) {
121-
((ResolvableSerializer) _serializer).resolve(provider);
122-
}
120+
_serializer.resolve(provider);
123121
}
124122

125123
/**
@@ -186,7 +184,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t
186184

187185
@Override
188186
public JavaType getContentType() {
189-
ContainerSerializer<?> ser = _containerSerializer();
187+
StdContainerSerializer<?> ser = _containerSerializer();
190188
if (ser != null) {
191189
return ser.getContentType();
192190
}
@@ -195,7 +193,7 @@ public JavaType getContentType() {
195193

196194
@Override
197195
public ValueSerializer<?> getContentSerializer() {
198-
ContainerSerializer<?> ser = _containerSerializer();
196+
StdContainerSerializer<?> ser = _containerSerializer();
199197
if (ser != null) {
200198
return ser.getContentSerializer();
201199
}
@@ -222,7 +220,6 @@ public boolean hasSingleElement(Object value) {
222220

223221
@Override
224222
public void serialize(Object value, JsonGenerator g, SerializationContext provider)
225-
throws IOException
226223
{
227224
if (value instanceof PersistentCollection) {
228225
value = findLazyValue((PersistentCollection) value);
@@ -243,7 +240,6 @@ public void serialize(Object value, JsonGenerator g, SerializationContext provid
243240
@Override
244241
public void serializeWithType(Object value, JsonGenerator g, SerializationContext provider,
245242
TypeSerializer typeSer)
246-
throws IOException
247243
{
248244
if (value instanceof PersistentCollection) {
249245
value = findLazyValue((PersistentCollection) value);
@@ -272,9 +268,9 @@ public void serializeWithType(Object value, JsonGenerator g, SerializationContex
272268
/**********************************************************************
273269
*/
274270

275-
protected ContainerSerializer<?> _containerSerializer() {
276-
if (_serializer instanceof ContainerSerializer) {
277-
return (ContainerSerializer<?>) _serializer;
271+
protected StdContainerSerializer<?> _containerSerializer() {
272+
if (_serializer instanceof StdContainerSerializer stdContainerSerializer) {
273+
return stdContainerSerializer;
278274
}
279275
return null;
280276
}

hibernate5/src/test/java/tools/jackson/datatype/hibernate5/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

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
import javax.persistence.EntityManagerFactory;
77
import javax.persistence.Persistence;
88

9-
import tools.jackson.core.JsonProcessingException;
9+
import tools.jackson.core.JacksonException;
1010
import tools.jackson.databind.ObjectMapper;
11+
import tools.jackson.databind.json.JsonMapper;
1112
import tools.jackson.datatype.hibernate5.Hibernate5Module.Feature;
1213
import tools.jackson.datatype.hibernate5.data.Customer;
1314
import tools.jackson.datatype.hibernate5.data.Payment;
@@ -63,10 +64,10 @@ public void testGetCustomerJson() throws Exception
6364
}
6465

6566
@Test
66-
public void testSerializeIdentifierFeature() throws JsonProcessingException {
67+
public void testSerializeIdentifierFeature() throws JacksonException {
6768
Hibernate5Module module = new Hibernate5Module();
6869
module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS);
69-
ObjectMapper objectMapper = new ObjectMapper().registerModule(module);
70+
ObjectMapper objectMapper = JsonMapper.builder().addModule(module).build();
7071

7172
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit");
7273
try {

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

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

99
import tools.jackson.databind.ObjectMapper;
10+
import tools.jackson.databind.json.JsonMapper;
1011

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

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

4445
private String mapWithHibernateModule(Object object) throws Exception {
45-
return new ObjectMapper().registerModule(new Hibernate5Module()).writeValueAsString(object);
46+
return JsonMapper.builder().addModule(new Hibernate5Module()).build().writeValueAsString(object);
4647
}
4748

4849
private String mapWithoutHibernateModule(Object object) throws Exception {

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

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

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

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

@@ -38,7 +39,7 @@ public void testSimpleTransient() throws Exception
3839
// and then with Transient disabled
3940
Hibernate5Module mod = hibernateModule(false);
4041
mod.disable(Hibernate5Module.Feature.USE_TRANSIENT_ANNOTATION);
41-
mapper = new ObjectMapper().registerModule(mod);
42+
mapper = JsonMapper.builder().addModule(mod).build();
4243

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

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

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

33
import com.fasterxml.jackson.annotation.JsonCreator;
44
import com.fasterxml.jackson.annotation.JsonUnwrapped;
5-
import tools.jackson.core.JsonProcessingException;
5+
import tools.jackson.core.JacksonException;
66
import tools.jackson.core.type.TypeReference;
77
import tools.jackson.databind.ObjectMapper;
88
import tools.jackson.datatype.hibernate5.data.Customer;
@@ -39,7 +39,7 @@ public T getContent()
3939
}
4040

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

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
<modules>
1717
<!--
1818
<module>hibernate4</module>
19-
<module>hibernate5</module>
2019
-->
20+
<module>hibernate5</module>
2121
<!--
2222
<module>hibernate5_2-test</module>
2323
-->

0 commit comments

Comments
 (0)