org.apache.directory.server.core.schema
Class SchemaService

java.lang.Object
  extended by org.apache.directory.server.core.interceptor.BaseInterceptor
      extended by org.apache.directory.server.core.schema.SchemaService
All Implemented Interfaces:
Interceptor

public class SchemaService
extends BaseInterceptor

An Interceptor that manages and enforces schemas.

Version:
$Rev: 515053 $, $Date: 2007-03-06 11:24:40 +0100 (Tue, 06 Mar 2007) $
Author:
Apache Directory Project

Constructor Summary
SchemaService()
          Creates a schema service interceptor.
 
Method Summary
 void add(NextInterceptor next, org.apache.directory.shared.ldap.name.LdapDN normName, javax.naming.directory.Attributes attrs)
          Check that all the attributes exist in the schema for this entry.
 void init(DirectoryServiceConfiguration factoryCfg, InterceptorConfiguration cfg)
          Initialize the Schema Service
 javax.naming.NamingEnumeration list(NextInterceptor nextInterceptor, org.apache.directory.shared.ldap.name.LdapDN base)
          Filters Partition.list(org.apache.directory.shared.ldap.name.LdapDN) call.
 javax.naming.directory.Attributes lookup(NextInterceptor nextInterceptor, org.apache.directory.shared.ldap.name.LdapDN name)
          Search for an entry, using its DN.
 javax.naming.directory.Attributes lookup(NextInterceptor nextInterceptor, org.apache.directory.shared.ldap.name.LdapDN name, java.lang.String[] attrIds)
          Filters Partition.lookup(org.apache.directory.shared.ldap.name.LdapDN,String[]) call.
 void modify(NextInterceptor next, org.apache.directory.shared.ldap.name.LdapDN name, int modOp, javax.naming.directory.Attributes mods)
          Check that the modify operations are allowed, and the conform to the schema.
 void modify(NextInterceptor next, org.apache.directory.shared.ldap.name.LdapDN name, org.apache.directory.shared.ldap.message.ModificationItemImpl[] mods)
          Filters Partition#modify(org.apache.directory.shared.ldap.name.LdapDN,javax.naming.directory.ModificationItem[]) call.
 javax.naming.NamingEnumeration search(NextInterceptor nextInterceptor, org.apache.directory.shared.ldap.name.LdapDN base, java.util.Map env, org.apache.directory.shared.ldap.filter.ExprNode filter, javax.naming.directory.SearchControls searchCtls)
          Filters Partition.search(org.apache.directory.shared.ldap.name.LdapDN,java.util.Map,org.apache.directory.shared.ldap.filter.ExprNode,javax.naming.directory.SearchControls) call.
 
Methods inherited from class org.apache.directory.server.core.interceptor.BaseInterceptor
addContextPartition, bind, compare, delete, destroy, getContext, getMatchedName, getPrincipal, getRootDSE, getSuffix, hasEntry, isSuffix, listSuffixes, modifyRn, move, move, removeContextPartition, unbind
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SchemaService

public SchemaService()
Creates a schema service interceptor.

Method Detail

init

public void init(DirectoryServiceConfiguration factoryCfg,
                 InterceptorConfiguration cfg)
          throws javax.naming.NamingException
Initialize the Schema Service

Specified by:
init in interface Interceptor
Overrides:
init in class BaseInterceptor
Parameters:
factoryCfg -
cfg -
Throws:
javax.naming.NamingException

list

public javax.naming.NamingEnumeration list(NextInterceptor nextInterceptor,
                                           org.apache.directory.shared.ldap.name.LdapDN base)
                                    throws javax.naming.NamingException
Description copied from interface: Interceptor
Filters Partition.list(org.apache.directory.shared.ldap.name.LdapDN) call.

Specified by:
list in interface Interceptor
Overrides:
list in class BaseInterceptor
Throws:
javax.naming.NamingException

search

