boolean needsChangeListeners = targetNeedsEnablingCondition
.evaluate(managedObject);
// Delete listeners need to be registered against the parent
// entry of the referenced components.
ServerManagementContext context = ServerManagementContext.getInstance();
ManagedObjectPath<?, ?> parentPath = getParentPath();
ServerManagedObject<?> parent = context.getManagedObject(parentPath);
// Create entries in the listener tables.
List<ReferentialIntegrityDeleteListener> dlist =
new LinkedList<ReferentialIntegrityDeleteListener>();
deleteListeners.put(managedObject.getDN(), dlist);
List<ReferentialIntegrityChangeListener> clist =
new LinkedList<ReferentialIntegrityChangeListener>();
changeListeners.put(managedObject.getDN(), clist);
for (String name : managedObject
.getPropertyValues(AggregationPropertyDefinition.this)) {
ManagedObjectPath<C, S> path = getChildPath(name);
DN dn = path.toDN();
String thatDN = dn.toString();
// Register the delete listener.
Message msg = ERR_SERVER_REFINT_CANNOT_DELETE.get(thatUFN, thatDN,
getName(), thisUFN, thisDN);
ReferentialIntegrityDeleteListener dl =
new ReferentialIntegrityDeleteListener(dn, msg);
parent.registerDeleteListener(getRelationDefinition(), dl);
dlist.add(dl);
// Register the change listener if required.
if (needsChangeListeners) {
ServerManagedObject<? extends S> ref = context.getManagedObject(path);
msg = ERR_SERVER_REFINT_CANNOT_DISABLE.get(thatUFN, thatDN,
getName(), thisUFN, thisDN);
ReferentialIntegrityChangeListener cl =
new ReferentialIntegrityChangeListener(path, msg);
ref.registerChangeListener(cl);