public SamzaSqlApplicationConfig(Config staticConfig, Set<String> inputSystemStreams,
Set<String> outputSystemStreams) {
ioResolver = createIOResolver(staticConfig);
inputSystemStreamConfigBySource = inputSystemStreams.stream()
.collect(Collectors.toMap(Function.identity(), src -> ioResolver.fetchSourceInfo(src)));
outputSystemStreamConfigsBySource = outputSystemStreams.stream()
.collect(Collectors.toMap(Function.identity(), x -> ioResolver.fetchSinkInfo(x)));
systemStreamConfigsBySource = new HashMap<>(inputSystemStreamConfigBySource);
systemStreamConfigsBySource.putAll(outputSystemStreamConfigsBySource);
Set<SqlIOConfig> systemStreamConfigs = new HashSet<>(systemStreamConfigsBySource.values());
relSchemaProvidersBySource = systemStreamConfigs.stream()
.collect(Collectors.toMap(SqlIOConfig::getSource,
x -> initializePlugin("RelSchemaProvider", x.getRelSchemaProviderName(), staticConfig,
CFG_FMT_REL_SCHEMA_PROVIDER_DOMAIN,
(o, c) -> ((RelSchemaProviderFactory) o).create(x.getSystemStream(), c))));
samzaRelConvertersBySource = systemStreamConfigs.stream()
.collect(Collectors.toMap(SqlIOConfig::getSource,
x -> initializePlugin("SamzaRelConverter", x.getSamzaRelConverterName(), staticConfig,
CFG_FMT_SAMZA_REL_CONVERTER_DOMAIN, (o, c) -> ((SamzaRelConverterFactory) o).create(x.getSystemStream(),
relSchemaProvidersBySource.get(x.getSource()), c))));
udfResolver = createUdfResolver(staticConfig);
udfMetadata = udfResolver.getUdfs();
windowDurationMs = staticConfig.getLong(CFG_GROUPBY_WINDOW_DURATION_MS, DEFAULT_GROUPBY_WINDOW_DURATION_MS);
outputSystemStreamConfigsBySource.forEach((k, v) -> {
if (k.split("\\.")[0].equals(SamzaSqlApplicationConfig.SAMZA_SYSTEM_LOG)) {
systemStreamConfigsBySource.remove(k);
}
});
}