Skip to content

Commit 42aa7f4

Browse files
committed
Minor tweaks wrt #2432
1 parent e47c903 commit 42aa7f4

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

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

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,24 @@ public Version version() {
768768
public ObjectMapper registerModule(Module module)
769769
{
770770
_assertNotNull("module", module);
771+
// Let's ensure we have access to name and version information,
772+
// even if we do not have immediate use for either. This way we know
773+
// that they will be available from beginning
774+
String name = module.getModuleName();
775+
if (name == null) {
776+
throw new IllegalArgumentException("Module without defined name");
777+
}
778+
Version version = module.version();
779+
if (version == null) {
780+
throw new IllegalArgumentException("Module without defined version");
781+
}
782+
783+
// [databind#2432]: Modules may depend on other modules; if so, register those first
784+
for (Module dep : module.getDependencies()) {
785+
registerModule(dep);
786+
}
787+
788+
// then module itself
771789
if (isEnabled(MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS)) {
772790
Object typeId = module.getTypeId();
773791
if (typeId != null) {
@@ -782,24 +800,6 @@ public ObjectMapper registerModule(Module module)
782800
}
783801
}
784802
}
785-
786-
/* Let's ensure we have access to name and version information,
787-
* even if we do not have immediate use for either. This way we know
788-
* that they will be available from beginning
789-
*/
790-
String name = module.getModuleName();
791-
if (name == null) {
792-
throw new IllegalArgumentException("Module without defined name");
793-
}
794-
Version version = module.version();
795-
if (version == null) {
796-
throw new IllegalArgumentException("Module without defined version");
797-
}
798-
799-
// [databind#2432]: Modules may depend on other modules; if so, register those first
800-
for (Module dep : module.getDependencies()) {
801-
registerModule(dep);
802-
}
803803

804804
// And then call registration
805805
module.setupModule(new Module.SetupContext()

src/test/java/com/fasterxml/jackson/databind/ObjectMapperTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -412,8 +412,9 @@ public void testDataInputViaMapper() throws Exception
412412
assertNotNull(n);
413413
}
414414

415+
@SuppressWarnings("serial")
415416
public void testRegisterDependentModules() {
416-
ObjectMapper objectMapper = new ObjectMapper();
417+
ObjectMapper objectMapper = newJsonMapper();
417418

418419
final SimpleModule secondModule = new SimpleModule() {
419420
@Override
@@ -437,14 +438,14 @@ public Iterable<? extends Module> getDependencies() {
437438

438439
@Override
439440
public Object getTypeId() {
440-
return "first";
441+
return "main";
441442
}
442443
};
443444

444445
objectMapper.registerModule(firstModule);
445446

446447
assertEquals(
447-
new HashSet<>(Arrays.asList("first", "second", "third")),
448+
new HashSet<>(Arrays.asList("second", "third", "main")),
448449
objectMapper.getRegisteredModuleIds()
449450
);
450451
}

0 commit comments

Comments
 (0)