@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; } }
@Override protected boolean matchesSafely( final Optional<ConfigItem> possibleConfig, final Description desc) { if (!possibleConfig.isPresent()) { desc.appendText(" but the name was not known"); return false; } final ConfigItem configItem = possibleConfig.get(); if (!(configItem instanceof ConfigItem.Unresolved)) { desc.appendText(" but was resolved item ").appendValue(configItem); return false; } if (!configItem.getPropertyName().equals(propertyName)) { desc.appendText(" but propertyName was ").appendValue(configItem.getPropertyName()); return false; } return true; }
@Test public void shouldReturnPropertyName() { assertThat(RESOLVED_NO_VALIDATOR.getPropertyName(), is(KsqlConfig.SINK_NUMBER_OF_PARTITIONS_PROPERTY)); assertThat(RESOLVED_WITH_VALIDATOR.getPropertyName(), is(StreamsConfig.SEND_BUFFER_CONFIG)); assertThat(UNRESOLVED.getPropertyName(), is("some.unresolved.prop")); }
@Before public void setUp() { parser = new LocalPropertyParser(resolver, validator); when(configItem.parseValue(any(Object.class))) .thenReturn(PARSED_VALUE); when(configItem.getPropertyName()) .thenReturn(PARSED_PROP_NAME); when(resolver.resolve(anyString(), anyBoolean())) .thenReturn(Optional.of(configItem)); }
@Override protected boolean matchesSafely( final Optional<ConfigItem> possibleConfig, final Description desc) { if (!possibleConfig.isPresent()) { desc.appendText(" but the name was not known"); return false; } final ConfigItem configItem = possibleConfig.get(); if (!(configItem instanceof ConfigItem.Resolved)) { desc.appendText(" but was unresolved item ").appendValue(configItem); return false; } if (!configItem.getPropertyName().equals(propertyName)) { desc.appendText(" but propertyName was ").appendValue(configItem.getPropertyName()); return false; } final ConfigItem.Resolved resolvedItem = (Resolved) configItem; if (expectedKey.map(k -> !k.equals(resolvedItem.getKey())).orElse(false)) { desc.appendText(" but key was ").appendValue(resolvedItem.getKey()); return false; } return true; }