Set<String> sinkgroupNames = agentConf.getSinkgroupSet();
Map<String, ComponentConfiguration> compMap =
agentConf.getSinkGroupConfigMap();
Map<String, String> usedSinks = new HashMap<String, String>();
for (String groupName: sinkgroupNames) {
ComponentConfiguration comp = compMap.get(groupName);
if(comp != null) {
SinkGroupConfiguration groupConf = (SinkGroupConfiguration) comp;
List<String> groupSinkList = groupConf.getSinks();
List<Sink> groupSinks = new ArrayList<Sink>();
for (String sink : groupSinkList) {
Sink s = sinks.remove(sink);
if (s == null) {
String sinkUser = usedSinks.get(sink);
if (sinkUser != null) {
throw new InstantiationException(String.format(
"Sink %s of group %s already " +
"in use by group %s", sink, groupName, sinkUser));
} else {
throw new InstantiationException(String.format(
"Sink %s of group %s does "
+ "not exist or is not properly configured", sink,
groupName));
}
}
groupSinks.add(s);
usedSinks.put(sink, groupName);
}
SinkGroup group = new SinkGroup(groupSinks);
Configurables.configure(group, groupConf);
conf.getSinkRunners().put(comp.getComponentName(),
new SinkRunner(group.getProcessor()));
}
}
// add any unasigned sinks to solo collectors
for(Entry<String, Sink> entry : sinks.entrySet()) {