Skip to content

Commit 5253404

Browse files
committed
Get node inherited property values
1 parent f82e3f7 commit 5253404

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/main/java/org/folio/rest/camunda/service/BpmnModelFactory.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package org.folio.rest.camunda.service;
22

3-
import com.fasterxml.jackson.core.JsonProcessingException;
4-
import com.fasterxml.jackson.databind.JsonNode;
5-
import com.fasterxml.jackson.databind.ObjectMapper;
63
import java.util.ArrayList;
74
import java.util.List;
85
import java.util.Map;
96
import java.util.Objects;
107
import java.util.Optional;
8+
9+
import com.fasterxml.jackson.core.JsonProcessingException;
10+
import com.fasterxml.jackson.databind.JsonNode;
11+
import com.fasterxml.jackson.databind.ObjectMapper;
1112
import org.apache.commons.lang3.reflect.FieldUtils;
1213
import org.camunda.bpm.engine.delegate.Expression;
1314
import org.camunda.bpm.model.bpmn.Bpmn;
@@ -150,8 +151,8 @@ private void eventSubprocess(ProcessBuilder processBuilder, Node node) throws Sc
150151
String expression = ((StartEvent) node).getExpression();
151152

152153
if (type != StartEventType.NONE && expression == null) {
153-
// TODO: implement and ensure validation
154-
throw new RuntimeException(String.format("%s start event requests an expression", type));
154+
// TODO: create custom exception and controller advice to handle better
155+
throw new RuntimeException(String.format("%s start event requires an expression", type));
155156
}
156157

157158
builder = ((StartEventBuilder) builder).id(node.getIdentifier()).name(node.getName());
@@ -406,9 +407,11 @@ private void expressions(BpmnModelInstance model, List<Node> nodes) {
406407

407408
FieldUtils.getAllFieldsList(delegate.get().getClass()).stream()
408409
.filter(df -> Expression.class.isAssignableFrom(df.getType()))
409-
.map(df -> FieldUtils.getDeclaredField(node.getClass(), df.getName(), true)).forEach(f -> {
410+
.map(df -> FieldUtils.getField(node.getClass(), df.getName(), true))
411+
.filter(f -> Objects.nonNull(f))
412+
.forEach(f -> {
410413
try {
411-
Object value = f == null ? null : f.get(node);
414+
Object value = f.get(node);
412415
if (Objects.nonNull(value)) {
413416
CamundaField field = model.newInstance(CamundaField.class);
414417
field.setCamundaName(f.getName());
@@ -432,7 +435,6 @@ private void expressions(BpmnModelInstance model, List<Node> nodes) {
432435
// TODO: create custom exception and controller advice to handle better
433436
throw new RuntimeException("Task must have delegate representation!");
434437
}
435-
436438
}
437439
});
438440
}

0 commit comments

Comments
 (0)