mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
15.17.2014 6870993d12bf8a2b9d5cd103dc5ccabc42f9bf5d
opendj-config/src/main/java/org/forgerock/opendj/config/AbstractManagedObjectDefinition.java
@@ -58,55 +58,73 @@
 */
public abstract class AbstractManagedObjectDefinition<C extends ConfigurationClient, S extends Configuration> {
    // The name of the definition.
    /** The name of the definition. */
    private final String name;
    // The parent managed object definition if applicable.
    /** The parent managed object definition if applicable. */
    private final AbstractManagedObjectDefinition<? super C, ? super S> parent;
    // The set of constraints associated with this managed object
    // definition.
    /**
     * The set of constraints associated with this managed object
     * definition.
     */
    private final Collection<Constraint> constraints;
    // The set of property definitions applicable to this managed object
    // definition.
    /**
     * The set of property definitions applicable to this managed object
     * definition.
     */
    private final Map<String, PropertyDefinition<?>> propertyDefinitions;
    // The set of relation definitions applicable to this managed object
    // definition.
    /**
     * The set of relation definitions applicable to this managed object
     * definition.
     */
    private final Map<String, RelationDefinition<?, ?>> relationDefinitions;
    // The set of relation definitions directly referencing this managed
    // object definition.
    /**
     * The set of relation definitions directly referencing this managed
     * object definition.
     */
    private final Set<RelationDefinition<C, S>> reverseRelationDefinitions;
    // The set of all property definitions associated with this managed
    // object definition including inherited property definitions.
    /**
     * The set of all property definitions associated with this managed
     * object definition including inherited property definitions.
     */
    private final Map<String, PropertyDefinition<?>> allPropertyDefinitions;
    // The set of all relation definitions associated with this managed
    // object definition including inherited relation definitions.
    /**
     * The set of all relation definitions associated with this managed
     * object definition including inherited relation definitions.
     */
    private final Map<String, RelationDefinition<?, ?>> allRelationDefinitions;
    // The set of aggregation property definitions applicable to this
    // managed object definition.
    /**
     * The set of aggregation property definitions applicable to this
     * managed object definition.
     */
    private final Map<String, AggregationPropertyDefinition<?, ?>> aggregationPropertyDefinitions;
    // The set of aggregation property definitions directly referencing this
    // managed object definition.
    /**
     * The set of aggregation property definitions directly referencing this
     * managed object definition.
     */
    private final Vector<AggregationPropertyDefinition<?, ?>> reverseAggregationPropertyDefinitions;
    // The set of all aggregation property definitions associated with this
    // managed object definition including inherited relation definitions.
    /**
     * The set of all aggregation property definitions associated with this
     * managed object definition including inherited relation definitions.
     */
    private final Map<String, AggregationPropertyDefinition<?, ?>> allAggregationPropertyDefinitions;
    // The set of tags associated with this managed object.
    /** The set of tags associated with this managed object. */
    private final Set<Tag> allTags;
    // Options applicable to this definition.
    /** Options applicable to this definition. */
    private final Set<ManagedObjectOption> options;
    // The set of managed object definitions which inherit from this definition.
    /** The set of managed object definitions which inherit from this definition. */
    private final Map<String, AbstractManagedObjectDefinition<? extends C, ? extends S>> children;
    /**
@@ -754,9 +772,7 @@
        }
    }
    /**
     * {@inheritDoc}
     */
    /** {@inheritDoc} */
    @Override
    public final String toString() {
        StringBuilder builder = new StringBuilder();
@@ -938,23 +954,28 @@
        }
    }
    // Register a relation definition in the referenced managed object
    // definition's reverse lookup table.
    /**
     * Register a relation definition in the referenced managed object
     * definition's reverse lookup table.
     */
    private <C1 extends ConfigurationClient, S1 extends Configuration> void registerReverseRelationDefinition(
        RelationDefinition<C1, S1> rd) {
        rd.getChildDefinition().reverseRelationDefinitions.add(rd);
    }
    // Register a aggregation property definition in the referenced managed
    // object
    // definition's reverse lookup table.
    /**
     * Register a aggregation property definition in the referenced managed
     * object definition's reverse lookup table.
     */
    private void registerReverseAggregationPropertyDefinition(AggregationPropertyDefinition<?, ?> apd) {
        apd.getRelationDefinition().getChildDefinition().reverseAggregationPropertyDefinitions.add(apd);
    }
    // Recursively descend definition hierarchy to find the best match
    // definition.
    /**
     * Recursively descend definition hierarchy to find the best match
     * definition.
     */
    private AbstractManagedObjectDefinition<? extends C, ? extends S> resolveManagedObjectDefinitionAux(
        AbstractManagedObjectDefinition<? extends C, ? extends S> d, DefinitionResolver r) {
        if (!r.matches(d)) {