in taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/YAMLHelper.java [230:338]
public Map<String, Integer> process(JsonNode inputs) {
Map<String, Integer> result = new HashMap<>();
if (inputs == null)
return result;
if (inputs.getClass() == ArrayNode.class) {
Iterator<JsonNode> iterator = inputs.iterator();
while (iterator.hasNext()) {
JsonNode input = iterator.next();
String currentInputId = input.get(ID).asText();
JsonNode typeConfigurations;
try {
typeConfigurations = input.get(TYPE);
// if type :single argument
if (typeConfigurations.getClass() == TextNode.class) {
// inputs:
/// -id: input_1
//// type: int[]
if (isValidArrayType(typeConfigurations.asText()))
result.put(currentInputId, DEPTH_1);
// inputs:
/// -id: input_1
//// type: int or int?
else
result.put(currentInputId, DEPTH_0);
// type : defined as another map which contains type:
} else if (typeConfigurations.getClass() == ObjectNode.class) {
// inputs:
/// -id: input_1
//// type:
///// type: array or int[]
String inputType = typeConfigurations.get(TYPE).asText();
if (inputType.equals(ARRAY) || isValidArrayType(inputType)) {
result.put(currentInputId, DEPTH_1);
}
// inputs:
// -id: input_1
// type:
// type: ["null",int]
} else if (typeConfigurations.getClass() == ArrayNode.class) {
if (isValidDataType(typeConfigurations)) {
result.put(currentInputId, DEPTH_0);
}
}
} catch (ClassCastException e) {
System.out.println("Class cast exception !!!");
}
}
} else if (inputs.getClass() == ObjectNode.class) {
Iterator<Entry<String, JsonNode>> iterator = inputs.fields();
while (iterator.hasNext()) {
Entry<String, JsonNode> entry = iterator.next();
String currentInputId = entry.getKey();
JsonNode typeConfigurations = entry.getValue();
if (typeConfigurations.getClass() == TextNode.class) {
if (typeConfigurations.asText().startsWith("$")) {
System.out.println("Exception");
}
// inputs:
/// input_1: int[]
else if (isValidArrayType(typeConfigurations.asText()))
result.put(currentInputId, DEPTH_1);
// inputs:
/// input_1: int or int?
else
result.put(currentInputId, DEPTH_0);
} else if (typeConfigurations.getClass() == ObjectNode.class) {
if (typeConfigurations.has(TYPE)) {
JsonNode inputType = typeConfigurations.get(TYPE);
// inputs:
/// input_1:
//// type: [int,"null"]
if (inputType.getClass() == ArrayNode.class) {
if (isValidDataType(inputType))
result.put(currentInputId, DEPTH_0);
} else {
// inputs:
/// input_1:
//// type: array or int[]
if (inputType.asText().equals(ARRAY) || isValidArrayType(inputType.asText()))
result.put(currentInputId, DEPTH_1);
// inputs:
/// input_1:
//// type: int or int?
else
result.put(currentInputId, DEPTH_0);
}
}
}
}
}
return result;
}