public javax.naming.NamingEnumeration search(NextInterceptor nextInterceptor,
                                             org.apache.directory.shared.ldap.name.LdapDN base,
                                             java.util.Map env,
                                             org.apache.directory.shared.ldap.filter.ExprNode filter,
                                             javax.naming.directory.SearchControls searchCtls)
                                      throws javax.naming.NamingException
Description copied from interface: Interceptor
Filters Partition.search(org.apache.directory.shared.ldap.name.LdapDN,java.util.Map,org.apache.directory.shared.ldap.filter.ExprNode,javax.naming.directory.SearchControls) call.

Specified by:
search in interface Interceptor
Overrides:
search in class BaseInterceptor
Throws:
javax.naming.NamingException

lookup

public javax.naming.directory.Attributes lookup(NextInterceptor nextInterceptor,
                                                org.apache.directory.shared.ldap.name.LdapDN name)
                                         throws javax.naming.NamingException
Search for an entry, using its DN. Binary attributes and ObjectClass attribute are removed.

Specified by:
lookup in interface Interceptor
Overrides:
lookup in class BaseInterceptor
Throws:
javax.naming.NamingException

lookup

public javax.naming.directory.Attributes lookup(NextInterceptor nextInterceptor,
                                                org.apache.directory.shared.ldap.name.LdapDN name,
                                                java.lang.String[] attrIds)
                                         throws javax.naming.NamingException
Description copied from interface: Interceptor
Filters Partition.lookup(org.apache.directory.shared.ldap.name.LdapDN,String[]) call.

Specified by:
lookup in interface Interceptor
Overrides:
lookup in class BaseInterceptor
Throws:
javax.naming.NamingException

modify

public void modify(NextInterceptor next,
                   org.apache.directory.shared.ldap.name.LdapDN name,
                   int modOp,
                   javax.naming.directory.Attributes mods)
            throws javax.naming.NamingException
Check that the modify operations are allowed, and the conform to the schema.

Specified by:
modify in interface Interceptor
Overrides:
modify in class BaseInterceptor
Parameters:
next - The next interceptor to call when we are done with the local operation
name - The DN on which the modification is being done
modOp - The modification. One of : DirContext.ADD_ATTRIBUTE DirContext.REMOVE_ATTRIBUTE DirContext.REPLACE_ATTRIBUTE
mods - The modifications to check. Each operation is atomic, and should be applied to a copy of the entry, in order to check that the schema is not violated at the end. For instance, we can't delete an attribute that does not exist and add it later. The opposite is legal.
Throws:
javax.naming.NamingException - The generic exception we get if an illegal operation occurs
org.apache.directory.shared.ldap.exception.LdapNameNotFoundException - If we don't find the entry, then this exception is thrown.
org.apache.directory.shared.ldap.exception.LdapInvalidAttributeIdentifierException - The modified attribute is not known by the schema, or the Entry is not extensible.
org.apache.directory.shared.ldap.exception.LdapNoSuchAttributeException - The modified Attribute does not exist in the current entry or is not added by a previous modification operation.
org.apache.directory.shared.ldap.exception.LdapSchemaViolationException - Another schema violation occured.

modify

public void modify(NextInterceptor next,
                   org.apache.directory.shared.ldap.name.LdapDN name,
                   org.apache.directory.shared.ldap.message.ModificationItemImpl[] mods)
            throws javax.naming.NamingException
Description copied from interface: Interceptor
Filters Partition#modify(org.apache.directory.shared.ldap.name.LdapDN,javax.naming.directory.ModificationItem[]) call.

Specified by:
modify in interface Interceptor
Overrides:
modify in class BaseInterceptor
Throws:
javax.naming.NamingException

add

public void add(NextInterceptor next,
                org.apache.directory.shared.ldap.name.LdapDN normName,
                javax.naming.directory.Attributes attrs)
         throws javax.naming.NamingException
Check that all the attributes exist in the schema for this entry.

Specified by:
add in interface Interceptor
Overrides:
add in class BaseInterceptor
Throws:
javax.naming.NamingException


Copyright © 2003-2010 Apache Software Foundation. All Rights Reserved.