| | |
| | | |
| | | |
| | | |
| | | import static org.opends.server.util.Validator.ensureNotNull; |
| | | import static org.opends.server.util.Validator.*; |
| | | |
| | | |
| | | |
| | |
| | | <C extends ConfigurationClient, S extends Configuration> |
| | | extends RelationDefinition<C, S> { |
| | | |
| | | // The plural name of the relation. |
| | | private final String pluralName; |
| | | /** |
| | | * An interface for incrementally constructing aggregation relation |
| | | * definitions. |
| | | * |
| | | * @param <C> |
| | | * The type of client managed object configuration that |
| | | * this relation definition refers to. |
| | | * @param <S> |
| | | * The type of server managed object configuration that |
| | | * this relation definition refers to. |
| | | */ |
| | | public static class Builder |
| | | <C extends ConfigurationClient, S extends Configuration> |
| | | extends AbstractBuilder<C, S, AggregationRelationDefinition<C, S>> { |
| | | |
| | | // The maximum number of referenced managed objects. |
| | | private int maxOccurs = 0; |
| | | |
| | | // The minimum number of referenced managed objects. |
| | | private int minOccurs = 0; |
| | | |
| | | // The path identifying the location of the referenced managed |
| | | // objects. |
| | | private ManagedObjectPath path; |
| | | |
| | | // The plural name of the relation. |
| | | private final String pluralName; |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new builder which can be used to incrementally build |
| | | * an aggregation relation definition. |
| | | * |
| | | * @param pd |
| | | * The parent managed object definition. |
| | | * @param name |
| | | * The name of the relation. |
| | | * @param pluralName |
| | | * The plural name of the relation. |
| | | * @param cd |
| | | * The child managed object definition. |
| | | */ |
| | | public Builder(AbstractManagedObjectDefinition<?, ?> pd, String name, |
| | | String pluralName, AbstractManagedObjectDefinition<C, S> cd) { |
| | | super(pd, name, cd); |
| | | this.pluralName = pluralName; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Set the maximum number of referenced managed objects. |
| | | * |
| | | * @param maxOccurs |
| | | * The maximum number of referenced managed objects (or |
| | | * zero if there is no upper limit). |
| | | */ |
| | | public void setMaxOccurs(int maxOccurs) { |
| | | this.maxOccurs = maxOccurs; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Set the minimum number of referenced managed objects. |
| | | * |
| | | * @param minOccurs |
| | | * The minimum number of referenced managed objects. |
| | | */ |
| | | public void setMinOccurs(int minOccurs) { |
| | | this.minOccurs = minOccurs; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Set the path identifying the location of the referenced managed |
| | | * objects. |
| | | * |
| | | * @param path |
| | | * The path identifying the location of the referenced |
| | | * managed objects. |
| | | */ |
| | | public void setPath(ManagedObjectPath path) { |
| | | this.path = path; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | protected AggregationRelationDefinition<C, S> buildInstance( |
| | | Common<C, S> common) { |
| | | return new AggregationRelationDefinition<C, S>(common, pluralName, path, |
| | | minOccurs, maxOccurs); |
| | | } |
| | | |
| | | } |
| | | |
| | | // The maximum number of referenced managed objects. |
| | | private final int maxOccurs; |
| | | |
| | | // The minimum number of referenced managed objects. |
| | | private final int minOccurs; |
| | | |
| | | // The path identifying the location of the referenced managed |
| | | // objects. |
| | | private final ManagedObjectPath path; |
| | | |
| | | // The minimum number of referenced managed objects. |
| | | private final int minOccurs; |
| | | |
| | | // The maximum number of referenced managed objects. |
| | | private final int maxOccurs; |
| | | // The plural name of the relation. |
| | | private final String pluralName; |
| | | |
| | | |
| | | |
| | | /** |
| | | * Create a new aggregation managed object relation definition. |
| | | * |
| | | * @param pd |
| | | * The parent managed object definition. |
| | | * @param name |
| | | * The name of this relation. |
| | | * @param pluralName |
| | | * The plural name of the relation. |
| | | * @param cd |
| | | * The child managed object definition. |
| | | * @param path |
| | | * The path identifying the location of the referenced |
| | | * managed objects. |
| | | * @param minOccurs |
| | | * The minimum number of referenced managed objects. |
| | | * @param maxOccurs |
| | | * The maximum number of referenced managed objects (or |
| | | * zero if there is no upper limit). |
| | | * @throws IllegalArgumentException |
| | | * If minOccurs is less than zero or maxOccurs is less |
| | | * than minOccurs. |
| | | */ |
| | | public AggregationRelationDefinition( |
| | | AbstractManagedObjectDefinition<?, ?> pd, String name, String pluralName, |
| | | AbstractManagedObjectDefinition<C, S> cd, |
| | | // Private constructor. |
| | | private AggregationRelationDefinition(Common<C, S> common, String pluralName, |
| | | ManagedObjectPath path, int minOccurs, int maxOccurs) |
| | | throws IllegalArgumentException { |
| | | super(pd, name, cd); |
| | | super(common); |
| | | |
| | | ensureNotNull(path); |
| | | |
| | | if (minOccurs < 0) { |
| | | throw new IllegalArgumentException( |
| | | "minOccurs is less than zero"); |
| | | throw new IllegalArgumentException("minOccurs is less than zero"); |
| | | } |
| | | |
| | | if (maxOccurs != 0 && maxOccurs < minOccurs) { |
| | | throw new IllegalArgumentException( |
| | | "maxOccurs is less than minOccurs"); |
| | | throw new IllegalArgumentException("maxOccurs is less than minOccurs"); |
| | | } |
| | | |
| | | this.pluralName = pluralName; |
| | |
| | | |
| | | |
| | | /** |
| | | * Get the plural name of the relation. |
| | | * |
| | | * @return Returns the plural name of the relation. |
| | | * {@inheritDoc} |
| | | */ |
| | | public final String getPluralName() { |
| | | return pluralName; |
| | | @Override |
| | | public <R, P> R accept(RelationDefinitionVisitor<R, P> v, P p) { |
| | | return v.visitAggregation(this, p); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Get the maximum number of referenced managed objects. |
| | | * |
| | | * @return Returns the maximum number of referenced managed objects |
| | | * (or zero if there is no upper limit). |
| | | */ |
| | | public int getMaxOccurs() { |
| | | return maxOccurs; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Get the minimum number of referenced managed objects. |
| | | * |
| | | * @return Returns the minimum number of referenced managed objects. |
| | | */ |
| | | public int getMinOccurs() { |
| | | return minOccurs; |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * Get the minimum number of referenced managed objects. |
| | | * Get the plural name of the relation. |
| | | * |
| | | * @return Returns the minimum number of referenced managed objects. |
| | | * @return Returns the plural name of the relation. |
| | | */ |
| | | public int getMinOccurs() { |
| | | return minOccurs; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Get the maximum number of referenced managed objects. |
| | | * |
| | | * @return Returns the maximum number of referenced managed objects |
| | | * (or zero if there is no upper limit). |
| | | */ |
| | | public int getMaxOccurs() { |
| | | return maxOccurs; |
| | | public final String getPluralName() { |
| | | return pluralName; |
| | | } |
| | | |
| | | |
| | |
| | | builder.append(maxOccurs); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public <R, P> R accept(RelationDefinitionVisitor<R, P> v, P p) { |
| | | return v.visitAggregation(this, p); |
| | | } |
| | | } |