private static InputDefinition toInput(final SInputDefinition input) { final List<InputDefinition> inputDefinitions = new ArrayList<>(); for (final SInputDefinition sInputDefinition : input.getInputDefinitions()) { inputDefinitions.add(toInput(sInputDefinition)); } final SType type = input.getType(); final InputDefinitionImpl inputDefinition = new InputDefinitionImpl(input.getName(), type == null ? null : Type.valueOf(type.toString()), input.getDescription(), input.isMultiple()); inputDefinition.getInputs().addAll(inputDefinitions); return inputDefinition; }
private void validateChildren(Map<String, Serializable> inputs, ErrorReporter errorReporter, SInputDefinition inputDefinition) { if (inputDefinition.hasChildren() && inputDefinition.getType() == null) { if (inputDefinition.isMultiple()) { for (final Map<String, Serializable> complexItem : (List<Map<String, Serializable>>) inputs.get(inputDefinition.getName())) { // we tolerate (and ignore) null values in lists: if (complexItem != null) { validateInputContainer(inputDefinition, complexItem, errorReporter); } } } else { validateInputContainer(inputDefinition, (Map<String, Serializable>) inputs.get(inputDefinition.getName()), errorReporter); } } }
private SInputDefinition getInputDefinitionInComplex(final String inputName, final List<SInputDefinition> complexInputs) { for (final SInputDefinition sInputDefinition : complexInputs) { if (sInputDefinition.getName().equals(inputName)) { return sInputDefinition; } final SInputDefinition inputDefinition = getInputDefinition(inputName, sInputDefinition.getInputDefinitions()); if (inputDefinition != null) { return inputDefinition; } } return null; } }
public boolean validate(final SInputDefinition definition, final Object object, ErrorReporter errorReporter) { if (definition.hasChildren() && definition.getType() == null) { if (!isValidForComplexType(definition, object, errorReporter)) { errorReporter.addError(object + " cannot be assigned to " + (definition.isMultiple() ? "multiple " : "") + "COMPLEX type"); return false; } } else { if (!isValidForSimpleType(definition, object)) { errorReporter.addError(object + " cannot be assigned to " + (definition.isMultiple() ? "multiple " : "") + definition.getType()); return false; } } return true; }
private boolean isValidForSimpleType(final SInputDefinition definition, final Object object) { if (definition.isMultiple()) { return isValidForMultipleSimpleType(definition, object); } else { SType type = definition.getType(); return type != null && type.validate(object); } }
private SInputDefinition getInputDefinitionInSimple(final String inputName, final List<SInputDefinition> simpleInputs) { for (final SInputDefinition sInputDefinition : simpleInputs) { if (sInputDefinition.getName().equals(inputName)) { return sInputDefinition; } } return null; }
private boolean isValidForComplexType(final SInputDefinition definition, final Object object, ErrorReporter errorReporter) { if (definition.isMultiple()) { return isValidForMultipleComplexType(definition, object, errorReporter); } else { return isValidForSimpleComplexType(definition, object, errorReporter); } }
@SuppressWarnings("unchecked") private boolean isValidForMultipleSimpleType(final SInputDefinition definition, final Object object) { if (!(object instanceof List<?>)) { return false; } for (final Object item : (List<Object>) object) { if (!definition.getType().validate(item)) { return false; } } return true; }
public boolean validate(final SInputDefinition definition, final Object object, ErrorReporter errorReporter) { if (definition.hasChildren() && definition.getType() == null) { if (!isValidForComplexType(definition, object, errorReporter)) { errorReporter.addError(object + " cannot be assigned to " + (definition.isMultiple() ? "multiple " : "") + "COMPLEX type"); return false; } } else { if (!isValidForSimpleType(definition, object)) { errorReporter.addError(object + " cannot be assigned to " + (definition.isMultiple() ? "multiple " : "") + definition.getType()); return false; } } return true; }
private SInputDefinition getInputDefinitionInComplex(final String inputName, final List<SInputDefinition> complexInputs) { for (final SInputDefinition sInputDefinition : complexInputs) { if (sInputDefinition.getName().equals(inputName)) { return sInputDefinition; } final SInputDefinition inputDefinition = getInputDefinition(inputName, sInputDefinition.getInputDefinitions()); if (inputDefinition != null) { return inputDefinition; } } return null; } }
private boolean isValidForSimpleType(final SInputDefinition definition, final Object object) { if (definition.isMultiple()) { return isValidForMultipleSimpleType(definition, object); } else { SType type = definition.getType(); return type != null && type.validate(object); } }
private SInputDefinition getInputDefinitionInSimple(final String inputName, final List<SInputDefinition> simpleInputs) { for (final SInputDefinition sInputDefinition : simpleInputs) { if (sInputDefinition.getName().equals(inputName)) { return sInputDefinition; } } return null; }
private boolean isValidForComplexType(final SInputDefinition definition, final Object object, ErrorReporter errorReporter) { if (definition.isMultiple()) { return isValidForMultipleComplexType(definition, object, errorReporter); } else { return isValidForSimpleComplexType(definition, object, errorReporter); } }
@SuppressWarnings("unchecked") private boolean isValidForMultipleSimpleType(final SInputDefinition definition, final Object object) { if (!(object instanceof List<?>)) { return false; } for (final Object item : (List<Object>) object) { if (!definition.getType().validate(item)) { return false; } } return true; }
private static InputDefinition toInput(final SInputDefinition input) { final List<InputDefinition> inputDefinitions = new ArrayList<>(); for (final SInputDefinition sInputDefinition : input.getInputDefinitions()) { inputDefinitions.add(toInput(sInputDefinition)); } final SType type = input.getType(); final InputDefinitionImpl inputDefinition = new InputDefinitionImpl(input.getName(), type == null ? null : Type.valueOf(type.toString()), input.getDescription(), input.isMultiple()); inputDefinition.getInputs().addAll(inputDefinitions); return inputDefinition; }
private void validateChildren(Map<String, Serializable> inputs, ErrorReporter errorReporter, SInputDefinition inputDefinition) { if (inputDefinition.hasChildren() && inputDefinition.getType() == null) { if (inputDefinition.isMultiple()) { for (final Map<String, Serializable> complexItem : (List<Map<String, Serializable>>) inputs.get(inputDefinition.getName())) { // we tolerate (and ignore) null values in lists: if (complexItem != null) { validateInputContainer(inputDefinition, complexItem, errorReporter); } } } else { validateInputContainer(inputDefinition, (Map<String, Serializable>) inputs.get(inputDefinition.getName()), errorReporter); } } }
private boolean isValidForSimpleComplexType(final SInputDefinition definition, final Object object, ErrorReporter errorReporter) { try { @SuppressWarnings("unchecked") final Map<String, Object> map = (Map<String, Object>) object; for (final SInputDefinition sInputDefinition : definition.getInputDefinitions()) { Object value = (map == null) ? null : map.get(sInputDefinition.getName()); validate(sInputDefinition, value, errorReporter); } return !errorReporter.hasError(); } catch (final ClassCastException e) { return false; } } }
private List<String> getInputsWhichAreNotInContract(final List<SInputDefinition> simpleInputs, final Map<String, Serializable> inputs) { if (inputs == null || inputs.isEmpty()) { return Collections.emptyList(); } final List<String> keySet = new ArrayList<>(inputs.keySet()); for (final SInputDefinition def : simpleInputs) { keySet.remove(def.getName()); } return keySet; } }
private boolean isValidForSimpleComplexType(final SInputDefinition definition, final Object object, ErrorReporter errorReporter) { try { @SuppressWarnings("unchecked") final Map<String, Object> map = (Map<String, Object>) object; for (final SInputDefinition sInputDefinition : definition.getInputDefinitions()) { Object value = (map == null) ? null : map.get(sInputDefinition.getName()); validate(sInputDefinition, value, errorReporter); } return !errorReporter.hasError(); } catch (final ClassCastException e) { return false; } } }
private List<String> getInputsWhichAreNotInContract(final List<SInputDefinition> simpleInputs, final Map<String, Serializable> inputs) { if (inputs == null || inputs.isEmpty()) { return Collections.emptyList(); } final List<String> keySet = new ArrayList<>(inputs.keySet()); for (final SInputDefinition def : simpleInputs) { keySet.remove(def.getName()); } return keySet; } }