From efa949b25f472d7e4c39733678d8f0e5229f8201 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 26 Dec 2013 15:31:32 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1235 : Migrate configuration framework
---
opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/AggregationPropertyDefinition.java | 142 +++++++++++++++++++++++++----------------------
1 files changed, 75 insertions(+), 67 deletions(-)
diff --git a/opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/AggregationPropertyDefinition.java b/opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/AggregationPropertyDefinition.java
index 56c4ef1..1c7aacc 100644
--- a/opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/AggregationPropertyDefinition.java
+++ b/opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/AggregationPropertyDefinition.java
@@ -99,7 +99,7 @@
* aggregation property definition refers to.
*/
public final class AggregationPropertyDefinition<C extends ConfigurationClient, S extends Configuration> extends
- PropertyDefinition<String> {
+ PropertyDefinition<String> {
/**
* An interface for incrementally constructing aggregation property
@@ -112,8 +112,8 @@
* The type of server managed object configuration that this
* aggregation property definition refers to.
*/
- public static class Builder<C extends ConfigurationClient, S extends Configuration> extends
- AbstractBuilder<String, AggregationPropertyDefinition<C, S>> {
+ public static final class Builder<C extends ConfigurationClient, S extends Configuration> extends
+ AbstractBuilder<String, AggregationPropertyDefinition<C, S>> {
// The string representation of the managed object path specifying
// the parent of the aggregated managed objects.
@@ -195,8 +195,8 @@
*/
@Override
protected AggregationPropertyDefinition<C, S> buildInstance(AbstractManagedObjectDefinition<?, ?> d,
- String propertyName, EnumSet<PropertyOption> options, AdministratorAction adminAction,
- DefaultBehaviorProvider<String> defaultBehavior) {
+ String propertyName, EnumSet<PropertyOption> options, AdministratorAction adminAction,
+ DefaultBehaviorProvider<String> defaultBehavior) {
// Make sure that the parent path has been defined.
if (parentPathString == null) {
throw new IllegalStateException("Parent path undefined");
@@ -208,7 +208,7 @@
}
return new AggregationPropertyDefinition<C, S>(d, propertyName, options, adminAction, defaultBehavior,
- parentPathString, rdName, targetNeedsEnablingCondition, targetIsEnabledCondition);
+ parentPathString, rdName, targetNeedsEnablingCondition, targetIsEnabledCondition);
}
}
@@ -216,7 +216,7 @@
/**
* A change listener which prevents the named component from being disabled.
*/
- private class ReferentialIntegrityChangeListener implements ServerManagedObjectChangeListener<S> {
+ private final class ReferentialIntegrityChangeListener implements ServerManagedObjectChangeListener<S> {
// The error message which should be returned if an attempt is
// made to disable the referenced component.
@@ -247,14 +247,14 @@
// This should not happen - the previous call-back should have
// trapped this.
throw new IllegalStateException("Attempting to disable a referenced "
- + relationDefinition.getChildDefinition().getUserFriendlyName());
+ + relationDefinition.getChildDefinition().getUserFriendlyName());
}
/**
* {@inheritDoc}
*/
public boolean isConfigurationChangeAcceptable(ServerManagedObject<? extends S> mo,
- List<LocalizableMessage> unacceptableReasons) {
+ List<LocalizableMessage> unacceptableReasons) {
// Always prevent the referenced component from being
// disabled.
try {
@@ -267,11 +267,11 @@
} catch (ConfigException e) {
// The condition could not be evaluated.
debugLogger.trace("Unable to perform post add", e);
- LocalizableMessage message = ERR_REFINT_UNABLE_TO_EVALUATE_TARGET_CONDITION.get(mo
- .getManagedObjectDefinition().getUserFriendlyName(), String.valueOf(mo.getDN()),
- getExceptionMessage(e));
- LocalizedLogger logger = LocalizedLogger
- .getLocalizedLogger(ERR_REFINT_UNABLE_TO_EVALUATE_TARGET_CONDITION.resourceName());
+ LocalizableMessage message =
+ ERR_REFINT_UNABLE_TO_EVALUATE_TARGET_CONDITION.get(mo.getManagedObjectDefinition()
+ .getUserFriendlyName(), String.valueOf(mo.getDN()), getExceptionMessage(e));
+ LocalizedLogger logger =
+ LocalizedLogger.getLocalizedLogger(ERR_REFINT_UNABLE_TO_EVALUATE_TARGET_CONDITION.resourceName());
logger.error(message);
unacceptableReasons.add(message);
return false;
@@ -288,7 +288,7 @@
/**
* A delete listener which prevents the named component from being deleted.
*/
- private class ReferentialIntegrityDeleteListener implements ConfigurationDeleteListener<S> {
+ private final class ReferentialIntegrityDeleteListener implements ConfigurationDeleteListener<S> {
// The DN of the referenced configuration entry.
private final DN dn;
@@ -315,7 +315,7 @@
// isConfigurationDeleteAcceptable() call-back should have
// trapped this.
throw new IllegalStateException("Attempting to delete a referenced "
- + relationDefinition.getChildDefinition().getUserFriendlyName());
+ + relationDefinition.getChildDefinition().getUserFriendlyName());
} else {
return new ConfigChangeResult(ResultCode.SUCCESS, false);
}
@@ -345,8 +345,8 @@
* {@inheritDoc}
*/
@Override
- public boolean isUsable(ServerManagedObject<?> managedObject, Collection<LocalizableMessage> unacceptableReasons)
- throws ConfigException {
+ public boolean isUsable(ServerManagedObject<?> managedObject,
+ Collection<LocalizableMessage> unacceptableReasons) throws ConfigException {
SortedSet<String> names = managedObject.getPropertyValues(AggregationPropertyDefinition.this);
ServerManagementContext context = managedObject.getServerContext();
LocalizableMessage thisUFN = managedObject.getManagedObjectDefinition().getUserFriendlyName();
@@ -360,8 +360,8 @@
String thatDN = path.toDN().toString();
if (!context.managedObjectExists(path)) {
- LocalizableMessage msg = ERR_SERVER_REFINT_DANGLING_REFERENCE.get(name, getName(), thisUFN, thisDN, thatUFN,
- thatDN);
+ LocalizableMessage msg =
+ ERR_SERVER_REFINT_DANGLING_REFERENCE.get(name, getName(), thisUFN, thisDN, thatUFN, thatDN);
unacceptableReasons.add(msg);
isUsable = false;
} else if (needsEnabling) {
@@ -369,8 +369,8 @@
// required.
ServerManagedObject<? extends S> ref = context.getManagedObject(path);
if (!targetIsEnabledCondition.evaluate(ref)) {
- LocalizableMessage msg = ERR_SERVER_REFINT_TARGET_DISABLED.get(name, getName(), thisUFN, thisDN, thatUFN,
- thatDN);
+ LocalizableMessage msg =
+ ERR_SERVER_REFINT_TARGET_DISABLED.get(name, getName(), thisUFN, thisDN, thatUFN, thatDN);
unacceptableReasons.add(msg);
isUsable = false;
}
@@ -421,7 +421,8 @@
String thatDN = dn.toString();
// Register the delete listener.
- LocalizableMessage msg = ERR_SERVER_REFINT_CANNOT_DELETE.get(thatUFN, thatDN, getName(), thisUFN, thisDN);
+ LocalizableMessage 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);
@@ -493,7 +494,7 @@
*/
@Override
public boolean isAddAcceptable(ManagementContext context, ManagedObject<?> managedObject,
- Collection<LocalizableMessage> unacceptableReasons) throws ErrorResultException {
+ Collection<LocalizableMessage> unacceptableReasons) throws ErrorResultException {
// If all of this managed object's "enabled" properties are true
// then any referenced managed objects must also be enabled.
boolean needsEnabling = targetNeedsEnablingCondition.evaluate(context, managedObject);
@@ -510,14 +511,14 @@
try {
ref = context.getManagedObject(path);
} catch (DefinitionDecodingException e) {
- LocalizableMessage msg = ERR_CLIENT_REFINT_TARGET_INVALID.get(ufn, name, getName(),
- e.getMessageObject());
+ LocalizableMessage msg =
+ ERR_CLIENT_REFINT_TARGET_INVALID.get(ufn, name, getName(), e.getMessageObject());
unacceptableReasons.add(msg);
isAcceptable = false;
continue;
} catch (ManagedObjectDecodingException e) {
- LocalizableMessage msg = ERR_CLIENT_REFINT_TARGET_INVALID.get(ufn, name, getName(),
- e.getMessageObject());
+ LocalizableMessage msg =
+ ERR_CLIENT_REFINT_TARGET_INVALID.get(ufn, name, getName(), e.getMessageObject());
unacceptableReasons.add(msg);
isAcceptable = false;
continue;
@@ -545,7 +546,7 @@
*/
@Override
public boolean isModifyAcceptable(ManagementContext context, ManagedObject<?> managedObject,
- Collection<LocalizableMessage> unacceptableReasons) throws ErrorResultException {
+ Collection<LocalizableMessage> unacceptableReasons) throws ErrorResultException {
// The same constraint applies as for adds.
return isAddAcceptable(context, managedObject, unacceptableReasons);
}
@@ -564,21 +565,21 @@
*/
@Override
public boolean isDeleteAcceptable(ManagementContext context, ManagedObjectPath<?, ?> path,
- Collection<LocalizableMessage> unacceptableReasons) throws ErrorResultException {
+ Collection<LocalizableMessage> unacceptableReasons) throws ErrorResultException {
// Any references to the deleted managed object should cause a
// constraint violation.
boolean isAcceptable = true;
for (ManagedObject<?> mo : findReferences(context, getManagedObjectDefinition(), path.getName())) {
String name = mo.getManagedObjectPath().getName();
if (name == null) {
- LocalizableMessage msg = ERR_CLIENT_REFINT_CANNOT_DELETE_WITHOUT_NAME.get(getName(), mo
- .getManagedObjectDefinition().getUserFriendlyName(), getManagedObjectDefinition()
- .getUserFriendlyName());
+ LocalizableMessage msg =
+ ERR_CLIENT_REFINT_CANNOT_DELETE_WITHOUT_NAME.get(getName(), mo.getManagedObjectDefinition()
+ .getUserFriendlyName(), getManagedObjectDefinition().getUserFriendlyName());
unacceptableReasons.add(msg);
} else {
- LocalizableMessage msg = ERR_CLIENT_REFINT_CANNOT_DELETE_WITH_NAME.get(getName(), mo
- .getManagedObjectDefinition().getUserFriendlyName(), name, getManagedObjectDefinition()
- .getUserFriendlyName());
+ LocalizableMessage msg =
+ ERR_CLIENT_REFINT_CANNOT_DELETE_WITH_NAME.get(getName(), mo.getManagedObjectDefinition()
+ .getUserFriendlyName(), name, getManagedObjectDefinition().getUserFriendlyName());
unacceptableReasons.add(msg);
}
isAcceptable = false;
@@ -591,7 +592,7 @@
*/
@Override
public boolean isModifyAcceptable(ManagementContext context, ManagedObject<?> managedObject,
- Collection<LocalizableMessage> unacceptableReasons) throws ErrorResultException {
+ Collection<LocalizableMessage> unacceptableReasons) throws ErrorResultException {
// If the modified managed object is disabled and there are some
// active references then refuse the change.
if (targetIsEnabledCondition.evaluate(context, managedObject)) {
@@ -602,18 +603,20 @@
// active references.
boolean isAcceptable = true;
for (ManagedObject<?> mo : findReferences(context, getManagedObjectDefinition(), managedObject
- .getManagedObjectPath().getName())) {
+ .getManagedObjectPath().getName())) {
if (targetNeedsEnablingCondition.evaluate(context, mo)) {
String name = mo.getManagedObjectPath().getName();
if (name == null) {
- LocalizableMessage msg = ERR_CLIENT_REFINT_CANNOT_DISABLE_WITHOUT_NAME.get(managedObject
+ LocalizableMessage msg =
+ ERR_CLIENT_REFINT_CANNOT_DISABLE_WITHOUT_NAME.get(managedObject
.getManagedObjectDefinition().getUserFriendlyName(), getName(), mo
.getManagedObjectDefinition().getUserFriendlyName());
unacceptableReasons.add(msg);
} else {
- LocalizableMessage msg = ERR_CLIENT_REFINT_CANNOT_DISABLE_WITH_NAME.get(managedObject
- .getManagedObjectDefinition().getUserFriendlyName(), getName(), mo
- .getManagedObjectDefinition().getUserFriendlyName(), name);
+ LocalizableMessage msg =
+ ERR_CLIENT_REFINT_CANNOT_DISABLE_WITH_NAME.get(
+ managedObject.getManagedObjectDefinition().getUserFriendlyName(), getName(),
+ mo.getManagedObjectDefinition().getUserFriendlyName(), name);
unacceptableReasons.add(msg);
}
isAcceptable = false;
@@ -624,14 +627,14 @@
// Find all managed objects which reference the named managed
// object using this property.
- private <CC extends ConfigurationClient> List<ManagedObject<? extends CC>> findReferences(
- ManagementContext context, AbstractManagedObjectDefinition<CC, ?> mod, String name)
+ private <C1 extends ConfigurationClient> List<ManagedObject<? extends C1>> findReferences(
+ ManagementContext context, AbstractManagedObjectDefinition<C1, ?> mod, String name)
throws ErrorResultException {
- List<ManagedObject<? extends CC>> instances = findInstances(context, mod);
+ List<ManagedObject<? extends C1>> instances = findInstances(context, mod);
- Iterator<ManagedObject<? extends CC>> i = instances.iterator();
+ Iterator<ManagedObject<? extends C1>> i = instances.iterator();
while (i.hasNext()) {
- ManagedObject<? extends CC> mo = i.next();
+ ManagedObject<? extends C1> mo = i.next();
boolean hasReference = false;
for (String value : mo.getPropertyValues(AggregationPropertyDefinition.this)) {
@@ -651,35 +654,38 @@
// Find all instances of a specific type of managed object.
@SuppressWarnings("unchecked")
- private <CC extends ConfigurationClient> List<ManagedObject<? extends CC>> findInstances(
- ManagementContext context, AbstractManagedObjectDefinition<CC, ?> mod) throws ErrorResultException {
- List<ManagedObject<? extends CC>> instances = new LinkedList<ManagedObject<? extends CC>>();
+ private <C1 extends ConfigurationClient> List<ManagedObject<? extends C1>> findInstances(
+ ManagementContext context, AbstractManagedObjectDefinition<C1, ?> mod) throws ErrorResultException {
+ List<ManagedObject<? extends C1>> instances = new LinkedList<ManagedObject<? extends C1>>();
if (mod == RootCfgDefn.getInstance()) {
- instances.add((ManagedObject<? extends CC>) context.getRootConfigurationManagedObject());
+ instances.add((ManagedObject<? extends C1>) context.getRootConfigurationManagedObject());
} else {
- for (RelationDefinition<? super CC, ?> rd : mod.getAllReverseRelationDefinitions()) {
+ for (RelationDefinition<? super C1, ?> rd : mod.getAllReverseRelationDefinitions()) {
for (ManagedObject<?> parent : findInstances(context, rd.getParentDefinition())) {
try {
if (rd instanceof SingletonRelationDefinition) {
- SingletonRelationDefinition<? super CC, ?> srd = (SingletonRelationDefinition<? super CC, ?>) rd;
+ SingletonRelationDefinition<? super C1, ?> srd =
+ (SingletonRelationDefinition<? super C1, ?>) rd;
ManagedObject<?> mo = parent.getChild(srd);
if (mo.getManagedObjectDefinition().isChildOf(mod)) {
- instances.add((ManagedObject<? extends CC>) mo);
+ instances.add((ManagedObject<? extends C1>) mo);
}
} else if (rd instanceof OptionalRelationDefinition) {
- OptionalRelationDefinition<? super CC, ?> ord = (OptionalRelationDefinition<? super CC, ?>) rd;
+ OptionalRelationDefinition<? super C1, ?> ord =
+ (OptionalRelationDefinition<? super C1, ?>) rd;
ManagedObject<?> mo = parent.getChild(ord);
if (mo.getManagedObjectDefinition().isChildOf(mod)) {
- instances.add((ManagedObject<? extends CC>) mo);
+ instances.add((ManagedObject<? extends C1>) mo);
}
} else if (rd instanceof InstantiableRelationDefinition) {
- InstantiableRelationDefinition<? super CC, ?> ird = (InstantiableRelationDefinition<? super CC, ?>) rd;
+ InstantiableRelationDefinition<? super C1, ?> ird =
+ (InstantiableRelationDefinition<? super C1, ?>) rd;
for (String name : parent.listChildren(ird)) {
ManagedObject<?> mo = parent.getChild(ird, name);
if (mo.getManagedObjectDefinition().isChildOf(mod)) {
- instances.add((ManagedObject<? extends CC>) mo);
+ instances.add((ManagedObject<? extends C1>) mo);
}
}
}
@@ -711,7 +717,7 @@
* @return Returns the new aggregation property definition builder.
*/
public static <C extends ConfigurationClient, S extends Configuration> Builder<C, S> createBuilder(
- AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
+ AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
return new Builder<C, S>(d, propertyName);
}
@@ -719,11 +725,13 @@
// The active server-side referential integrity change listeners
// associated with this property.
- private final Map<DN, List<ReferentialIntegrityChangeListener>> changeListeners = new HashMap<DN, List<ReferentialIntegrityChangeListener>>();
+ private final Map<DN, List<ReferentialIntegrityChangeListener>> changeListeners =
+ new HashMap<DN, List<ReferentialIntegrityChangeListener>>();
// The active server-side referential integrity delete listeners
// associated with this property.
- private final Map<DN, List<ReferentialIntegrityDeleteListener>> deleteListeners = new HashMap<DN, List<ReferentialIntegrityDeleteListener>>();
+ private final Map<DN, List<ReferentialIntegrityDeleteListener>> deleteListeners =
+ new HashMap<DN, List<ReferentialIntegrityDeleteListener>>();
// The name of the managed object which is the parent of the
// aggregated managed objects.
@@ -754,9 +762,9 @@
// Private constructor.
private AggregationPropertyDefinition(AbstractManagedObjectDefinition<?, ?> d, String propertyName,
- EnumSet<PropertyOption> options, AdministratorAction adminAction,
- DefaultBehaviorProvider<String> defaultBehavior, String parentPathString, String rdName,
- Condition targetNeedsEnablingCondition, Condition targetIsEnabledCondition) {
+ EnumSet<PropertyOption> options, AdministratorAction adminAction,
+ DefaultBehaviorProvider<String> defaultBehavior, String parentPathString, String rdName,
+ Condition targetNeedsEnablingCondition, Condition targetIsEnabledCondition) {
super(d, String.class, propertyName, options, adminAction, defaultBehavior);
this.parentPathString = parentPathString;
@@ -803,7 +811,7 @@
* {@inheritDoc}
*/
@Override
- public String decodeValue(String value) throws IllegalPropertyValueStringException {
+ public String decodeValue(String value) {
Reject.ifNull(value);
try {
@@ -938,7 +946,7 @@
* {@inheritDoc}
*/
@Override
- public String normalizeValue(String value) throws IllegalPropertyValueException {
+ public String normalizeValue(String value) {
try {
Reference<C, S> reference = Reference.parseName(parentPath, relationDefinition, value);
return reference.getNormalizedName();
@@ -971,7 +979,7 @@
* {@inheritDoc}
*/
@Override
- public void validateValue(String value) throws IllegalPropertyValueException {
+ public void validateValue(String value) {
try {
Reference.parseName(parentPath, relationDefinition, value);
} catch (IllegalArgumentException e) {
--
Gitblit v1.10.0