private String convertToObfuscatedString() { return configItem.convertToString(value); } }
private boolean isResolved() { return configItem.isResolved(); }
static ConfigItem unresolved(final String propertyName) { return new ConfigItem.Unresolved(propertyName); }
@Override public Object parse(final String property, final Object value) { if (property.equalsIgnoreCase(DdlConfig.AVRO_SCHEMA) || property.equalsIgnoreCase(KsqlConstants.RUN_SCRIPT_STATEMENTS_CONTENT)) { validator.validate(property, value); return value; } final ConfigItem configItem = resolver.resolve(property, true) .orElseThrow(() -> new IllegalArgumentException(String.format( "Not recognizable as ksql, streams, consumer, or producer property: '%s'", property))); final Object parsedValue = configItem.parseValue(value); validator.validate(configItem.getPropertyName(), parsedValue); return parsedValue; } }
@Test public void shouldResolveKsqlProperty() { assertThat(resolver.resolve(KsqlConfig.SINK_NUMBER_OF_PARTITIONS_PROPERTY, true), is(resolvedItem(KsqlConfig.SINK_NUMBER_OF_PARTITIONS_PROPERTY, KSQL_CONFIG_DEF))); }
private static boolean isUnknownPropertyName(final String propertyName) { return !new KsqlConfigResolver() .resolve(propertyName, false) .isPresent(); }
@Override public Optional<ConfigItem> resolve(final String propertyName, final boolean strict) { if (propertyName.startsWith(KsqlConfig.KSQL_CONFIG_PROPERTY_PREFIX) && !propertyName.startsWith(KsqlConfig.KSQL_STREAMS_PREFIX)) { return resolveKsqlConfig(propertyName); } return resolveStreamsConfig(propertyName, strict); }
private static Optional<ConfigItem> resolveKsqlConfig(final String propertyName) { final Optional<ConfigItem> possibleItem = resolveConfig("", KSQL_CONFIG_DEF, propertyName); if (possibleItem.isPresent()) { return possibleItem; } if (propertyName.startsWith(KsqlConfig.KSQL_FUNCTIONS_PROPERTY_PREFIX)) { // Functions properties are free form, so can not be resolved / validated: return Optional.of(ConfigItem.unresolved(propertyName)); } return Optional.empty(); }
@Override public boolean isDefaultValue(final Object value) { final Object parsed = parseValue(value); return Objects.equals(parsed, key.defaultValue); }
static ConfigItem resolved(final ConfigKey key) { return new ConfigItem.Resolved(key); }
@Test public void shouldNotFindPrefixedKsqlProperty() { assertNotFound( KsqlConfig.KSQL_CONFIG_PROPERTY_PREFIX + KsqlConfig.SINK_NUMBER_OF_PARTITIONS_PROPERTY); }
@Test public void shouldResolveKnownKsqlFunctionProperty() { assertThat(resolver.resolve(KsqlConfig.KSQL_FUNCTIONS_SUBSTRING_LEGACY_ARGS_CONFIG, true), is(resolvedItem(KsqlConfig.KSQL_FUNCTIONS_SUBSTRING_LEGACY_ARGS_CONFIG, KSQL_CONFIG_DEF))); }
@Override public String convertToString(final Object value) { final Object parsed = parseValue(value); return ConfigDef.convertToString(parsed, key.type); }
@Test public void shouldResolveKsqlConsumerPrefixedConsumerConfig() { assertThat(resolver.resolve( KsqlConfig.KSQL_STREAMS_PREFIX + StreamsConfig.CONSUMER_PREFIX + ConsumerConfig.FETCH_MIN_BYTES_CONFIG, true), is(resolvedItem(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, CONSUMER_CONFIG_DEF))); }
@Test public void shouldResolveKsqlProducerPrefixedProducerConfig() { assertThat(resolver.resolve( KsqlConfig.KSQL_STREAMS_PREFIX + StreamsConfig.PRODUCER_PREFIX + ProducerConfig.BUFFER_MEMORY_CONFIG, true), is(resolvedItem(ProducerConfig.BUFFER_MEMORY_CONFIG, PRODUCER_CONFIG_DEF))); }
@Test public void shouldResolveProducerConfig() { assertThat(resolver.resolve(ProducerConfig.BUFFER_MEMORY_CONFIG, true), is(resolvedItem(ProducerConfig.BUFFER_MEMORY_CONFIG, PRODUCER_CONFIG_DEF))); }
@Test public void shouldResolveProducerPrefixedProducerConfig() { assertThat(resolver.resolve( StreamsConfig.PRODUCER_PREFIX + ProducerConfig.BUFFER_MEMORY_CONFIG, true), is(resolvedItem(ProducerConfig.BUFFER_MEMORY_CONFIG, PRODUCER_CONFIG_DEF))); }
@Test public void shouldResolveKsqlPrefixedProducerConfig() { assertThat(resolver.resolve( KsqlConfig.KSQL_STREAMS_PREFIX + ProducerConfig.BUFFER_MEMORY_CONFIG, true), is(resolvedItem(ProducerConfig.BUFFER_MEMORY_CONFIG, PRODUCER_CONFIG_DEF))); }
@Test public void shouldResolveConsumerConfig() { assertThat(resolver.resolve(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, true), is(resolvedItem(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, CONSUMER_CONFIG_DEF))); }
@Test public void shouldResolveKsqlPrefixedConsumerConfig() { assertThat(resolver.resolve( KsqlConfig.KSQL_STREAMS_PREFIX + ConsumerConfig.FETCH_MIN_BYTES_CONFIG, true), is(resolvedItem(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, CONSUMER_CONFIG_DEF))); }