@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; } }
@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)); }
@Test public void shouldCallResolverForOtherProperties() { // When: parser.parse(KsqlConfig.KSQL_SERVICE_ID_CONFIG, "100"); // Then: verify(resolver).resolve(KsqlConfig.KSQL_SERVICE_ID_CONFIG, true); }
@Test public void shouldNotCallResolverForRunScriptConstant() { // When: parser.parse(KsqlConstants.RUN_SCRIPT_STATEMENTS_CONTENT, "100"); // Then: verify(resolver, never()).resolve(anyString(), anyBoolean()); }
@Test public void shouldNotCallResolverForAvroSchemaConstant() { // When: parser.parse(DdlConfig.AVRO_SCHEMA, "100"); // Then: verify(resolver, never()).resolve(anyString(), anyBoolean()); }
@Test public void shouldThrowIfResolverFailsToResolve() { // Given: expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage( "Not recognizable as ksql, streams, consumer, or producer property: 'Unknown'"); when(resolver.resolve(anyString(), anyBoolean())) .thenReturn(Optional.empty()); // When: parser.parse("Unknown", "100"); }