public ValidationResult testWithValidationResult(final Element element) { final ValidationResult result = new ValidationResult(); elementTuple.setElement(element); components.stream() .filter(predicate -> !predicate.test(elementTuple)) .forEach(predicate -> result.addError(getErrorMsg(predicate))); return result; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 2 != arguments.length || null == arguments[0] || null == arguments[1]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 2 arguments are required."); return result; } if (!arguments[0].equals(arguments[1]) || !Comparable.class.isAssignableFrom(arguments[0])) { result.addError("Inputs must be the same class type and comparable: " + arguments[0] + "," + arguments[1]); } return result; } }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 2 != arguments.length || null == arguments[0] || null == arguments[1]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 2 arguments are required."); return result; } if (!arguments[0].equals(arguments[1]) || !Comparable.class.isAssignableFrom(arguments[0])) { result.addError("Inputs must be the same class type and comparable: " + arguments[0] + "," + arguments[1]); } return result; } }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { if (null == components) { return new ValidationResult(); } final ValidationResult result = new ValidationResult(); for (final C component : components) { result.add(Signature.getInputSignature(component).assignable(arguments)); } return result; } }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 1 argument is required."); return result; } if (!String.class.isAssignableFrom(arguments[0]) && !Object[].class.isAssignableFrom(arguments[0]) && !Iterable.class.isAssignableFrom(arguments[0]) && !Map.class.isAssignableFrom(arguments[0])) { result.addError("Input class " + arguments[0].getName() + " must be one of the following: " + String.class.getName() + ", " + Object[].class.getName() + ", " + Iterable.class.getName() + ", " + Map.class.getName()); } return result; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 1 argument is required."); return result; } if (!String.class.isAssignableFrom(arguments[0]) && !Object[].class.isAssignableFrom(arguments[0]) && !Iterable.class.isAssignableFrom(arguments[0]) && !Map.class.isAssignableFrom(arguments[0])) { result.addError("Input class " + arguments[0].getName() + " must be one of the following: " + String.class.getName() + ", " + Object[].class.getName() + ", " + Iterable.class.getName() + ", " + Map.class.getName()); } return result; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". One (1) argument is required."); return result; } if (!String.class.isAssignableFrom(arguments[0]) && !Object[].class.isAssignableFrom(arguments[0]) && !Iterable.class.isAssignableFrom(arguments[0]) && !Map.class.isAssignableFrom(arguments[0])) { result.addError("Input class " + arguments[0].getName() + " must be one of the following: " + String.class.getName() + ", " + Object[].class.getName() + ", " + Iterable.class.getName() + ", " + Map.class.getName()); } return result; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == controlValue) { result.addError("Control value has not been set"); return result; } if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 1 argument is required."); return result; } if (!controlValue.getClass().isAssignableFrom(arguments[0])) { result.addError("Control value class " + controlValue.getClass().getName() + " is not compatible with the input type: " + arguments[0]); } return result; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == controlValue) { result.addError("Control value has not been set"); return result; } if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 1 argument is required."); return result; } if (!controlValue.getClass().isAssignableFrom(arguments[0])) { result.addError("Control value class " + controlValue.getClass().getName() + " is not compatible with the input type: " + arguments[0]); } return result; } }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { if (null == predicate) { return new ValidationResult(); } return Signature.getInputSignature(predicate).assignable(arguments); } }
public ValidationResult testWithValidationResult(final Element element) { final ValidationResult result = new ValidationResult(); elementTuple.setElement(element); components.stream() .filter(predicate -> !predicate.test(elementTuple)) .forEach(predicate -> result.addError(getErrorMsg(predicate))); return result; }
public void validateGraph(final Store store, final String graphId, final Schema schema, final StoreProperties storeProperties, final List<String> parentSchemaIds, final String parentStorePropertiesId, final Pair<Schema, StoreProperties> existingGraphPair) { ValidationResult result = validate(store, graphId, schema, storeProperties, parentSchemaIds, parentStorePropertiesId, existingGraphPair, new ValidationResult()); if (!result.isValid()) { throw new IllegalArgumentException(result.getErrorString()); } }
@Override public ValidationResult assignable(final Class<?>... arguments) { if (isInput) { if (input instanceof InputValidator) { return ((InputValidator) input).isInputValid(arguments); } } else if (input instanceof OutputValidator) { return ((OutputValidator) input).isOutputValid(arguments); } final ValidationResult result = new ValidationResult(); if (type == null) { result.addError("Type could not be extracted from function " + input.getClass().getName()); return result; } if (UnknownGenericType.class.equals(type)) { // unknown type so anything is assignable return result; } if (arguments.length != 1 || null == arguments[0]) { result.addError("Incompatible number of types. " + input.getClass().getName() + ": [" + type + "], arguments: " + Arrays.toString(arguments)); return result; } final boolean isAssignable = type.isAssignableFrom(arguments[0]); if (!isAssignable) { result.addError("Incompatible types. " + input.getClass().getName() + ": [" + type + "], arguments: " + Arrays.toString(arguments)); } return result; }
public static void validate(final Store store, final String graphId, final Schema schema, final StoreProperties storeProperties, final List<String> parentSchemaIds, final String parentStorePropertiesId, final Pair<Schema, StoreProperties> existingGraphPair) { ValidationResult result = validate(store, graphId, schema, storeProperties, parentSchemaIds, parentStorePropertiesId, existingGraphPair, new ValidationResult()); if (!result.isValid()) { throw new IllegalArgumentException(result.getErrorString()); } }
@Override public void validateGraph(final Store store, final String graphId, final Schema schema, final StoreProperties storeProperties, final List<String> parentSchemaIds, final String parentStorePropertiesId, final Pair<Schema, StoreProperties> existingGraphPair) { ValidationResult result = super.validate(store, graphId, schema, storeProperties, parentSchemaIds, parentStorePropertiesId, existingGraphPair, new ValidationResult()); Set<String> errors = result.getErrors(); result.getErrors().removeIf(s -> s.equals(String.format(CANT_BOTH_BE_NULL, SCHEMA_STRING, PARENT_SCHEMA_IDS)) || s.equals(String.format(CANT_BOTH_BE_NULL, STORE_PROPERTIES_STRING, PARENT_STORE_PROPERTIES_ID))); result = new ValidationResult(); for (final String error : errors) { result.addError(error); } if (graphId.equals(store.getGraphId())) { result.addError(String.format(CANNOT_EXPORT_TO_THE_SAME_GRAPH_S, graphId)); } if (!result.isValid()) { throw new IllegalArgumentException(result.getErrorString()); } }
/** * Checks the second value of a {@link Pair} is not null * * @param fields the fields to validate * @return the validation result */ @SafeVarargs public static ValidationResult validateRequiredFields(final Pair<String, Object>... fields) { final ValidationResult validationResult = new ValidationResult(); for (final Pair field : fields) { if (null == field.getSecond()) { validationResult.addError(field.getFirst() + " is required."); } } return validationResult; }
/** * <p> * Validates the given object and results a ValidationResult that can * contain information as to why validation fails. * </p> * <p> * It is less efficient than just calling validate as complex validation * strings may be built to detail why objects are invalid. * </p> * * @param obj an object of type T to validate. * @return the ValidationResult. */ default ValidationResult validateWithValidationResult(final T obj) { final boolean result = validate(obj); final ValidationResult validationResult = new ValidationResult(); if (!result) { validationResult.addError("Validation failed for obj: " + obj); } return validationResult; } }
/** * Checks that the second value of a {@link Tuple3} satisfies the associated * {@link Predicate} condition. * * @param fields the fields to validate * @return the validation result */ @SafeVarargs public static ValidationResult validateRequiredFields(final Tuple3<String, Object, Predicate>... fields) { final ValidationResult validationResult = new ValidationResult(); for (final Tuple3<String, Object, Predicate> field : fields) { if (!field.get2().test(field.get1())) { validationResult.addError(field.get0()); } } return validationResult; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { if (null == getPredicate()) { return new ValidationResult(); } final Integer[] selection = getSelection(); if (null == selection) { return (Signature.getInputSignature(getPredicate()).assignable()); } final Class[] selectedArgs = new Class[selection.length]; int i = 0; for (final Integer selectionIndex : selection) { if (selectionIndex >= arguments.length) { final ValidationResult result = new ValidationResult(); result.addError("Incorrect selection of arguments for nested predicate " + getPredicate().getClass().getName() + ". Selection requires " + (Collections.max(Arrays.asList(selection)) + 1) + " arguments, however only " + arguments.length + " provided."); return result; } selectedArgs[i] = arguments[selectionIndex]; i++; } return (Signature.getInputSignature(getPredicate()).assignable(selectedArgs)); } }
@Override public ValidationResult assignable(final Class<?>... arguments) { if (isInput) { if (input instanceof InputValidator) { return ((InputValidator) input).isInputValid(arguments); } } else if (input instanceof OutputValidator) { return ((OutputValidator) input).isOutputValid(arguments); } final ValidationResult result = new ValidationResult(); if (null != types) { if (null != numClasses && types.length != arguments.length) { result.addError("Incompatible number of types. " + input.getClass() + ": " + Arrays.toString(types) + ", arguments: " + Arrays.toString(arguments)); return result; } if (null == numClasses) { for (final Class type : arguments) { result.add(types[0].assignable(type)); } } else { int i = 0; for (final Class type : arguments) { result.add(types[i].assignable(type)); i++; } } } return result; }