Skip to content

Commit ea8a416

Browse files
committed
Add handling of unwrapping for persistent collections
1 parent 0543bf1 commit ea8a416

File tree

3 files changed

+51
-3
lines changed

3 files changed

+51
-3
lines changed

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
1515
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
1616
import com.fasterxml.jackson.databind.ser.*;
17+
import com.fasterxml.jackson.databind.util.NameTransformer;
1718
import com.fasterxml.jackson.datatype.hibernate3.Hibernate3Module.Feature;
1819

1920
import org.hibernate.engine.PersistenceContext;
@@ -83,8 +84,13 @@ protected PersistentCollectionSerializer(PersistentCollectionSerializer base, Js
8384
_sessionFactory = base._sessionFactory;
8485
}
8586

87+
@Override
88+
public PersistentCollectionSerializer unwrappingSerializer(NameTransformer unwrapper) {
89+
return _withSerializer(_serializer.unwrappingSerializer(unwrapper));
90+
}
91+
8692
protected PersistentCollectionSerializer _withSerializer(JsonSerializer<?> ser) {
87-
if (ser == _serializer) {
93+
if ((ser == _serializer) || (ser == null)) {
8894
return this;
8995
}
9096
return new PersistentCollectionSerializer(this, ser);
@@ -171,6 +177,16 @@ public boolean isEmpty(SerializerProvider provider, Object value)
171177
return _serializer.isEmpty(provider, value);
172178
}
173179

180+
@Override
181+
public boolean isUnwrappingSerializer() {
182+
return _serializer.isUnwrappingSerializer();
183+
}
184+
185+
@Override
186+
public boolean usesObjectId() {
187+
return _serializer.usesObjectId();
188+
}
189+
174190
@Override
175191
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint)
176192
throws JsonMappingException

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
88
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
99
import com.fasterxml.jackson.databind.ser.ResolvableSerializer;
10+
import com.fasterxml.jackson.databind.util.NameTransformer;
1011
import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module.Feature;
1112

1213
import org.hibernate.FlushMode;
@@ -84,8 +85,13 @@ protected PersistentCollectionSerializer(PersistentCollectionSerializer base, Js
8485
_sessionFactory = base._sessionFactory;
8586
}
8687

88+
@Override
89+
public PersistentCollectionSerializer unwrappingSerializer(NameTransformer unwrapper) {
90+
return _withSerializer(_serializer.unwrappingSerializer(unwrapper));
91+
}
92+
8793
protected PersistentCollectionSerializer _withSerializer(JsonSerializer<?> ser) {
88-
if (ser == _serializer) {
94+
if ((ser == _serializer) || (ser == null)) {
8995
return this;
9096
}
9197
return new PersistentCollectionSerializer(this, ser);
@@ -171,6 +177,16 @@ public boolean isEmpty(SerializerProvider provider, Object value)
171177
return _serializer.isEmpty(provider, value);
172178
}
173179

180+
@Override
181+
public boolean isUnwrappingSerializer() {
182+
return _serializer.isUnwrappingSerializer();
183+
}
184+
185+
@Override
186+
public boolean usesObjectId() {
187+
return _serializer.usesObjectId();
188+
}
189+
174190
@Override
175191
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint)
176192
throws JsonMappingException

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
1414
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
1515
import com.fasterxml.jackson.databind.ser.ResolvableSerializer;
16+
import com.fasterxml.jackson.databind.util.NameTransformer;
1617
import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module.Feature;
1718

1819
import org.hibernate.FlushMode;
@@ -84,8 +85,13 @@ protected PersistentCollectionSerializer(PersistentCollectionSerializer base, Js
8485
_sessionFactory = base._sessionFactory;
8586
}
8687

88+
@Override
89+
public PersistentCollectionSerializer unwrappingSerializer(NameTransformer unwrapper) {
90+
return _withSerializer(_serializer.unwrappingSerializer(unwrapper));
91+
}
92+
8793
protected PersistentCollectionSerializer _withSerializer(JsonSerializer<?> ser) {
88-
if (ser == _serializer) {
94+
if ((ser == _serializer) || (ser == null)) {
8995
return this;
9096
}
9197
return new PersistentCollectionSerializer(this, ser);
@@ -173,6 +179,16 @@ public boolean isEmpty(SerializerProvider provider, Object value)
173179
return _serializer.isEmpty(provider, value);
174180
}
175181

182+
@Override
183+
public boolean isUnwrappingSerializer() {
184+
return _serializer.isUnwrappingSerializer();
185+
}
186+
187+
@Override
188+
public boolean usesObjectId() {
189+
return _serializer.usesObjectId();
190+
}
191+
176192
@Override
177193
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint)
178194
throws JsonMappingException

0 commit comments

Comments
 (0)