@Override protected Collection<ValidationResult> customValidate(final ValidationContext validationContext) { final List<ValidationResult> results = new ArrayList<>(super.customValidate(validationContext)); final Set<SchemaField> suppliedFields = getSuppliedSchemaFields(validationContext); final Set<SchemaField> requiredFields = getRequiredSchemaFields(validationContext); final Set<SchemaField> missingFields = new HashSet<>(requiredFields); missingFields.removeAll(suppliedFields); if (!missingFields.isEmpty()) { results.add(new ValidationResult.Builder() .subject("Schema Access Strategy") .valid(false) .explanation("The configured Schema Write Strategy requires the " + missingFields.iterator().next() + " but the configured Schema Access Strategy does not provide this information in conjunction with the selected Schema Registry. " + "This Schema Access Strategy, as configured, cannot be used in conjunction with this Schema Write Strategy.") .build()); } return results; } }
@Override protected Collection<ValidationResult> customValidate(final ValidationContext validationContext) { ArrayList<ValidationResult> results = new ArrayList<>(super.customValidate(validationContext)); // validate the grok expression against configuration GrokCompiler grokCompiler = GrokCompiler.newInstance(); String subject = GROK_EXPRESSION.getName(); String input = validationContext.getProperty(GROK_EXPRESSION).getValue(); GrokExpressionValidator validator; try (final InputStream in = getClass().getResourceAsStream(DEFAULT_PATTERN_NAME); final Reader reader = new InputStreamReader(in)) { grokCompiler.register(reader); } catch (IOException e) { results.add(new ValidationResult.Builder() .input(input) .subject(subject) .valid(false) .explanation("Unable to load default patterns: " + e.getMessage()) .build()); } validator = new GrokExpressionValidator(validationContext.getProperty(PATTERN_FILE).getValue(),grokCompiler); results.add(validator.validate(subject,input,validationContext)); return results; }