View Javadoc

1   /*
2    *  Licensed to the Apache Software Foundation (ASF) under one
3    *  or more contributor license agreements.  See the NOTICE file
4    *  distributed with this work for additional information
5    *  regarding copyright ownership.  The ASF licenses this file
6    *  to you under the Apache License, Version 2.0 (the
7    *  "License"); you may not use this file except in compliance
8    *  with the License.  You may obtain a copy of the License at
9    *  
10   *    http://www.apache.org/licenses/LICENSE-2.0
11   *  
12   *  Unless required by applicable law or agreed to in writing,
13   *  software distributed under the License is distributed on an
14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *  KIND, either express or implied.  See the License for the
16   *  specific language governing permissions and limitations
17   *  under the License. 
18   *  
19   */
20  package org.apache.directory.server.schema.registries;
21  
22  
23  import java.util.Iterator;
24  
25  import javax.naming.NamingException;
26  
27  import org.apache.directory.shared.ldap.schema.syntax.SyntaxChecker;
28  import org.apache.directory.shared.ldap.schema.syntax.SyntaxCheckerDescription;
29  
30  
31  /**
32   * SyntaxChecker registry component's service interface.
33   *
34   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
35   * @version $Rev: 504773 $
36   */
37  public interface SyntaxCheckerRegistry
38  {
39      /**
40       * Registers a SyntaxChecker with this registry.
41       * 
42       * @param description the syntaxCheckerDescription for this syntaxChecker
43       * @param syntaxChecker the SyntaxChecker to register
44       * @throws NamingException if the SyntaxChecker is already registered or the
45       *      registration operation is not supported
46       */
47      void register( SyntaxCheckerDescription description, SyntaxChecker syntaxChecker ) throws NamingException;
48  
49  
50      /**
51       * Looks up a SyntaxChecker by its unique Object Identifier.
52       * 
53       * @param oid the object identifier
54       * @return the SyntaxChecker for the oid
55       * @throws NamingException if there is a backing store failure or the 
56       *      SyntaxChecker does not exist.
57       */
58      SyntaxChecker lookup( String oid ) throws NamingException;
59  
60  
61      /**
62       * Gets the name of the schema this schema object is associated with.
63       *
64       * @param oid the object identifier
65       * @return the schema name
66       * @throws NamingException if the schema object does not exist
67       */
68      String getSchemaName( String oid ) throws NamingException;
69  
70  
71      /**
72       * Checks to see if a SyntaxChecker exists.  Backing store failures simply 
73       * return false.
74       * 
75       * @param oid the object identifier
76       * @return true if a SyntaxChecker definition exists for the oid, false 
77       *      otherwise
78       */
79      boolean hasSyntaxChecker( String oid );
80      
81  
82      /**
83       * Get's an iterator over all the syntaxCheckers associated with this registry.
84       * 
85       * @return an Iterator over all the syntaxCheckers
86       */
87      Iterator<SyntaxChecker> iterator();
88  
89  
90      /**
91       * Get's an iterator over all the syntaxCheckerDescriptions associated with this registry.
92       * 
93       * @return an Iterator over all the syntaxCheckerDescriptions
94       */
95      Iterator<SyntaxCheckerDescription> syntaxCheckerDescriptionIterator();
96  
97  
98      /**
99       * Unregisters a registered syntaxChecker from this registry.
100      * 
101      * @param numericOid the numeric oid of the syntax this checker is associated with
102      * @throws NamingException if the numericOid is not valid
103      */
104     void unregister( String numericOid ) throws NamingException;
105     
106     
107     /**
108      * Unregisters all syntaxCheckers defined for a specific schema from
109      * this registry.
110      * 
111      * @param schemaName the name of the schema whose syntaxCheckers will be removed
112      */
113     void unregisterSchemaElements( String schemaName );
114 
115 
116     /**
117      * Renames the schemaName associated with entities within this 
118      * registry to a new schema name.
119      * 
120      * @param originalSchemaName the original schema name
121      * @param newSchemaName the new name to give to the schema
122      */
123     void renameSchema( String originalSchemaName, String newSchemaName );
124 }