use of com.hortonworks.streamline.streams.catalog.TopologyComponent in project streamline by hortonworks.
the class TopologyComponentFactory method createRulesProcessorProvider.
private Provider<StreamlineProcessor> createRulesProcessorProvider(final RuleExtractor ruleExtractor) {
return new Provider<StreamlineProcessor>() {
@Override
public StreamlineProcessor create(TopologyComponent component) {
RulesProcessor processor = new RulesProcessor();
ObjectMapper objectMapper = new ObjectMapper();
if (component instanceof TopologyOutputComponent) {
Set<Stream> outputStreams = createOutputStreams((TopologyOutputComponent) component);
processor.addOutputStreams(outputStreams);
} else {
throw new IllegalArgumentException("Component " + component + " must be an instance of TopologyOutputComponent");
}
boolean processAll = component.getConfig().getBoolean(RulesProcessor.CONFIG_PROCESS_ALL, true);
processor.setProcessAll(processAll);
Object ruleList = component.getConfig().getAny(RulesProcessor.CONFIG_KEY_RULES);
List<Long> ruleIds = objectMapper.convertValue(ruleList, new TypeReference<List<Long>>() {
});
try {
List<Rule> rules = new ArrayList<>();
for (Long ruleId : ruleIds) {
rules.add(ruleExtractor.getRule(component.getTopologyId(), ruleId, component.getVersionId()));
}
processor.setRules(rules);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
return processor;
}
};
}
use of com.hortonworks.streamline.streams.catalog.TopologyComponent in project streamline by hortonworks.
the class TopologyComponentFactory method modelProcessorProvider.
private Map.Entry<String, Provider<StreamlineProcessor>> modelProcessorProvider() {
Provider<StreamlineProcessor> provider = new Provider<StreamlineProcessor>() {
@Override
public StreamlineProcessor create(TopologyComponent component) {
String modelName = component.getConfig().getString(ModelProcessor.CONFIG_MODEL_NAME, StringUtils.EMPTY);
ModelProcessor modelProcessor = new ModelProcessor();
if (!modelName.equals(StringUtils.EMPTY)) {
modelProcessor.setPmml(modelRegistryClient.getMLModelContents(modelName));
}
return modelProcessor;
}
};
return new SimpleImmutableEntry<>(PMML, provider);
}
use of com.hortonworks.streamline.streams.catalog.TopologyComponent in project streamline by hortonworks.
the class TopologyComponentFactory method normalizationProcessorProvider.
private Map.Entry<String, Provider<StreamlineProcessor>> normalizationProcessorProvider() {
Provider<StreamlineProcessor> provider = new Provider<StreamlineProcessor>() {
@Override
public StreamlineProcessor create(TopologyComponent component) {
Config config = component.getConfig();
Object typeObj = config.getAny(NormalizationProcessor.CONFIG_KEY_TYPE);
Object normConfObj = config.getAny(NormalizationProcessor.CONFIG_KEY_NORMALIZATION);
ObjectMapper objectMapper = new ObjectMapper();
NormalizationProcessor.Type type = objectMapper.convertValue(typeObj, NormalizationProcessor.Type.class);
Map<String, NormalizationConfig> normConfig = objectMapper.convertValue(normConfObj, new TypeReference<Map<String, NormalizationConfig>>() {
});
updateWithSchemas(component.getTopologyId(), component.getVersionId(), normConfig);
Set<Stream> outputStreams;
if (component instanceof TopologyOutputComponent) {
outputStreams = createOutputStreams((TopologyOutputComponent) component);
} else {
throw new IllegalArgumentException("Component " + component + " must be an instance of TopologyOutputComponent");
}
if (outputStreams.size() != 1) {
throw new IllegalArgumentException("Normalization component [" + component + "] must have only one output stream");
}
return new NormalizationProcessor(normConfig, outputStreams.iterator().next(), type);
}
};
return new SimpleImmutableEntry<>(NORMALIZATION, provider);
}
use of com.hortonworks.streamline.streams.catalog.TopologyComponent in project streamline by hortonworks.
the class TopologyComponentFactory method stageProcessorProvider.
private Map.Entry<String, Provider<StreamlineProcessor>> stageProcessorProvider() {
Provider<StreamlineProcessor> provider = new Provider<StreamlineProcessor>() {
@Override
public StreamlineProcessor create(TopologyComponent component) {
Object stageConfig = component.getConfig().getAny(StageProcessor.CONFIG_KEY_STAGE);
ObjectMapper objectMapper = new ObjectMapper();
StageAction stageAction = objectMapper.convertValue(stageConfig, StageAction.class);
StageProcessor stageProcessor = new StageProcessor();
stageProcessor.setStageAction(stageAction);
return stageProcessor;
}
};
return new SimpleImmutableEntry<>(STAGE, provider);
}
use of com.hortonworks.streamline.streams.catalog.TopologyComponent in project streamline by hortonworks.
the class TopologyComponentFactory method splitProcessorProvider.
private Map.Entry<String, Provider<StreamlineProcessor>> splitProcessorProvider() {
Provider<StreamlineProcessor> provider = new Provider<StreamlineProcessor>() {
@Override
public StreamlineProcessor create(TopologyComponent component) {
Object splitConfig = component.getConfig().getAny(SplitProcessor.CONFIG_KEY_SPLIT);
ObjectMapper objectMapper = new ObjectMapper();
SplitAction splitAction = objectMapper.convertValue(splitConfig, SplitAction.class);
SplitProcessor splitProcessor = new SplitProcessor();
if (component instanceof TopologyOutputComponent) {
splitProcessor.addOutputStreams(createOutputStreams((TopologyOutputComponent) component));
} else {
throw new IllegalArgumentException("Component " + component + " must be an instance of TopologyOutputComponent");
}
splitProcessor.setSplitAction(splitAction);
return splitProcessor;
}
};
return new SimpleImmutableEntry<>(SPLIT, provider);
}
Aggregations