1 package com.fasterxml.jackson.databind.module; 2 3 import com.fasterxml.jackson.core.Version; 4 import com.fasterxml.jackson.databind.*; 5 6 public class TestDuplicateRegistration extends BaseMapTest 7 { 8 static class MyModule extends com.fasterxml.jackson.databind.Module { 9 public int regCount; 10 MyModule()11 public MyModule() { 12 super(); 13 } 14 15 @Override getModuleName()16 public String getModuleName() { 17 return "TestModule"; 18 } 19 20 @Override version()21 public Version version() { 22 return Version.unknownVersion(); 23 } 24 25 @Override setupModule(SetupContext context)26 public void setupModule(SetupContext context) { 27 ++regCount; 28 } 29 } 30 testDuplicateRegistration()31 public void testDuplicateRegistration() throws Exception 32 { 33 // by default, duplicate registration should be prevented 34 ObjectMapper mapper = new ObjectMapper(); 35 assertTrue(mapper.isEnabled(MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS)); 36 MyModule module = new MyModule(); 37 mapper.registerModule(module); 38 mapper.registerModule(module); 39 mapper.registerModule(module); 40 assertEquals(1, module.regCount); 41 42 // but may be allowed by changing setting 43 mapper.disable(MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS); 44 mapper.registerModule(module); 45 assertEquals(2, module.regCount); 46 47 final MyModule module2 = new MyModule(); 48 // and ditto for a new instance 49 @SuppressWarnings("unused") 50 ObjectMapper mapper2 = jsonMapperBuilder() 51 .disable(MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS) 52 .addModule(module2) 53 .addModule(module2) 54 .addModule(module2) 55 .build(); 56 assertEquals(3, module2.regCount); 57 } 58 } 59