protected Collection<ValidationResult> customValidate(ValidationContext validationContext) { // For backwards-compatibility, keep track of whether the table name and max-value column properties are dynamic (i.e. has expression language) isDynamicTableName = validationContext.isExpressionLanguagePresent(validationContext.getProperty(TABLE_NAME).getValue()); isDynamicMaxValues = validationContext.isExpressionLanguagePresent(validationContext.getProperty(MAX_VALUE_COLUMN_NAMES).getValue()); return super.customValidate(validationContext); }
@Override public ValidationResult validate(String subject, String input, ValidationContext context) { // Allows special, escaped characters as input, which is then unescaped and converted to a single character. // Examples for special characters: \t (or \u0009), \f. input = unescapeString(input); return new ValidationResult.Builder() .subject(subject) .input(input) .explanation("Only non-null single characters are supported") .valid(input.length() == 1 && input.charAt(0) != 0 || context.isExpressionLanguagePresent(input)) .build(); } };
@Override public ValidationResult validate(String subject, String input, ValidationContext context) { // Allows special, escaped characters as input, which is then unescaped and converted to a single character. // Examples for special characters: \t (or \u0009), \f. input = unescapeString(input); return new ValidationResult.Builder() .subject(subject) .input(input) .explanation("Only non-null single characters are supported") .valid((input.length() == 1 && input.charAt(0) != 0) || context.isExpressionLanguagePresent(input)) .build(); } };
@Override public ValidationResult validate(final String subject, final String input, final ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").valid(true).build(); } final boolean matches = pattern.matcher(input).matches(); return new ValidationResult.Builder() .input(input) .subject(subject) .valid(matches) .explanation(matches ? null : "Value does not match regular expression: " + pattern.pattern()) .build(); } };
@Override public ValidationResult validate(final String subject, final String value, final ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value)) { return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build(); } final boolean valid = "true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value); final String explanation = valid ? null : "Value must be 'true' or 'false'"; return new ValidationResult.Builder().subject(subject).input(value).valid(valid).explanation(explanation).build(); } };
@Override public ValidationResult validate(final String subject, final String input, final ValidationContext context) { final ValidationResult.Builder builder = new ValidationResult.Builder(); builder.subject(subject).input(input); if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { return builder.valid(true).explanation("Contains Expression Language").build(); } if(TYPES.contains(input.toUpperCase())) { builder.valid(true); } else { builder.valid(false).explanation("Load File Type must be one of the following options: " + StringUtils.join(TYPES, ", ")); } return builder.build(); } };
@Override public ValidationResult validate(final String subject, final String value, final ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value)) { return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build(); } String reason = null; try { NumberFormat.getInstance().parse(value); } catch (ParseException e) { reason = "not a valid Number"; } return new ValidationResult.Builder().subject(subject).input(value).explanation(reason).valid(reason == null).build(); } };
@Override public ValidationResult validate(final String subject, final String value, final ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value)) { return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build(); } String reason = null; try { Document doc = Jsoup.parse("<html></html>"); doc.select(value); } catch (final Selector.SelectorParseException e) { reason = "\"" + value + "\" is an invalid CSS selector"; } return new ValidationResult.Builder().subject(subject).input(value).explanation(reason).valid(reason == null).build(); } };
@Override public ValidationResult validate(String subject, String input, ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").valid(true).build(); } return StandardValidators.NON_EMPTY_VALIDATOR.validate(subject, input, context); } }
@Override public ValidationResult validate(String subject, String input, ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").valid(true).build(); } return StandardValidators.NON_EMPTY_VALIDATOR.validate(subject, input, context); } };
@Override public ValidationResult validate(String subject, String value, ValidationContext context) { final ValidationResult.Builder builder = new ValidationResult.Builder(); builder.subject(subject).input(value); if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value)) { return builder.valid(true).explanation("Contains Expression Language").build(); } String reason = null; try { new MongoClientURI(value); } catch (final Exception e) { reason = e.getLocalizedMessage(); } return builder.explanation(reason).valid(reason == null).build(); } };
@Override public ValidationResult validate(final String subject, final String input, final ValidationContext context) { if ((StringUtils.isBlank(input))) { return new ValidationResult.Builder().subject(subject).input(input).valid(true).explanation("No Language Input Present").build(); } if (context.isExpressionLanguagePresent(input)) { return new ValidationResult.Builder().subject(subject).input(input).valid(true).explanation("Expression Language Present").build(); } if (Languages.getLanguageMap().keySet().contains(input.toLowerCase())) { return new ValidationResult.Builder().subject(subject).input(input).valid(true).build(); } return new ValidationResult.Builder().subject(subject).input(input).valid(false).explanation(input + " is not a language that is supported by Yandex").build(); }
@Override public ValidationResult validate(final String subject, final String input, final ValidationContext context) { final ValidationResult.Builder builder = new ValidationResult.Builder(); builder.subject("Property Name").input(subject); if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { return builder.valid(true).explanation("Contains Expression Language").build(); } try { FlowFile.KeyValidator.validateKey(subject); builder.valid(true); } catch (final IllegalArgumentException e) { builder.valid(false).explanation(e.getMessage()); } return builder.build(); } };
@Override public ValidationResult validate(final String subject, final String value, final ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value)) { return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build(); } String reason = null; try { Integer.parseInt(value); } catch (final NumberFormatException e) { reason = "not a valid integer"; } return new ValidationResult.Builder().subject(subject).input(value).explanation(reason).valid(reason == null).build(); } };
@Override public ValidationResult validate(final String subject, final String input, final ValidationContext context) { final ValidationResult.Builder builder = new ValidationResult.Builder(); builder.subject(subject).input(input); if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { return builder.valid(true).explanation("Contains Expression Language").build(); } try { FlowFile.KeyValidator.validateKey(input); builder.valid(true); } catch (final IllegalArgumentException e) { builder.valid(false).explanation(e.getMessage()); } return builder.build(); } };
@Override public ValidationResult validate(String subject, String input, ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { return (new ValidationResult.Builder()).subject(subject).input(input).explanation("Expression Language Present").valid(true).build(); } else { String reason = null; try { Double.parseDouble(input); } catch (NumberFormatException e) { reason = "not a valid Double"; } return (new ValidationResult.Builder()).subject(subject).input(input).explanation(reason).valid(reason == null).build(); } } };
@Override public ValidationResult validate(final String subject, final String value, final ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(value)) { return new ValidationResult.Builder().subject(subject).input(value).explanation("Expression Language Present").valid(true).build(); } String reason = null; try { Long.parseLong(value); } catch (final NumberFormatException e) { reason = "not a valid Long"; } return new ValidationResult.Builder().subject(subject).input(value).explanation(reason).valid(reason == null).build(); } };
@Override public ValidationResult validate(final String subject, final String input, final ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").valid(true).build(); } try { new URI(input); return new ValidationResult.Builder().subject(subject).input(input).explanation("Valid URI").valid(true).build(); } catch (final Exception e) { return new ValidationResult.Builder().subject(subject).input(input).explanation("Not a valid URI").valid(false).build(); } } };
@Override public ValidationResult validate(final String subject, final String input, final ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { try { final String result = context.newExpressionLanguageCompiler().validateExpression(input, true); if (!isEmpty(result)) { return new ValidationResult.Builder().subject(subject).input(input).valid(false).explanation(result).build(); } } catch (final Exception e) { return new ValidationResult.Builder().subject(subject).input(input).valid(false).explanation(e.getMessage()).build(); } } return new ValidationResult.Builder().subject(subject).input(input).valid(true).build(); }
@Override public ValidationResult validate(final String subject, final String input, final ValidationContext context) { if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) { return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").valid(true).build(); } try { final String evaluatedInput = context.newPropertyValue(input).evaluateAttributeExpressions().getValue(); new URL(evaluatedInput); return new ValidationResult.Builder().subject(subject).input(input).explanation("Valid URL").valid(true).build(); } catch (final Exception e) { return new ValidationResult.Builder().subject(subject).input(input).explanation("Not a valid URL").valid(false).build(); } } };