in src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java [199:236]
private static Configuration getOrCreateConfiguration(
final ConfigurationAdmin ca,
final String factoryPid,
final String configPidOrName,
final String location,
final boolean createIfNeeded)
throws IOException, InvalidSyntaxException {
Configuration result = null;
if (factoryPid == null) {
if (createIfNeeded) {
result = ca.getConfiguration(configPidOrName, location);
} else {
final String filter = "(" + Constants.SERVICE_PID + "=" + encode(configPidOrName) + ")";
final Configuration[] configs = ca.listConfigurations(filter);
if (configs != null && configs.length > 0) {
result = configs[0];
}
}
} else {
if (createIfNeeded) {
result = ca.getFactoryConfiguration(factoryPid, configPidOrName, location);
} else {
final String filter = "(&("
+ ConfigurationAdmin.SERVICE_FACTORYPID + "=" + encode(factoryPid)
+ ")("
+ Constants.SERVICE_PID + "="
+ encode(ConfigUtil.getPIDOfFactoryPID(factoryPid, configPidOrName))
+ "))";
final Configuration[] configs = ca.listConfigurations(filter);
if (configs != null && configs.length > 0) {
result = configs[0];
}
}
}
return result;
}