Skip to content

Commit fc4ab3f

Browse files
committed
Fix #70
1 parent 7f48497 commit fc4ab3f

File tree

5 files changed

+72
-18
lines changed

5 files changed

+72
-18
lines changed

hibernate3/src/main/java/com/fasterxml/jackson/datatype/hibernate3/HibernateProxySerializer.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.fasterxml.jackson.core.*;
99
import com.fasterxml.jackson.databind.*;
1010
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
11+
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
1112
import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap;
1213

1314
/**
@@ -21,6 +22,7 @@
2122
*/
2223
public class HibernateProxySerializer
2324
extends JsonSerializer<HibernateProxy>
25+
implements ContextualSerializer
2426
{
2527
/**
2628
* Property that has proxy value to handle
@@ -44,10 +46,22 @@ public class HibernateProxySerializer
4446
public HibernateProxySerializer(boolean forceLazyLoading)
4547
{
4648
_forceLazyLoading = forceLazyLoading;
47-
_dynamicSerializers = PropertySerializerMap.emptyMap();
49+
_dynamicSerializers = PropertySerializerMap.emptyForProperties();
4850
_property = null;
4951
}
5052

53+
public HibernateProxySerializer(boolean forceLazyLoading, BeanProperty property)
54+
{
55+
_forceLazyLoading = forceLazyLoading;
56+
_dynamicSerializers = PropertySerializerMap.emptyForProperties();
57+
_property = property;
58+
}
59+
60+
@Override
61+
public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) {
62+
return new HibernateProxySerializer(this._forceLazyLoading);
63+
}
64+
5165
/*
5266
/**********************************************************************
5367
/* JsonSerializer impl

hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateProxySerializer.java

+23-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
package com.fasterxml.jackson.datatype.hibernate4;
22

3+
import java.io.IOException;
4+
import java.util.HashMap;
5+
36
import com.fasterxml.jackson.core.JsonGenerator;
47
import com.fasterxml.jackson.core.JsonProcessingException;
8+
59
import com.fasterxml.jackson.databind.BeanProperty;
610
import com.fasterxml.jackson.databind.JsonSerializer;
711
import com.fasterxml.jackson.databind.SerializerProvider;
812
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
13+
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
914
import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap;
15+
1016
import org.hibernate.engine.spi.Mapping;
1117
import org.hibernate.engine.spi.SessionImplementor;
1218
import org.hibernate.proxy.HibernateProxy;
1319
import org.hibernate.proxy.LazyInitializer;
1420

15-
import java.io.IOException;
16-
import java.util.HashMap;
17-
1821
/**
1922
* Serializer to use for values proxied using {@link org.hibernate.proxy.HibernateProxy}.
2023
*<p>
@@ -26,6 +29,7 @@
2629
*/
2730
public class HibernateProxySerializer
2831
extends JsonSerializer<HibernateProxy>
32+
implements ContextualSerializer
2933
{
3034
/**
3135
* Property that has proxy value to handle
@@ -50,21 +54,32 @@ public class HibernateProxySerializer
5054

5155
public HibernateProxySerializer(boolean forceLazyLoading)
5256
{
53-
this(forceLazyLoading, false, null);
57+
this(forceLazyLoading, false, null, null);
5458
}
5559

5660
public HibernateProxySerializer(boolean forceLazyLoading, boolean serializeIdentifier) {
57-
this(forceLazyLoading, serializeIdentifier, null);
61+
this(forceLazyLoading, serializeIdentifier, null, null);
5862
}
5963

6064
public HibernateProxySerializer(boolean forceLazyLoading, boolean serializeIdentifier, Mapping mapping) {
65+
this(forceLazyLoading, serializeIdentifier, mapping, null);
66+
}
67+
68+
public HibernateProxySerializer(boolean forceLazyLoading, boolean serializeIdentifier, Mapping mapping,
69+
BeanProperty property) {
6170
_forceLazyLoading = forceLazyLoading;
6271
_serializeIdentifier = serializeIdentifier;
6372
_mapping = mapping;
64-
_dynamicSerializers = PropertySerializerMap.emptyMap();
65-
_property = null;
73+
_dynamicSerializers = PropertySerializerMap.emptyForProperties();
74+
_property = property;
6675
}
67-
76+
77+
@Override
78+
public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) {
79+
return new HibernateProxySerializer(this._forceLazyLoading, _serializeIdentifier,
80+
_mapping, property);
81+
}
82+
6883
/*
6984
/**********************************************************************
7085
/* JsonSerializer impl

hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateProxySerializer.java

+23-9
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
package com.fasterxml.jackson.datatype.hibernate5;
22

3+
import java.io.IOException;
4+
import java.util.HashMap;
5+
36
import com.fasterxml.jackson.core.JsonGenerator;
47
import com.fasterxml.jackson.core.JsonProcessingException;
58
import com.fasterxml.jackson.databind.BeanProperty;
69
import com.fasterxml.jackson.databind.JsonSerializer;
710
import com.fasterxml.jackson.databind.SerializerProvider;
811
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
12+
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
913
import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap;
14+
1015
import org.hibernate.engine.spi.Mapping;
1116
import org.hibernate.engine.spi.SessionImplementor;
1217
import org.hibernate.proxy.HibernateProxy;
1318
import org.hibernate.proxy.LazyInitializer;
1419

15-
import java.io.IOException;
16-
import java.util.HashMap;
17-
1820
/**
1921
* Serializer to use for values proxied using {@link org.hibernate.proxy.HibernateProxy}.
2022
*<p>
@@ -26,6 +28,7 @@
2628
*/
2729
public class HibernateProxySerializer
2830
extends JsonSerializer<HibernateProxy>
31+
implements ContextualSerializer
2932
{
3033
/**
3134
* Property that has proxy value to handle
@@ -50,21 +53,32 @@ public class HibernateProxySerializer
5053

5154
public HibernateProxySerializer(boolean forceLazyLoading)
5255
{
53-
this(forceLazyLoading, false, null);
56+
this(forceLazyLoading, false, null, null);
5457
}
5558

5659
public HibernateProxySerializer(boolean forceLazyLoading, boolean serializeIdentifier) {
57-
this(forceLazyLoading, serializeIdentifier, null);
60+
this(forceLazyLoading, serializeIdentifier, null, null);
5861
}
5962

6063
public HibernateProxySerializer(boolean forceLazyLoading, boolean serializeIdentifier, Mapping mapping) {
64+
this(forceLazyLoading, serializeIdentifier, mapping, null);
65+
}
66+
67+
public HibernateProxySerializer(boolean forceLazyLoading, boolean serializeIdentifier, Mapping mapping,
68+
BeanProperty property) {
6169
_forceLazyLoading = forceLazyLoading;
6270
_serializeIdentifier = serializeIdentifier;
6371
_mapping = mapping;
64-
_dynamicSerializers = PropertySerializerMap.emptyMap();
65-
_property = null;
66-
}
67-
72+
_dynamicSerializers = PropertySerializerMap.emptyForProperties();
73+
_property = property;
74+
}
75+
76+
@Override
77+
public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) {
78+
return new HibernateProxySerializer(this._forceLazyLoading, _serializeIdentifier,
79+
_mapping, property);
80+
}
81+
6882
/*
6983
/**********************************************************************
7084
/* JsonSerializer impl

release-notes/CREDITS

+6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Hibernate module, version 2.x
44

55
Tatu Saloranta, [email protected]: author
66

7+
------------
78
Contributors
89
------------
910

@@ -21,3 +22,8 @@ Edouard Oger (eoger@github)
2122

2223
#67: Provide support for Hibernate 5.x
2324
(2.6.0)
25+
26+
Tiago Peruzzo (peruzzo@github)
27+
28+
#70: Infinite recursion due to `@JsonIgnoreProperties` not passed to property
29+
(2.6.5)

release-notes/VERSION

+5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ Project: jackson-datatype-hibernate
44
=== Releases ===
55
------------------------------------------------------------------------
66

7+
2.6.5 (not yet released)
8+
9+
#70: Infinite recursion due to `@JsonIgnoreProperties` not passed to property
10+
(reported, fix contributed by Tiago P)
11+
712
2.6.4 (07-Dec-2015)
813
2.6.3 (12-Oct-2015)
914
2.6.2 (15-Sep-2015)

0 commit comments

Comments
 (0)