001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *
019 */
020 package org.apache.directory.shared.ldap.schema.registries;
021
022
023 import java.util.Collection;
024 import java.util.List;
025
026 import org.apache.directory.shared.ldap.entry.Entry;
027
028
029 /**
030 * Loads schemas into registres.
031 *
032 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
033 * @version $Rev$
034 */
035 public interface SchemaLoader
036 {
037 /**
038 * Sets listener used to notify of newly loaded schemas.
039 *
040 * @param listener the listener to notify (only one is enough for us)
041 */
042 void setListener( SchemaLoaderListener listener );
043
044
045 /**
046 * Gets a schema object based on it's name.
047 *
048 * @param schemaName the name of the schema to load
049 * @return the Schema object associated with the name
050 */
051 Schema getSchema( String schemaName );
052
053
054 /**
055 * Loads a set of schemas. A best effort should be made to load the dependended
056 * schemas that these schemas may rely on even if they are not included in the collection.
057 *
058 * @param registries the registries to populate with these schemas
059 * @param check tells if the Registries must be checked after having been loaded
060 * @param schemas the set of schemas to load
061 * @return the list of erros we met during the loading of schemas
062 * @throws Exception if any kind of problems are encountered during the load
063 *
064 List<Throwable> loadWithDependencies( Registries registries, boolean check, Schema... schemas ) throws Exception;
065
066
067 /**
068 * Loads all available enabled schemas.
069 *
070 * @param registries the registry to load all enabled schemas into
071 * @param check tells if the Registries must be checked after having been loaded
072 * @return the list of erros we met during the loading of schemas
073 * @throws Exception if there are any failures
074 *
075 List<Throwable> loadAllEnabled( Registries registries, boolean check ) throws Exception;
076
077
078 /**
079 * Loads a single schema. Do not try to resolve dependencies while implementing this method.
080 *
081 * @param schema the schema to load
082 * @param registries the registries to populate with these schemas
083 * @param isDepLoad tells the loader if this load request is to satisfy a dependency
084 * @throws Exception if any kind of problems are encountered during the load
085 *
086 void load( Schema schema, Registries registries, boolean isDepLoad ) throws Exception;
087
088
089 /**
090 * Build a list of AttributeTypes read from the underlying storage for
091 * a list of specified schema
092 *
093 * @param schemas the schemas from which AttributeTypes are loaded
094 * @throws Exception if there are failures accessing AttributeType information
095 */
096 List<Entry> loadAttributeTypes( Schema... schemas ) throws Exception;
097
098
099 /**
100 * Build a list of AttributeTypes read from the underlying storage for
101 * a list of specific schema, using their name
102 *
103 * @param schemaNames the schema names from which AttributeTypes are loaded
104 * @throws Exception if there are failures accessing AttributeType information
105 */
106 List<Entry> loadAttributeTypes( String... schemaNames ) throws Exception;
107
108
109 /**
110 * Build a list of Comparators read from the underlying storage for
111 * a list of specific schema.
112 *
113 * @param schemas the schemas from which Comparators are loaded
114 * @throws Exception if there are failures accessing Comparator information
115 */
116 List<Entry> loadComparators( Schema... schemas ) throws Exception;
117
118
119 /**
120 * Build a list of Comparators read from the underlying storage for
121 * a list of specific schema, using their name
122 *
123 * @param schemaNames the schema names from which Comparators are loaded
124 * @throws Exception if there are failures accessing Comparator information
125 */
126 List<Entry> loadComparators( String... schemaNames ) throws Exception;
127
128
129 /**
130 * Build a list of DitContentRules read from the underlying storage for
131 * a list of specific schema.
132 *
133 * @param schemas the schemas from which DitContentRules are loaded
134 * @throws Exception if there are failures accessing DitContentRule information
135 */
136 List<Entry> loadDitContentRules( Schema... schemas ) throws Exception;
137
138
139 /**
140 * Build a list of DitContentRules read from the underlying storage for
141 * a list of specified schema names
142 *
143 * @param schemaNames the schema names from which DitContentRules are loaded
144 * @throws Exception if there are failures accessing DitContentRule information
145 */
146 List<Entry> loadDitContentRules( String... schemanames ) throws Exception;
147
148
149 /**
150 * Build a list of DitStructureRules read from the underlying storage for
151 * a list of specific schema.
152 *
153 * @param schemas the schemas from which DitStructureRules are loaded
154 * @throws Exception if there are failures accessing DitStructureRule information
155 */
156 List<Entry> loadDitStructureRules( Schema... schemas ) throws Exception;
157
158
159 /**
160 * Build a list of DitStructureRules read from the underlying storage for
161 * a list of specified schema names
162 *
163 * @param schemaNames the schema names from which DitStructureRules are loaded
164 * @throws Exception if there are failures accessing DitStructureRule information
165 */
166 List<Entry> loadDitStructureRules( String... schemanames ) throws Exception;
167
168
169 /**
170 * Build a list of MatchingRules read from the underlying storage for
171 * a list of specific schema
172 *
173 * @param schemas the schemas from which MatchingRules are loaded
174 * @throws Exception if there are failures accessing MatchingRule information
175 */
176 List<Entry> loadMatchingRules( Schema... schemas ) throws Exception;
177
178
179 /**
180 * Build a list of MatchingRules read from the underlying storage for
181 * a list of specific schema, using their name
182 *
183 * @param schemaNames the schema names from which MatchingRules are loaded
184 * @throws Exception if there are failures accessing MatchingRule information
185 */
186 List<Entry> loadMatchingRules( String... schemaNames ) throws Exception;
187
188
189 /**
190 * Build a list of MatchingRuleUses read from the underlying storage for
191 * a list of specific schema.
192 *
193 * @param schemas the schemas from which MatchingRuleUses are loaded
194 * @throws Exception if there are failures accessing MatchingRuleUse information
195 */
196 List<Entry> loadMatchingRuleUses( Schema... schemas ) throws Exception;
197
198
199 /**
200 * Build a list of MatchingRuleUses read from the underlying storage for
201 * a list of specified schema names
202 *
203 * @param schemaNames the schema names from which MatchingRuleUses are loaded
204 * @throws Exception if there are failures accessing MatchingRuleUses information
205 */
206 List<Entry> loadMatchingRuleUses( String... schemanames ) throws Exception;
207
208
209 /**
210 * Build a list of NameForms read from the underlying storage for
211 * a list of specific schema.
212 *
213 * @param schemas the schemas from which NameForms are loaded
214 * @throws Exception if there are failures accessing NameForm information
215 */
216 List<Entry> loadNameForms( Schema... schemas ) throws Exception;
217
218
219 /**
220 * Build a list of NameForms read from the underlying storage for
221 * a list of specified schema names
222 *
223 * @param schemaNames the schema names from which NameForms are loaded
224 * @throws Exception if there are failures accessing NameForms information
225 */
226 List<Entry> loadNameForms( String... schemanames ) throws Exception;
227
228
229 /**
230 * Build a list of Normalizers read from the underlying storage for
231 * a list of specified schema
232 *
233 * @param schemas the schemas from which Normalizers are loaded
234 * @throws Exception if there are failures accessing Normalizer information
235 */
236 List<Entry> loadNormalizers( Schema... schemas ) throws Exception;
237
238
239 /**
240 * Build a list of Normalizers read from the underlying storage for
241 * a list of specified schema names
242 *
243 * @param schemaNames the schema names from which Normalizers are loaded
244 * @throws Exception if there are failures accessing Normalizer information
245 */
246 List<Entry> loadNormalizers( String... schemaNames ) throws Exception;
247
248
249 /**
250 * Build a list of ObjectClasses read from the underlying storage for
251 * a list of specific schema.
252 *
253 * @param schemas the schemas from which ObjectClasses are loaded
254 * @throws Exception if there are failures accessing ObjectClass information
255 */
256 List<Entry> loadObjectClasses( Schema... schemas ) throws Exception;
257
258
259 /**
260 * Build a list of ObjectClasses read from the underlying storage for
261 * a list of specified schema names
262 *
263 * @param schemaNames the schema names from which ObjectClasses are loaded
264 * @throws Exception if there are failures accessing ObjectClasses information
265 */
266 List<Entry> loadObjectClasses( String... schemaNames ) throws Exception;
267
268
269 /**
270 * Build a list of Syntaxes read from the underlying storage for
271 * a list of specified schema
272 *
273 * @param schemas the schemas from which Syntaxes are loaded
274 * @throws Exception if there are failures accessing Syntax information
275 */
276 List<Entry> loadSyntaxes( Schema... schemas ) throws Exception;
277
278
279 /**
280 * Build a list of Syntaxes read from the underlying storage for
281 * a list of specified schema names
282 *
283 * @param schemaNames the schema names from which Syntaxes are loaded
284 * @throws Exception if there are failures accessing Syntax information
285 */
286 List<Entry> loadSyntaxes( String... schemaNames ) throws Exception;
287
288
289 /**
290 * Build a list of SyntaxCheckers read from the underlying storage for
291 * a list of specified schema
292 *
293 * @param schemas the schemas from which SyntaxCheckers are loaded
294 * @throws Exception if there are failures accessing SyntaxChecker information
295 */
296 List<Entry> loadSyntaxCheckers( Schema... schemas ) throws Exception;
297
298
299 /**
300 * Build a list of SyntaxCheckers read from the underlying storage for
301 * a list of specified schema names
302 *
303 * @param schemaNames the schema names from which SyntaxCheckers are loaded
304 * @throws Exception if there are failures accessing SyntaxChecker information
305 */
306 List<Entry> loadSyntaxCheckers( String... schemanames ) throws Exception;
307
308
309 /**
310 * @return the list of enabled schemas
311 * @throws Exception TODO
312 */
313 Collection<Schema> getAllEnabled() throws Exception;
314
315
316 /**
317 * @return the list of all schemas
318 * @throws Exception TODO
319 */
320 Collection<Schema> getAllSchemas() throws Exception;
321
322
323 /**
324 * Add a new schema to the schema's list
325 */
326 void addSchema( Schema schema );
327
328
329 /**
330 * Remove a schema from the schema's list
331 */
332 void removeSchema( Schema schema );
333 }