001/*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License").  You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
010 * or http://forgerock.org/license/CDDLv1.0.html.
011 * See the License for the specific language governing permissions
012 * and limitations under the License.
013 *
014 * When distributing Covered Code, include this CDDL HEADER in each
015 * file and include the License file at legal-notices/CDDLv1_0.txt.
016 * If applicable, add the following below this CDDL HEADER, with the
017 * fields enclosed by brackets "[]" replaced with your own identifying
018 * information:
019 *      Portions Copyright [yyyy] [name of copyright owner]
020 *
021 * CDDL HEADER END
022 *
023 *
024 *      Copyright 2008 Sun Microsystems, Inc.
025 */
026package org.opends.server.admin.std.server;
027
028
029
030import java.util.SortedSet;
031import org.opends.server.admin.Configuration;
032import org.opends.server.admin.server.ConfigurationChangeListener;
033import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn.ConflictBehavior;
034import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn.Scope;
035import org.opends.server.types.AttributeType;
036import org.opends.server.types.DN;
037
038
039
040/**
041 * A server-side interface for querying Virtual Attribute settings.
042 * <p>
043 * Virtual Attributes are responsible for dynamically generating
044 * attribute values that appear in entries but are not persistently
045 * stored in the backend.
046 */
047public interface VirtualAttributeCfg extends Configuration {
048
049  /**
050   * Gets the configuration class associated with this Virtual Attribute.
051   *
052   * @return Returns the configuration class associated with this Virtual Attribute.
053   */
054  Class<? extends VirtualAttributeCfg> configurationClass();
055
056
057
058  /**
059   * Register to be notified when this Virtual Attribute is changed.
060   *
061   * @param listener
062   *          The Virtual Attribute configuration change listener.
063   */
064  void addChangeListener(ConfigurationChangeListener<VirtualAttributeCfg> listener);
065
066
067
068  /**
069   * Deregister an existing Virtual Attribute configuration change listener.
070   *
071   * @param listener
072   *          The Virtual Attribute configuration change listener.
073   */
074  void removeChangeListener(ConfigurationChangeListener<VirtualAttributeCfg> listener);
075
076
077
078  /**
079   * Gets the "attribute-type" property.
080   * <p>
081   * Specifies the attribute type for the attribute whose values are
082   * to be dynamically assigned by the virtual attribute.
083   *
084   * @return Returns the value of the "attribute-type" property.
085   */
086  AttributeType getAttributeType();
087
088
089
090  /**
091   * Gets the "base-dn" property.
092   * <p>
093   * Specifies the base DNs for the branches containing entries that
094   * are eligible to use this virtual attribute.
095   * <p>
096   * If no values are given, then the server generates virtual
097   * attributes anywhere in the server.
098   *
099   * @return Returns an unmodifiable set containing the values of the "base-dn" property.
100   */
101  SortedSet<DN> getBaseDN();
102
103
104
105  /**
106   * Gets the "conflict-behavior" property.
107   * <p>
108   * Specifies the behavior that the server is to exhibit for entries
109   * that already contain one or more real values for the associated
110   * attribute.
111   *
112   * @return Returns the value of the "conflict-behavior" property.
113   */
114  ConflictBehavior getConflictBehavior();
115
116
117
118  /**
119   * Gets the "enabled" property.
120   * <p>
121   * Indicates whether the Virtual Attribute is enabled for use.
122   *
123   * @return Returns the value of the "enabled" property.
124   */
125  boolean isEnabled();
126
127
128
129  /**
130   * Gets the "filter" property.
131   * <p>
132   * Specifies the search filters to be applied against entries to
133   * determine if the virtual attribute is to be generated for those
134   * entries.
135   * <p>
136   * If no values are given, then any entry is eligible to have the
137   * value generated. If one or more filters are specified, then only
138   * entries that match at least one of those filters are allowed to
139   * have the virtual attribute.
140   *
141   * @return Returns an unmodifiable set containing the values of the "filter" property.
142   */
143  SortedSet<String> getFilter();
144
145
146
147  /**
148   * Gets the "group-dn" property.
149   * <p>
150   * Specifies the DNs of the groups whose members can be eligible to
151   * use this virtual attribute.
152   * <p>
153   * If no values are given, then group membership is not taken into
154   * account when generating the virtual attribute. If one or more
155   * group DNs are specified, then only members of those groups are
156   * allowed to have the virtual attribute.
157   *
158   * @return Returns an unmodifiable set containing the values of the "group-dn" property.
159   */
160  SortedSet<DN> getGroupDN();
161
162
163
164  /**
165   * Gets the "java-class" property.
166   * <p>
167   * Specifies the fully-qualified name of the virtual attribute
168   * provider class that generates the attribute values.
169   *
170   * @return Returns the value of the "java-class" property.
171   */
172  String getJavaClass();
173
174
175
176  /**
177   * Gets the "scope" property.
178   * <p>
179   * Specifies the LDAP scope associated with base DNs for entries
180   * that are eligible to use this virtual attribute.
181   *
182   * @return Returns the value of the "scope" property.
183   */
184  Scope getScope();
185
186}