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
010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 * Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 * Copyright 2008 Sun Microsystems, Inc.
026 */
027 package org.opends.server.admin.std.client;
028
029
030
031 import java.util.Collection;
032 import java.util.SortedSet;
033 import org.opends.server.admin.ConfigurationClient;
034 import org.opends.server.admin.IllegalPropertyValueException;
035 import org.opends.server.admin.ManagedObjectDefinition;
036 import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn.ConflictBehavior;
037 import org.opends.server.admin.std.server.VirtualAttributeCfg;
038 import org.opends.server.types.AttributeType;
039 import org.opends.server.types.DN;
040
041
042
043 /**
044 * A client-side interface for reading and modifying Virtual Attribute
045 * settings.
046 * <p>
047 * Virtual Attributes are responsible for dynamically generating
048 * attribute values that appear in entries but are not persistently
049 * stored in the backend.
050 */
051 public interface VirtualAttributeCfgClient extends ConfigurationClient {
052
053 /**
054 * Get the configuration definition associated with this Virtual Attribute.
055 *
056 * @return Returns the configuration definition associated with this Virtual Attribute.
057 */
058 ManagedObjectDefinition<? extends VirtualAttributeCfgClient, ? extends VirtualAttributeCfg> definition();
059
060
061
062 /**
063 * Gets the "attribute-type" property.
064 * <p>
065 * Specifies the attribute type for the attribute whose values are
066 * to be dynamically assigned by the virtual attribute.
067 *
068 * @return Returns the value of the "attribute-type" property.
069 */
070 AttributeType getAttributeType();
071
072
073
074 /**
075 * Sets the "attribute-type" property.
076 * <p>
077 * Specifies the attribute type for the attribute whose values are
078 * to be dynamically assigned by the virtual attribute.
079 *
080 * @param value The value of the "attribute-type" property.
081 * @throws IllegalPropertyValueException
082 * If the new value is invalid.
083 */
084 void setAttributeType(AttributeType value) throws IllegalPropertyValueException;
085
086
087
088 /**
089 * Gets the "base-dn" property.
090 * <p>
091 * Specifies the base DNs for the branches containing entries that
092 * are eligible to use this virtual attribute.
093 * <p>
094 * If no values are given, then the server generates virtual
095 * attributes anywhere in the server.
096 *
097 * @return Returns the values of the "base-dn" property.
098 */
099 SortedSet<DN> getBaseDN();
100
101
102
103 /**
104 * Sets the "base-dn" property.
105 * <p>
106 * Specifies the base DNs for the branches containing entries that
107 * are eligible to use this virtual attribute.
108 * <p>
109 * If no values are given, then the server generates virtual
110 * attributes anywhere in the server.
111 *
112 * @param values The values of the "base-dn" property.
113 * @throws IllegalPropertyValueException
114 * If one or more of the new values are invalid.
115 */
116 void setBaseDN(Collection<DN> values) throws IllegalPropertyValueException;
117
118
119
120 /**
121 * Gets the "conflict-behavior" property.
122 * <p>
123 * Specifies the behavior that the server is to exhibit for entries
124 * that already contain one or more real values for the associated
125 * attribute.
126 *
127 * @return Returns the value of the "conflict-behavior" property.
128 */
129 ConflictBehavior getConflictBehavior();
130
131
132
133 /**
134 * Sets the "conflict-behavior" property.
135 * <p>
136 * Specifies the behavior that the server is to exhibit for entries
137 * that already contain one or more real values for the associated
138 * attribute.
139 *
140 * @param value The value of the "conflict-behavior" property.
141 * @throws IllegalPropertyValueException
142 * If the new value is invalid.
143 */
144 void setConflictBehavior(ConflictBehavior value) throws IllegalPropertyValueException;
145
146
147
148 /**
149 * Gets the "enabled" property.
150 * <p>
151 * Indicates whether the Virtual Attribute is enabled for use.
152 *
153 * @return Returns the value of the "enabled" property.
154 */
155 Boolean isEnabled();
156
157
158
159 /**
160 * Sets the "enabled" property.
161 * <p>
162 * Indicates whether the Virtual Attribute is enabled for use.
163 *
164 * @param value The value of the "enabled" property.
165 * @throws IllegalPropertyValueException
166 * If the new value is invalid.
167 */
168 void setEnabled(boolean value) throws IllegalPropertyValueException;
169
170
171
172 /**
173 * Gets the "filter" property.
174 * <p>
175 * Specifies the search filters to be applied against entries to
176 * determine if the virtual attribute is to be generated for those
177 * entries.
178 * <p>
179 * If no values are given, then any entry is eligible to have the
180 * value generated. If one or more filters are specified, then only
181 * entries that match at least one of those filters are allowed to
182 * have the virtual attribute.
183 *
184 * @return Returns the values of the "filter" property.
185 */
186 SortedSet<String> getFilter();
187
188
189
190 /**
191 * Sets the "filter" property.
192 * <p>
193 * Specifies the search filters to be applied against entries to
194 * determine if the virtual attribute is to be generated for those
195 * entries.
196 * <p>
197 * If no values are given, then any entry is eligible to have the
198 * value generated. If one or more filters are specified, then only
199 * entries that match at least one of those filters are allowed to
200 * have the virtual attribute.
201 *
202 * @param values The values of the "filter" property.
203 * @throws IllegalPropertyValueException
204 * If one or more of the new values are invalid.
205 */
206 void setFilter(Collection<String> values) throws IllegalPropertyValueException;
207
208
209
210 /**
211 * Gets the "group-dn" property.
212 * <p>
213 * Specifies the DNs of the groups whose members can be eligible to
214 * use this virtual attribute.
215 * <p>
216 * If no values are given, then group membership is not taken into
217 * account when generating the virtual attribute. If one or more
218 * group DNs are specified, then only members of those groups are
219 * allowed to have the virtual attribute.
220 *
221 * @return Returns the values of the "group-dn" property.
222 */
223 SortedSet<DN> getGroupDN();
224
225
226
227 /**
228 * Sets the "group-dn" property.
229 * <p>
230 * Specifies the DNs of the groups whose members can be eligible to
231 * use this virtual attribute.
232 * <p>
233 * If no values are given, then group membership is not taken into
234 * account when generating the virtual attribute. If one or more
235 * group DNs are specified, then only members of those groups are
236 * allowed to have the virtual attribute.
237 *
238 * @param values The values of the "group-dn" property.
239 * @throws IllegalPropertyValueException
240 * If one or more of the new values are invalid.
241 */
242 void setGroupDN(Collection<DN> values) throws IllegalPropertyValueException;
243
244
245
246 /**
247 * Gets the "java-class" property.
248 * <p>
249 * Specifies the fully-qualified name of the virtual attribute
250 * provider class that generates the attribute values.
251 *
252 * @return Returns the value of the "java-class" property.
253 */
254 String getJavaClass();
255
256
257
258 /**
259 * Sets the "java-class" property.
260 * <p>
261 * Specifies the fully-qualified name of the virtual attribute
262 * provider class that generates the attribute values.
263 *
264 * @param value The value of the "java-class" property.
265 * @throws IllegalPropertyValueException
266 * If the new value is invalid.
267 */
268 void setJavaClass(String value) throws IllegalPropertyValueException;
269
270 }