@Override protected String getSSLProtocolForValidation(final ValidationContext validationContext) { return validationContext.getProperty(RESTRICTED_SSL_ALGORITHM).getValue(); } }
protected Set<SchemaField> getSuppliedSchemaFields(final ValidationContext validationContext) { final String accessStrategyValue = validationContext.getProperty(getSchemaAcessStrategyDescriptor()).getValue(); final SchemaRegistry schemaRegistry = validationContext.getProperty(SCHEMA_REGISTRY).asControllerService(SchemaRegistry.class); final SchemaAccessStrategy accessStrategy = getSchemaAccessStrategy(accessStrategyValue, schemaRegistry, validationContext); if (accessStrategy == null) { return EnumSet.noneOf(SchemaField.class); } final Set<SchemaField> suppliedFields = accessStrategy.getSuppliedSchemaFields(); return suppliedFields; }
@Override protected Collection<ValidationResult> customValidate(final ValidationContext validationContext) { final List<ValidationResult> results = new ArrayList<>(1); final String format = validationContext.getProperty(FORMAT).getValue(); if (HEX_FORMAT.getValue().equals(format)) { final String byteSequence = validationContext.getProperty(BYTE_SEQUENCE).getValue(); final ValidationResult result = new HexStringPropertyValidator().validate(BYTE_SEQUENCE.getName(), byteSequence, validationContext); results.add(result); } return results; }
@Override protected Collection<ValidationResult> customValidate(final ValidationContext validationContext) { final List<ValidationResult> results = new ArrayList<>(); final String clientAuth = validationContext.getProperty(CLIENT_AUTH).getValue(); final SSLContextService sslContextService = validationContext.getProperty(SSL_CONTEXT_SERVICE).asControllerService(SSLContextService.class); if (sslContextService != null && StringUtils.isBlank(clientAuth)) { results.add(new ValidationResult.Builder() .explanation("Client Auth must be provided when using TLS/SSL") .valid(false).subject("Client Auth").build()); } return results; }
@Override protected Collection<ValidationResult> customValidate(final ValidationContext context) { final List<ValidationResult> errors = new ArrayList<>(super.customValidate(context)); final String to = context.getProperty(TO).getValue(); final String cc = context.getProperty(CC).getValue(); final String bcc = context.getProperty(BCC).getValue(); if (to == null && cc == null && bcc == null) { errors.add(new ValidationResult.Builder().subject("To, CC, BCC").valid(false).explanation("Must specify at least one To/CC/BCC address").build()); } return errors; }
@Override protected Collection<ValidationResult> customValidate(final ValidationContext validationContext) { final List<ValidationResult> results = new ArrayList<>(); final String clientAuth = validationContext.getProperty(CLIENT_AUTH).getValue(); final SSLContextService sslContextService = validationContext.getProperty(SSL_CONTEXT_SERVICE).asControllerService(SSLContextService.class); if (sslContextService != null && StringUtils.isBlank(clientAuth)) { results.add(new ValidationResult.Builder() .explanation("Client Auth must be provided when using TLS/SSL") .valid(false).subject("Client Auth").build()); } return results; }
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 protected Collection<ValidationResult> customValidate(final ValidationContext context) { final List<ValidationResult> errors = new ArrayList<>(super.customValidate(context)); final String to = context.getProperty(TO).getValue(); final String cc = context.getProperty(CC).getValue(); final String bcc = context.getProperty(BCC).getValue(); if (to == null && cc == null && bcc == null) { errors.add(new ValidationResult.Builder().subject("To, CC, BCC").valid(false).explanation("Must specify at least one To/CC/BCC address").build()); } return errors; }
default Optional<ValidationResult> validateRequiredField(ValidationContext context, PropertyDescriptor prop) { if (!context.getProperty(prop).isSet()) { return Optional.of(new ValidationResult.Builder() .subject(prop.getDisplayName()) .valid(false) .explanation(String.format("required by '%s' auth.", this.getClass().getSimpleName())) .build()); } return Optional.empty(); } }
@Override protected Collection<ValidationResult> customValidate(ValidationContext validationContext) { List<ValidationResult> results = new ArrayList<>(); boolean invalidState = (validationContext.getProperty(LINE_SPLIT_COUNT).asInteger() == 0 && !validationContext.getProperty(FRAGMENT_MAX_SIZE).isSet()); results.add(new ValidationResult.Builder().subject("Maximum Fragment Size").valid(!invalidState) .explanation("Property must be specified when Line Split Count is 0").build()); return results; }
@Override protected Collection<ValidationResult> customValidate(final ValidationContext context) { final Collection<ValidationResult> results = new ArrayList<>(); final String protocol = context.getProperty(PROTOCOL).getValue(); final SSLContextService sslContextService = context.getProperty(SSL_CONTEXT_SERVICE).asControllerService(SSLContextService.class); if (UDP_VALUE.getValue().equals(protocol) && sslContextService != null) { results.add(new ValidationResult.Builder() .explanation("SSL can not be used with UDP") .valid(false).subject("SSL Context").build()); } return results; }
protected Set<SchemaField> getRequiredSchemaFields(final ValidationContext validationContext) { final String writeStrategyValue = validationContext.getProperty(getSchemaWriteStrategyDescriptor()).getValue(); final SchemaAccessWriter writer = getSchemaWriteStrategy(writeStrategyValue); if (writer == null) { return EnumSet.noneOf(SchemaField.class); } final Set<SchemaField> requiredFields = writer.getRequiredSchemaFields(); return requiredFields; }
@Override protected Set<SchemaField> getRequiredSchemaFields(final ValidationContext validationContext) { final String writeStrategyValue = validationContext.getProperty(getSchemaWriteStrategyDescriptor()).getValue(); if (writeStrategyValue.equalsIgnoreCase(AVRO_EMBEDDED.getValue())) { return requiredSchemaFields; } return super.getRequiredSchemaFields(validationContext); }
public static void validateProxyProperties(ValidationContext context, Collection<ValidationResult> results) { if (context.getProperty(PROXY_HOST).isSet() && !context.getProperty(PROXY_PORT).isSet()) { results.add(new ValidationResult.Builder() .explanation("Proxy Host was set but no Proxy Port was specified") .valid(false) .subject("Proxy server configuration") .build()); } ProxyConfiguration.validateProxySpec(context, results, PROXY_SPECS); } }
@Override protected Collection<ValidationResult> customValidate(ValidationContext validationContext) { Set<ValidationResult> results = new HashSet<>(); // Ensure that if username or password is set, then the other is too String userName = validationContext.getProperty(USERNAME).evaluateAttributeExpressions().getValue(); String password = validationContext.getProperty(PASSWORD).evaluateAttributeExpressions().getValue(); if (StringUtils.isEmpty(userName) != StringUtils.isEmpty(password)) { results.add(new ValidationResult.Builder().valid(false).explanation( "If username or password is specified, then the other must be specified as well").build()); } return results; }
@Override protected Collection<ValidationResult> customValidate(ValidationContext validationContext) { Set<ValidationResult> results = new HashSet<>(); // Ensure that if username or password is set, then the other is too String userName = validationContext.getProperty(USERNAME).evaluateAttributeExpressions().getValue(); String password = validationContext.getProperty(PASSWORD).evaluateAttributeExpressions().getValue(); if (StringUtils.isEmpty(userName) != StringUtils.isEmpty(password)) { results.add(new ValidationResult.Builder().valid(false).explanation( "If username or password is specified, then the other must be specified as well").build()); } return results; }
@Override protected Collection<ValidationResult> customValidate(final ValidationContext validationContext) { final String schemaAccessStrategy = validationContext.getProperty(getSchemaAcessStrategyDescriptor()).getValue(); return SchemaAccessUtils.validateSchemaAccessStrategy(validationContext, schemaAccessStrategy, getSchemaAccessStrategyValues()); }
@Override protected Collection<ValidationResult> customValidate(ValidationContext validationContext) { List<ValidationResult> results = new ArrayList<>(super.customValidate(validationContext)); final PropertyValue columnForPartitioning = validationContext.getProperty(COLUMN_FOR_VALUE_PARTITIONING); // If no EL is present, ensure it's a single column (i.e. no commas in the property value) if (columnForPartitioning.isSet() && !columnForPartitioning.isExpressionLanguagePresent() && columnForPartitioning.getValue().contains(",")) { results.add(new ValidationResult.Builder().valid(false).explanation( COLUMN_FOR_VALUE_PARTITIONING.getDisplayName() + " requires a single column name, but a comma was detected").build()); } return results; }
@Override protected Collection<ValidationResult> customValidate(final ValidationContext validationContext) { final List<ValidationResult> results = new ArrayList<>(); final SSLContextService sslContextService = validationContext.getProperty(SSL_CONTEXT_SERVICE).asControllerService(SSLContextService.class); if (sslContextService != null && sslContextService.isTrustStoreConfigured() == false) { results.add(new ValidationResult.Builder() .explanation("The context service must have a truststore configured for the beats forwarder client to work correctly") .valid(false).subject(SSL_CONTEXT_SERVICE.getName()).build()); } return results; }
static void validateProperties(ValidationContext context, Collection<ValidationResult> results, Scope scope) { validateRequiredProperty(context, results, ListedEntityTracker.TRACKING_STATE_CACHE); validateRequiredProperty(context, results, ListedEntityTracker.TRACKING_TIME_WINDOW); if (Scope.LOCAL.equals(scope) && StringUtils.isEmpty(context.getProperty(NODE_IDENTIFIER).evaluateAttributeExpressions().getValue())) { results.add(new ValidationResult.Builder() .subject(NODE_IDENTIFIER.getDisplayName()) .explanation(format("'%s' is required to use local scope with '%s' listing strategy", NODE_IDENTIFIER.getDisplayName(), AbstractListProcessor.BY_ENTITIES.getDisplayName())) .build()); } }