public TImplementation convertImplementation(List<TImplementationArtifact> node) { if (Objects.isNull(node) || node.isEmpty()) return null; List<TImplementationArtifact> tmp = new ArrayList<>(node); return new TImplementation.Builder(new QName(tmp.remove(0).getName())) .setDependencies(tmp.stream() .filter(artifact -> Objects.nonNull(artifact) && Objects.nonNull(artifact.getName())) .map(artifact -> new QName(artifact.getName())) .collect(Collectors.toList()) ) .build(); }
public Builder addDependencies(QName dependency) { if (dependency == null) { return this; } return addDependencies(Collections.singletonList(dependency)); }
@Nullable public TOperationDefinition buildOperationDefinition(Object object, Parameter<TOperationDefinition> parameter) { if (Objects.isNull(object) || !validate(TOperationDefinition.class, object, parameter)) return null; // short notation if (object instanceof String) { return new TOperationDefinition.Builder() .setImplementation(new TImplementation.Builder(buildQName(stringValue(object))).build()) .build(); } else if (object instanceof Map) { @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) object; return new TOperationDefinition.Builder() .setDescription(buildDescription(map.get("description"))) .setInputs(buildPropertyAssignmentOrDefinition(map.get("inputs"), new Parameter<>(parameter.getContext()).addContext("Inputs") .setValue(parameter.getValue()) )) .setOutputs(buildPropertyAssignmentOrDefinition(map.get("outputs"), new Parameter<>(parameter.getContext()).addContext("outputs") .setValue(parameter.getValue()) )) .setImplementation(buildImplementation(map.get("implementation"), new Parameter<TImplementation>(parameter.getContext()).addContext("implementation") )) .build(); } return null; }
@Nullable public TImplementation buildImplementation(Object object, Parameter<TImplementation> parameter) { // TImplementation has required fields but is used not in a map context if (Objects.isNull(object)) return null; if (object instanceof String) return new TImplementation(buildQName(stringValue(object))); if (!validate(TImplementation.class, object, parameter)) return null; @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) object; return new TImplementation.Builder(buildQName(stringValue(map.get("primary")))) .setDependencies(buildListQName(buildListString(map.get("dependencies"), new Parameter<List<String>>(parameter.getContext()).addContext("dependencies") ))) .build(); }