Skip to content

Commit 7f5dc7c

Browse files
committed
Use ObjectMapper Supplier for EventRegistry json converters
With this if custom configurations were adding additional model classes before the engine was build would keep working
1 parent afe744b commit 7f5dc7c

File tree

3 files changed

+27
-25
lines changed

3 files changed

+27
-25
lines changed

modules/flowable-event-registry-json-converter/src/main/java/org/flowable/eventregistry/json/converter/ChannelJsonConverter.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.HashMap;
1818
import java.util.List;
1919
import java.util.Map;
20+
import java.util.function.Supplier;
2021

2122
import org.flowable.eventregistry.model.CamelInboundChannelModel;
2223
import org.flowable.eventregistry.model.CamelOutboundChannelModel;
@@ -40,29 +41,36 @@
4041
*/
4142
public class ChannelJsonConverter {
4243

43-
protected ObjectMapper objectMapper;
44+
protected Supplier<ObjectMapper> objectMapperSupplier;
4445

4546
protected List<ChannelValidator> validators = new ArrayList<>();
4647
protected Map<String, Class<? extends ChannelModel>> channelModelClasses = new HashMap<>();
4748

4849
public ChannelJsonConverter() {
49-
this(new ObjectMapper());
50+
ObjectMapper objectMapper = new ObjectMapper();
51+
this.objectMapperSupplier = () -> objectMapper;
52+
addValidator(new OutboundChannelModelValidator());
53+
addValidator(new InboundChannelModelValidator());
54+
addDefaultChannelModelClasses();
5055
}
5156

52-
public ChannelJsonConverter(ObjectMapper objectMapper) {
53-
this.objectMapper = objectMapper;
57+
public ChannelJsonConverter(Supplier<ObjectMapper> objectMapperSupplier) {
58+
this.objectMapperSupplier = objectMapperSupplier;
5459
addValidator(new OutboundChannelModelValidator());
5560
addValidator(new InboundChannelModelValidator());
5661
addDefaultChannelModelClasses();
5762
}
5863

5964
public ChannelJsonConverter(Collection<ChannelValidator> validators) {
60-
this(validators, new ObjectMapper());
65+
this.validators = new ArrayList<>(validators);
66+
ObjectMapper objectMapper = new ObjectMapper();
67+
this.objectMapperSupplier = () -> objectMapper;
68+
addDefaultChannelModelClasses();
6169
}
6270

63-
public ChannelJsonConverter(Collection<ChannelValidator> validators, ObjectMapper objectMapper) {
64-
this(objectMapper);
71+
public ChannelJsonConverter(Collection<ChannelValidator> validators, Supplier<ObjectMapper> objectMapperSupplier) {
6572
this.validators = new ArrayList<>(validators);
73+
this.objectMapperSupplier = objectMapperSupplier;
6674
addDefaultChannelModelClasses();
6775
}
6876

@@ -82,6 +90,7 @@ protected void addDefaultChannelModelClasses() {
8290

8391
public ChannelModel convertToChannelModel(String modelJson) {
8492
try {
93+
ObjectMapper objectMapper = objectMapperSupplier.get();
8594
JsonNode channelNode = objectMapper.readTree(modelJson);
8695
Class<? extends ChannelModel> channelClass = determineChannelModelClass(channelNode);
8796

@@ -117,7 +126,7 @@ protected void validateChannel(ChannelModel channelModel) {
117126

118127
public String convertToJson(ChannelModel definition) {
119128
try {
120-
return objectMapper.writeValueAsString(definition);
129+
return objectMapperSupplier.get().writeValueAsString(definition);
121130
} catch (Exception e) {
122131
throw new FlowableEventJsonException("Error writing channel json", e);
123132
}

modules/flowable-event-registry-json-converter/src/main/java/org/flowable/eventregistry/json/converter/EventJsonConverter.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
package org.flowable.eventregistry.json.converter;
1414

1515
import java.util.Collection;
16+
import java.util.function.Supplier;
1617

1718
import org.flowable.eventregistry.model.EventModel;
1819
import org.flowable.eventregistry.model.EventPayload;
@@ -28,19 +29,20 @@
2829
*/
2930
public class EventJsonConverter {
3031

31-
protected ObjectMapper objectMapper;
32+
protected Supplier<ObjectMapper> objectMapperSupplier;
3233

3334
public EventJsonConverter() {
34-
this(new ObjectMapper());
35+
ObjectMapper objectMapper = new ObjectMapper();
36+
this.objectMapperSupplier = () -> objectMapper;
3537
}
3638

37-
public EventJsonConverter(ObjectMapper objectMapper) {
38-
this.objectMapper = objectMapper;
39+
public EventJsonConverter(Supplier<ObjectMapper> objectMapperSupplier) {
40+
this.objectMapperSupplier = objectMapperSupplier;
3941
}
4042

4143
public EventModel convertToEventModel(String modelJson) {
4244
try {
43-
JsonNode modelNode = objectMapper.readTree(modelJson);
45+
JsonNode modelNode = objectMapperSupplier.get().readTree(modelJson);
4446
EventModel eventModel = new EventModel();
4547

4648
eventModel.setKey(modelNode.path("key").asText(null));
@@ -83,6 +85,7 @@ public EventModel convertToEventModel(String modelJson) {
8385
}
8486

8587
public String convertToJson(EventModel definition) {
88+
ObjectMapper objectMapper = objectMapperSupplier.get();
8689
ObjectNode modelNode = objectMapper.createObjectNode();
8790

8891
if (definition.getKey() != null) {

modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/EventRegistryEngineConfiguration.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ public class EventRegistryEngineConfiguration extends AbstractBuildableEngineCon
124124
protected Collection<ELResolver> preBeanELResolvers;
125125
protected Collection<ELResolver> postDefaultELResolvers;
126126

127-
protected EventJsonConverter eventJsonConverter;
128-
protected ChannelJsonConverter channelJsonConverter;
127+
protected EventJsonConverter eventJsonConverter = new EventJsonConverter(this::getObjectMapper);
128+
protected ChannelJsonConverter channelJsonConverter = new ChannelJsonConverter(this::getObjectMapper);
129129

130130
// DEPLOYERS
131131
// ////////////////////////////////////////////////////////////////
@@ -251,7 +251,6 @@ protected void init() {
251251
configuratorsAfterInit();
252252
initDataManagers();
253253
initEntityManagers();
254-
initJsonConverters();
255254
initEventRegistry();
256255
initInboundEventProcessor();
257256
initOutboundEventProcessor();
@@ -503,15 +502,6 @@ public void initInboundChannelModelCacheManager() {
503502
}
504503
}
505504

506-
protected void initJsonConverters() {
507-
if (eventJsonConverter == null) {
508-
eventJsonConverter = new EventJsonConverter(objectMapper);
509-
}
510-
if (channelJsonConverter == null) {
511-
channelJsonConverter = new ChannelJsonConverter(objectMapper);
512-
}
513-
}
514-
515505
public void initEventRegistry() {
516506
if (this.eventRegistry == null) {
517507
this.eventRegistry = new DefaultEventRegistry(this);

0 commit comments

Comments
 (0)