in winegrower-core/src/main/java/org/apache/winegrower/service/DefaultConfigurationAdmin.java [122:157]
private Configuration getOrCreate(final String factoryPid, final String pid, final String location,
final String name) {
final Key key = new Key(factoryPid, pid);
final Configuration existing = configurations.get(key);
if (existing != null) {
return existing;
}
final DefaultConfiguration created = new DefaultConfiguration(providedConfiguration,
factoryPid, pid, location, name) {
@Override
public void setBundleLocation(final String location) {
super.setBundleLocation(location);
final ConfigurationEvent event = new ConfigurationEvent(
getSelfReference(), ConfigurationEvent.CM_LOCATION_CHANGED, factoryPid, pid);
configurationListeners.forEach(it -> it.configurationEvent(event));
}
@Override
public void update(Dictionary<String, ?> properties) {
super.update(properties);
final ConfigurationEvent event = new ConfigurationEvent(
getSelfReference(), ConfigurationEvent.CM_UPDATED, factoryPid, pid);
configurationListeners.forEach(it -> it.configurationEvent(event));
}
@Override
public void delete() {
super.delete();
final ConfigurationEvent event = new ConfigurationEvent(
getSelfReference(), ConfigurationEvent.CM_DELETED, factoryPid, pid);
configurationListeners.forEach(it -> it.configurationEvent(event));
}
};
configurations.putIfAbsent(key, created);
return created;
}