+ private ListDataDefinition<OperationInputDefinition> handleActivityInterfaceOperationInputs(Map<String, Object> activityInputs) {
+ final ListDataDefinition<OperationInputDefinition> inputs = new ListDataDefinition<>();
+ final String defaultType = "tosca.dataTypes.tmf.milestoneJeopardyData";
+ for (final Entry<String, Object> interfaceInput : activityInputs.entrySet()) {
+ if (isMilestoneJeopardyData(interfaceInput.getValue())) {
+ final OperationInputDefinition operationInput = new OperationInputDefinition();
+ operationInput.setUniqueId(UUID.randomUUID().toString());
+ operationInput.setInputId(operationInput.getUniqueId());
+ operationInput.setName(interfaceInput.getKey());
+ operationInput.setType(defaultType);
+ operationInput.setValue(new Gson().toJson(interfaceInput.getValue()));
+ inputs.add(operationInput);
+ }
+ }
+ return inputs;
+ }
+
+ private boolean isMilestoneJeopardyData(Object value) {
+ if (value instanceof Map) {
+ Set<String> allowedKeys = new HashSet<>();
+ allowedKeys.add("jeopardyType");
+ allowedKeys.add("name");
+ allowedKeys.add("eventType");
+ allowedKeys.add("message");
+
+ Map<String, Object> valueMap = (Map<String, Object>) value;
+ return allowedKeys.containsAll(valueMap.keySet());
+ }
+ return false;
+ }
+