private void merge(ConfigurationChanges diffs, ImageWriterFactory prev, ImageWriterFactory factory, String imageWritersDN)
throws NamingException {
for (Entry<String, ImageWriterParam> entry : prev.getEntries()) {
String tsuid = entry.getKey();
if (factory.get(tsuid) == null) {
String dn = dnOf(tsuid, imageWritersDN);
config.destroySubcontext(dn);
ConfigurationChanges.addModifiedObject(diffs, dn, ConfigurationChanges.ChangeType.D);
}
}
for (Entry<String, ImageWriterParam> entry : factory.getEntries()) {
String tsuid = entry.getKey();
String dn = dnOf(tsuid, imageWritersDN);
ImageWriterParam prevParam = prev.get(tsuid);
if (prevParam == null) {
ConfigurationChanges.ModifiedObject ldapObj =
ConfigurationChanges.addModifiedObject(diffs, dn, ConfigurationChanges.ChangeType.C);
config.createSubcontext(dn,
storeTo(ConfigurationChanges.nullifyIfNotVerbose(diffs, ldapObj),
tsuid, entry.getValue(), new BasicAttributes(true)));
} else {
ConfigurationChanges.ModifiedObject ldapObj =
ConfigurationChanges.addModifiedObject(diffs, dn, ConfigurationChanges.ChangeType.U);
config.modifyAttributes(dn,
storeDiffs(ldapObj, prevParam, entry.getValue(), new ArrayList<ModificationItem>()));
ConfigurationChanges.removeLastIfEmpty(diffs, ldapObj);
}
}
}