in modules/api/src/main/java/org/apache/fluo/api/config/FluoConfiguration.java [642:688]
public List<ObserverSpecification> getObserverSpecifications() {
List<ObserverSpecification> configList = new ArrayList<>();
Iterator<String> iter = getKeys();
while (iter.hasNext()) {
String key = iter.next();
if (key.startsWith(FluoConfiguration.OBSERVER_PREFIX)
&& !key.equals(FluoConfiguration.OBSERVER_PROVIDER)
&& !key.equals(FluoConfiguration.OBSERVER_INIT_DIR_PROP)
&& !key.equals(FluoConfiguration.OBSERVER_JARS_URL_PROP)) {
String value = getString(key).trim();
if (value.isEmpty()) {
throw new IllegalArgumentException(key + " is set to empty value");
}
String[] fields = value.split(",");
if (fields.length == 0) {
throw new IllegalArgumentException(key + " has bad value: " + value);
}
String className = fields[0];
if (className.isEmpty()) {
throw new IllegalArgumentException(key + " has empty class name: " + className);
}
Map<String, String> params = new HashMap<>();
for (int i = 1; i < fields.length; i++) {
String[] kv = fields[i].split("=");
if (kv.length != 2) {
throw new IllegalArgumentException(key
+ " has invalid param. Expected 'key=value' but encountered '" + fields[i] + "'");
}
if (kv[0].isEmpty() || kv[1].isEmpty()) {
throw new IllegalArgumentException(
key + " has empty key or value in param: " + fields[i]);
}
params.put(kv[0], kv[1]);
}
ObserverSpecification observerSpecification = new ObserverSpecification(className, params);
configList.add(observerSpecification);
}
}
return configList;
}