Skip to content

Commit af2241c

Browse files
committed
Fix #922
1 parent 5183922 commit af2241c

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

release-notes/VERSION

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Project: jackson-databind
1212
#899: Problem serializing `ObjectReader` (and possibly `ObjectMapper`)
1313
#913: ObjectMapper.copy does not preserve MappingJsonFactory features
1414
(reported, fixed by Daniel W)
15+
#922: ObjectMapper.copy() does not preserve _registeredModuleTypes
1516

1617
2.6.1 (09-Aug-2015)
1718

src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,14 @@ protected ObjectMapper(ObjectMapper src)
481481

482482
// Default serializer factory is stateless, can just assign
483483
_serializerFactory = src._serializerFactory;
484+
485+
// as per [databind#922], make sure to copy registered modules as appropriate
486+
Set<Object> reg = _registeredModuleTypes;
487+
if (reg == null) {
488+
_registeredModuleTypes = null;
489+
} else {
490+
_registeredModuleTypes = new LinkedHashSet<Object>(reg);
491+
}
484492
}
485493

486494
/**
@@ -681,7 +689,9 @@ public ObjectMapper registerModule(Module module)
681689
Object typeId = module.getTypeId();
682690
if (typeId != null) {
683691
if (_registeredModuleTypes == null) {
684-
_registeredModuleTypes = new HashSet<Object>();
692+
// plus let's keep them in order too, easier to debug or expose
693+
// in registration order if that matter
694+
_registeredModuleTypes = new LinkedHashSet<Object>();
685695
}
686696
// try adding; if already had it, should skip
687697
if (!_registeredModuleTypes.add(typeId)) {

0 commit comments

Comments
 (0)