001 package org.apache.directory.server.core.schema; 002 003 004 import org.apache.directory.shared.ldap.entry.ServerEntry; 005 import org.apache.directory.shared.ldap.exception.LdapException; 006 import org.apache.directory.shared.ldap.schema.SchemaManager; 007 008 009 public interface SchemaService 010 { 011 012 /** 013 * Tells if the given DN is the schemaSubentry DN 014 * 015 * @param dnString The DN we want to check 016 * @return <code>true</code> if the given DN is the Schema subentry DN 017 * @throws LdapException If the given DN is not valid 018 */ 019 boolean isSchemaSubentry( String dnString ) throws LdapException; 020 021 022 /** 023 * @return the schemaManager loaded from schemaPartition 024 */ 025 SchemaManager getSchemaManager(); 026 027 028 SchemaPartition getSchemaPartition(); 029 030 031 void setSchemaPartition( SchemaPartition schemaPartition ); 032 033 034 /** 035 * Initializes the SchemaService 036 * 037 * @throws Exception If the initializaion fails 038 */ 039 void initialize() throws Exception; 040 041 042 /** 043 * A seriously unsafe (unsynchronized) means to access the schemaSubentry. 044 * 045 * @return the schemaSubentry 046 * @throws Exception if there is a failure to access schema timestamps 047 */ 048 ServerEntry getSubschemaEntryImmutable() throws Exception; 049 050 051 /** 052 * A seriously unsafe (unsynchronized) means to access the schemaSubentry. 053 * 054 * @return the schemaSubentry 055 * @throws Exception if there is a failure to access schema timestamps 056 */ 057 ServerEntry getSubschemaEntryCloned() throws Exception; 058 059 060 /** 061 * Gets the schemaSubentry based on specific search id parameters which 062 * include the special '*' and '+' operators. 063 * 064 * @param ids the ids of the attributes that should be returned from a search 065 * @return the subschema entry with the ids provided 066 * @throws Exception if there are failures during schema info access 067 */ 068 ServerEntry getSubschemaEntry( String[] ids ) throws Exception; 069 }