@Test @DiagramResource( "org/camunda/bpm/modeler/test/core/utils/ExtensionUtilTest.testAddAndRemoveExtensions.bpmn") public void testAddAndRemoveExtensionsToOutType() { final CallActivity callActivity = findBusinessObjectById(diagram, "callActivity", CallActivity.class); List<ExtensionAttributeValue> extensionAttributeValues = ExtensionUtil.getExtensionAttributeValues(callActivity); assertThat(extensionAttributeValues).hasSize(0); // add <camunda:out source="test" target="test"/> final OutType sourceOutType = modelFactory.createOutType(); sourceOutType.setSource("test"); sourceOutType.setTarget("test"); addCallActivityExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, sourceOutType); Object value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, "source"); assertThat(value).isEqualTo("test"); // add <camunda:out source="test2" target="test2"/> final OutType source2OutType = modelFactory.createOutType(); source2OutType.setSource("test2"); source2OutType.setTarget("test2"); addCallActivityExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, source2OutType); // add <camunda:out variables="all"/> final OutType variablesOutType = modelFactory.createOutType(); variablesOutType.setVariables(ALL_VARIABLES_VALUE); addCallActivityExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, variablesOutType); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, "variables"); assertThat(value).isEqualTo(ALL_VARIABLES_VALUE); List<OutType> extensions = ExtensionUtil.getExtensions(callActivity, OutType.class); assertThat(extensions).hasSize(3); // remove outType source="test2" extension transactionalExecute( new RecordingCommand(editingDomain) { @Override protected void doExecute() { ExtensionUtil.removeExtensionByValue( callActivity, CALL_ACTIVITY_OUT_TYPE, OUT_TYPE_SOURCE, "test2"); } }); extensions = ExtensionUtil.getExtensions(callActivity, OutType.class); assertThat(extensions).hasSize(2); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, "source"); assertThat(value).isEqualTo("test"); extensionAttributeValues = ExtensionUtil.getExtensionAttributeValues(callActivity); assertThat(extensionAttributeValues).hasSize(1); }
@Test @DiagramResource( "org/camunda/bpm/modeler/test/ui/change/FieldInjectionAddElementToExtension.bpmn") public void testAddFieldElementOnlyWithNameToExistingFieldsWithAttributes() { final ServiceTask serviceTask = findBusinessObjectById(diagram, "ServiceTask_1", ServiceTask.class); List<FieldType> fieldTypeList = ExtensionUtil.getExtensions(serviceTask, FieldType.class); assertThat(fieldTypeList).hasSize(2); final FieldType fieldType = modelFactory.createFieldType(); fieldType.setName("myFieldElement"); ExtensionChangeFilter filter = new ExtensionChangeFilter(serviceTask, FIELD_TYPE_FEATURE); CustomResourceSetListener listener = new CustomResourceSetListener(serviceTask, filter); listener.register(); transactionalExecute( new RecordingCommand(editingDomain) { @Override protected void doExecute() { ExtensionUtil.addExtension(serviceTask, FIELD_TYPE_FEATURE, fieldType); } }); assertThat(listener.getCapturedEvents()).hasSize(1); fieldTypeList = ExtensionUtil.getExtensions(serviceTask, FieldType.class); assertThat(fieldTypeList).hasSize(3); }
public InType addCallActivityInType(final CallActivity callActivity) { final InType inType = modelFactory.createInType(); inType.setSource("ASD"); transactionalExecute( new RecordingCommand(editingDomain) { @Override protected void doExecute() { ExtensionUtil.addExtension(callActivity, IN_FEATURE, inType); } }); return inType; }
@Test @DiagramResource( "org/camunda/bpm/modeler/test/core/utils/ExtensionUtilTest.testAddAndRemoveExtensions.bpmn") public void testAddAndRemoveExtensionsToInType() { final CallActivity callActivity = findBusinessObjectById(diagram, "callActivity", CallActivity.class); List<ExtensionAttributeValue> extensionAttributeValues = ExtensionUtil.getExtensionAttributeValues(callActivity); assertThat(extensionAttributeValues).hasSize(0); // add <camunda:in source="test" target="test"/> final InType sourceInType = modelFactory.createInType(); sourceInType.setSource("test"); sourceInType.setTarget("test"); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, sourceInType); Object value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "source"); assertThat(value).isEqualTo("test"); // add <camunda:in source="test2" target="test2"/> final InType source2InType = modelFactory.createInType(); source2InType.setSource("test2"); source2InType.setTarget("test2"); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, source2InType); // add <camunda:in businessKey="#{execution.processBusinessKey}"/> final InType businessKeyInType = modelFactory.createInType(); businessKeyInType.setBusinessKey(BUSINESS_KEY_EXPRESSION); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, businessKeyInType); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "businessKey"); assertThat(value).isEqualTo(BUSINESS_KEY_EXPRESSION); // add <camunda:in variables="all"/> final InType variablesInType = modelFactory.createInType(); variablesInType.setVariables(ALL_VARIABLES_VALUE); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, variablesInType); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "variables"); assertThat(value).isEqualTo(ALL_VARIABLES_VALUE); List<InType> extensions = ExtensionUtil.getExtensions(callActivity, InType.class); assertThat(extensions).hasSize(4); // remove inType businessKey extension transactionalExecute( new RecordingCommand(editingDomain) { @Override protected void doExecute() { ExtensionUtil.removeExtensionByValue( callActivity, CALL_ACTIVITY_IN_TYPE, IN_TYPE_BUSINESS_KEY, BUSINESS_KEY_EXPRESSION); } }); extensions = ExtensionUtil.getExtensions(callActivity, InType.class); assertThat(extensions).hasSize(3); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "businessKey"); assertThat(value).isNull(); extensionAttributeValues = ExtensionUtil.getExtensionAttributeValues(callActivity); assertThat(extensionAttributeValues).hasSize(1); }