I am trying to create a mapping service from dynamic code in 2025.06-ext4. I have this code snippet:
IMappingModelResolver resolver = IMappingModelResolver.of(id -> {
try {
File file = new File(DIR, id + ".json");
log.info("Reading {}.", file);
return new FileReader(file);
} catch (FileNotFoundException e) {
throw new IllegalArgumentException(id, e);
}
}, rn -> {
});
IModelCodeCache cache = new DataServicesModelCodeCache();
IMappingModelCacheIdProvider provider = new DefaultMappingModelCacheIdProvider();
MappingServiceFactory.createMappingServiceFromDynamicCode(
DynamicMappingServiceConfig.of("RecipeToShoppingListMapping", resolver, cache, provider));
DIR refers to a non-classpath directory where the document and mapping models are located. When run an exception occurs:
java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:233)
at com.mgmtp.a12.kernel.mapping.facade.MappingModelResolverImpl.lambda$createResolver$0(MappingModelResolverImpl.java:56)
at com.mgmtp.a12.kernel.md.serializer.document.internal.service.DmAndSearchService.of(DmAndSearchService.java:33)
at com.mgmtp.a12.kernel.md.serializer.document.internal.service.serialization.json.DocumentV2JsonReader.readDocument(DocumentV2JsonReader.java:50)
at com.mgmtp.a12.kernel.md.serializer.document.internal.service.DocumentSerializerImpl.deserializeV2(DocumentSerializerImpl.java:116)
at com.mgmtp.a12.kernel.md.serializer.document.internal.service.DocumentSerializerImpl.deserializeV2(DocumentSerializerImpl.java:87)
at com.mgmtp.a12.kernel.mapping.facade.MappingModelResolverImpl.readDocumentV2(MappingModelResolverImpl.java:49)
at com.mgmtp.a12.kernel.mapping.facade.MappingModelResolverImpl.getDocumentV2ById(MappingModelResolverImpl.java:67)
at com.mgmtp.a12.kernel.mapping.facade.MappingModelResolverImpl.getMappingModelById(MappingModelResolverImpl.java:74)
at com.mgmtp.a12.kernel.mapping.facade.internal.ThrowingMappingModelResolverWrapper.getMappingModelById(ThrowingMappingModelResolverWrapper.java:35)
at com.mgmtp.a12.kernel.mapping.service.internal.DynamicMappingModelCodeGenerator.generateCode(DynamicMappingModelCodeGenerator.java:61)
at com.mgmtp.a12.kernel.mapping.service.internal.DynamicDataTransferModelProvider.getDataTransferCode(DynamicDataTransferModelProvider.java:33)
at com.mgmtp.a12.kernel.mapping.service.internal.DynamicDataTransferModelProvider.getTargetMetaModel(DynamicDataTransferModelProvider.java:29)
at com.mgmtp.a12.kernel.mapping.facade.internal.DynamicMappingServiceFactory.createMappingService(DynamicMappingServiceFactory.java:24)
at com.mgmtp.a12.kernel.mapping.facade.a12internal.MappingServiceFactoryA12Internal.createMappingServiceFromDynamicCode(MappingServiceFactoryA12Internal.java:42)
at com.mgmtp.a12.kernel.mapping.facade.MappingServiceFactory.createMappingServiceFromDynamicCode(MappingServiceFactory.java:39)
What is the problem I am facing and how do I resolve this?
When debugging through the code it probably tries to load a file codegen-mm_mappingmodel-2.json from the classpath which does not exist there. I have no idea where I should get this from and even why a file is needed on the classpath when the code should be created dynamically.