@Override
protected FlowElement convertJsonToElement(JsonNode elementNode, JsonNode modelNode, Map<String, JsonNode> shapeMap) {
BoundaryEvent boundaryEvent = new BoundaryEvent();
String stencilId = BpmnJsonConverterUtil.getStencilId(elementNode);
if (STENCIL_EVENT_BOUNDARY_TIMER.equals(stencilId)) {
convertJsonToTimerDefinition(elementNode, boundaryEvent);
boundaryEvent.setCancelActivity(getPropertyValueAsBoolean(PROPERTY_CANCEL_ACTIVITY, elementNode));
} else if (STENCIL_EVENT_BOUNDARY_ERROR.equals(stencilId)) {
convertJsonToErrorDefinition(elementNode, boundaryEvent);
} else if (STENCIL_EVENT_BOUNDARY_SIGNAL.equals(stencilId)) {
convertJsonToSignalDefinition(elementNode, boundaryEvent);
boundaryEvent.setCancelActivity(getPropertyValueAsBoolean(PROPERTY_CANCEL_ACTIVITY, elementNode));
} else if (STENCIL_EVENT_BOUNDARY_MESSAGE.equals(stencilId)) {
convertJsonToMessageDefinition(elementNode, boundaryEvent);
boundaryEvent.setCancelActivity(getPropertyValueAsBoolean(PROPERTY_CANCEL_ACTIVITY, elementNode));
} else if (STENCIL_EVENT_BOUNDARY_CANCEL.equals(stencilId)) {
CancelEventDefinition cancelEventDefinition = new CancelEventDefinition();
boundaryEvent.getEventDefinitions().add(cancelEventDefinition);
boundaryEvent.setCancelActivity(getPropertyValueAsBoolean(PROPERTY_CANCEL_ACTIVITY, elementNode));
} else if (STENCIL_EVENT_BOUNDARY_COMPENSATION.equals(stencilId)) {
CompensateEventDefinition compensateEventDefinition = new CompensateEventDefinition();
boundaryEvent.getEventDefinitions().add(compensateEventDefinition);
boundaryEvent.setCancelActivity(getPropertyValueAsBoolean(PROPERTY_CANCEL_ACTIVITY, elementNode));
}
boundaryEvent.setAttachedToRefId(lookForAttachedRef(elementNode.get(EDITOR_SHAPE_ID).asText(), modelNode.get(EDITOR_CHILD_SHAPES)));
return boundaryEvent;
}