Class Registries
- java.lang.Object
-
- org.apache.directory.api.ldap.model.schema.registries.Registries
-
- All Implemented Interfaces:
Cloneable
,SchemaLoaderListener
public class Registries extends Object implements SchemaLoaderListener, Cloneable
Document this class.- Author:
- Apache Directory Project
-
-
Constructor Summary
Constructors Constructor Description Registries()
Creates a new instance of Registries.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(SchemaObject schemaObject, boolean check)
Applies the added SchemaObject to the given registervoid
addReference(SchemaObject base, SchemaObject referenced)
Add an association between a SchemaObject an the SchemaObject it refersSet<SchemaObjectWrapper>
addSchema(String schemaName)
Create a new schema association with its contentvoid
associateWithSchema(SchemaObject schemaObject)
Store the given SchemaObject in the Map associating SchemaObjetcs to their related Schema.void
buildReference(SchemaObject schemaObject)
Build the SchemaObject referencesvoid
buildReferences()
Build the usedBy and using references from the stored elements.boolean
check()
Check the registries for invalid relations.void
checkRefInteg()
Attempts to resolve the dependent schema objects of all entities that refer to other objects within the registries.void
clear()
Clear the registries from all its elementsRegistries
clone()
Clone the Registries.boolean
contains(SchemaObject schemaObject)
Tells if the given SchemaObject is present in one schema.void
delCrossReferences(AttributeType attributeType)
Add the SchemaObjectReferences.void
delCrossReferences(MatchingRule matchingRule)
Delete the MR references (using and usedBy) : MR -> C MR -> N MR -> Svoid
delete(SchemaObject schemaObject)
Remove the given SchemaObject from the registriesvoid
delReference(SchemaObject base, SchemaObject referenced)
Delete an association between a SchemaObject an the SchemaObject it refersvoid
dissociateFromSchema(SchemaObject schemaObject)
Store the given SchemaObject in the Map associating SchemaObjetcs to their related Schema.String
dumpUsedBy()
Dump the UsedBy data structure as a StringString
dumpUsing()
Dump the Using data structure as a StringAttributeTypeRegistry
getAttributeTypeRegistry()
ComparatorRegistry
getComparatorRegistry()
DitContentRuleRegistry
getDitContentRuleRegistry()
DitStructureRuleRegistry
getDitStructureRuleRegistry()
SchemaErrorHandler
getErrorHandler()
OidRegistry<SchemaObject>
getGlobalOidRegistry()
LdapSyntaxRegistry
getLdapSyntaxRegistry()
Schema
getLoadedSchema(String schemaName)
Gets a schema that has been loaded into these Registries.Map<String,Schema>
getLoadedSchemas()
Gets an unmodifiable Map of schema names to loaded Schema objects.MatchingRuleRegistry
getMatchingRuleRegistry()
MatchingRuleUseRegistry
getMatchingRuleUseRegistry()
NameFormRegistry
getNameFormRegistry()
NormalizerRegistry
getNormalizerRegistry()
Map<String,Set<SchemaObjectWrapper>>
getObjectBySchemaName()
ObjectClassRegistry
getObjectClassRegistry()
String
getOid(String name)
Get an OID from a name.Set<SchemaObjectWrapper>
getReferencing(SchemaObject schemaObject)
Check that we can remove a given SchemaObject without breaking some of its references.SyntaxCheckerRegistry
getSyntaxCheckerRegistry()
Set<SchemaObjectWrapper>
getUsedBy(SchemaObject schemaObject)
Gets the Set of SchemaObjects referencing the given SchemaObjectSet<SchemaObjectWrapper>
getUsing(SchemaObject schemaObject)
Gets the Set of SchemaObjects referenced by the given SchemaObjectboolean
isDisabledAccepted()
Tells if the Registries accept disabled elements.boolean
isReferenced(SchemaObject schemaObject)
Checks if a specific SchemaObject is referenced by any other SchemaObject.boolean
isRelaxed()
Tells if the Registries is permissive or if it must be checked against inconsistencies.boolean
isSchemaLoaded(String schemaName)
Checks to see if a particular Schema is loaded.boolean
isStrict()
Tells if the Registries is strict.void
removeReference(SchemaObject schemaObject)
Unlink the SchemaObject referencesvoid
schemaLoaded(Schema schema)
Merely adds the schema to the set of loaded schemas.void
schemaUnloaded(Schema schema)
Merely removes the schema from the set of loaded schemas.void
setDisabledAccepted(boolean disabledAccepted)
Change the Registries behavior regarding disabled SchemaObject element.void
setErrorHandler(SchemaErrorHandler errorHandler)
void
setRelaxed()
Change the Registries to a relaxed mode, where invalid SchemaObjects can be registered.void
setStrict()
Change the Registries to a strict mode, where invalid SchemaObjects cannot be registered.String
toString()
-
-
-
Field Detail
-
STRICT
public static final boolean STRICT
The strict mode- See Also:
- Constant Field Values
-
RELAXED
public static final boolean RELAXED
The relaxed mode- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Registries
public Registries()
Creates a new instance of Registries.
-
-
Method Detail
-
getAttributeTypeRegistry
public AttributeTypeRegistry getAttributeTypeRegistry()
- Returns:
- The AttributeType registry
-
getComparatorRegistry
public ComparatorRegistry getComparatorRegistry()
- Returns:
- The Comparator registry
-
getDitContentRuleRegistry
public DitContentRuleRegistry getDitContentRuleRegistry()
- Returns:
- The DitContentRule registry
-
getDitStructureRuleRegistry
public DitStructureRuleRegistry getDitStructureRuleRegistry()
- Returns:
- The DitStructureRule registry
-
getMatchingRuleRegistry
public MatchingRuleRegistry getMatchingRuleRegistry()
- Returns:
- The MatchingRule registry
-
getMatchingRuleUseRegistry
public MatchingRuleUseRegistry getMatchingRuleUseRegistry()
- Returns:
- The MatchingRuleUse registry
-
getNameFormRegistry
public NameFormRegistry getNameFormRegistry()
- Returns:
- The NameForm registry
-
getNormalizerRegistry
public NormalizerRegistry getNormalizerRegistry()
- Returns:
- The Normalizer registry
-
getObjectClassRegistry
public ObjectClassRegistry getObjectClassRegistry()
- Returns:
- The ObjectClass registry
-
getGlobalOidRegistry
public OidRegistry<SchemaObject> getGlobalOidRegistry()
- Returns:
- The global Oid registry
-
getSyntaxCheckerRegistry
public SyntaxCheckerRegistry getSyntaxCheckerRegistry()
- Returns:
- The SyntaxChecker registry
-
getLdapSyntaxRegistry
public LdapSyntaxRegistry getLdapSyntaxRegistry()
- Returns:
- The LdapSyntax registry
-
getOid
public String getOid(String name)
Get an OID from a name. As we have many possible registries, we have to look in all of them to get the one containing the OID.- Parameters:
name
- The name we are looking at- Returns:
- The associated OID
-
getLoadedSchema
public Schema getLoadedSchema(String schemaName)
Gets a schema that has been loaded into these Registries.- Parameters:
schemaName
- the name of the schema to lookup- Returns:
- the loaded Schema if one corresponding to the name exists
-
isSchemaLoaded
public boolean isSchemaLoaded(String schemaName)
Checks to see if a particular Schema is loaded.- Parameters:
schemaName
- the name of the Schema to check- Returns:
- true if the Schema is loaded, false otherwise
-
checkRefInteg
public void checkRefInteg()
Attempts to resolve the dependent schema objects of all entities that refer to other objects within the registries. Null references will be handed appropriately. The order in which the SchemaObjects must be :- 1) Normalizers, Comparators and SyntaxCheckers (as they depend on nothing)
- 2) Syntaxes (depend on SyntaxCheckers)
- 3) MatchingRules (depend on Syntaxes, Normalizers and Comparators
- 4) AttributeTypes (depend on MatchingRules, Syntaxes and AttributeTypes : in this case, we first handle the superior)
- 5) ObjectClasses (depend on AttributeTypes and ObjectClasses)
Later, when we will support them :- 6) MatchingRuleUses (depend on matchingRules and AttributeTypes)
- 7) DitContentRules (depend on ObjectClasses and AttributeTypes)
- 8) NameForms (depends on ObjectClasses and AttributeTypes)
- 9) DitStructureRules (depends onNameForms and DitStructureRules)
-
delCrossReferences
public void delCrossReferences(AttributeType attributeType)
Add the SchemaObjectReferences. This method does nothing, it's just a catch all. The other methods will be called for each specific schemaObject public void addCrossReferences( SchemaObject schemaObject ) { // Do nothing : it's a catch all method. } /** Delete the AT references (using and usedBy) : AT -> MR (for EQUALITY, ORDERING and SUBSTR) AT -> S AT -> AT- Parameters:
attributeType
- The AttributeType to remove
-
delCrossReferences
public void delCrossReferences(MatchingRule matchingRule)
Delete the MR references (using and usedBy) : MR -> C MR -> N MR -> S- Parameters:
matchingRule
- The MatchinRule refere ce to delete
-
buildReference
public void buildReference(SchemaObject schemaObject)
Build the SchemaObject references- Parameters:
schemaObject
- The SchemaObject to add
-
removeReference
public void removeReference(SchemaObject schemaObject)
Unlink the SchemaObject references- Parameters:
schemaObject
- The SchemaObject to remove
-
buildReferences
public void buildReferences()
Build the usedBy and using references from the stored elements.
-
add
public void add(SchemaObject schemaObject, boolean check) throws LdapException
Applies the added SchemaObject to the given register- Parameters:
schemaObject
- The SchemaObject to addcheck
- A flag set when we want the schema checks to be done- Throws:
LdapException
- If we weren't able to add the SchemaObject
-
delete
public void delete(SchemaObject schemaObject) throws LdapException
Remove the given SchemaObject from the registries- Parameters:
schemaObject
- The SchemaObject to delete- Throws:
LdapException
- If the deletion failed
-
schemaLoaded
public void schemaLoaded(Schema schema)
Merely adds the schema to the set of loaded schemas. Does not actually do any work to add schema objects to registries. Listener method called to indicate a loader or other agent finished loading the schema objects for a schema into the Registries.- Specified by:
schemaLoaded
in interfaceSchemaLoaderListener
- Parameters:
schema
- the Schema that was loaded
-
schemaUnloaded
public void schemaUnloaded(Schema schema)
Merely removes the schema from the set of loaded schemas. Does not actually do any work to remove schema objects from registries. Listener method called to indicate an agent finished loading the schema objects for a schema into the Registries.- Specified by:
schemaUnloaded
in interfaceSchemaLoaderListener
- Parameters:
schema
- the Schema that was unloaded
-
getLoadedSchemas
public Map<String,Schema> getLoadedSchemas()
Gets an unmodifiable Map of schema names to loaded Schema objects.- Returns:
- the map of loaded Schema objects
-
getObjectBySchemaName
public Map<String,Set<SchemaObjectWrapper>> getObjectBySchemaName()
- Returns:
- Gets a reference to the Map associating a schemaName to its contained SchemaObjects
-
contains
public boolean contains(SchemaObject schemaObject)
Tells if the given SchemaObject is present in one schema. The schema may be disabled.- Parameters:
schemaObject
- The schemaObject we are looking for- Returns:
- true if the schemaObject is present in a schema
-
addSchema
public Set<SchemaObjectWrapper> addSchema(String schemaName)
Create a new schema association with its content- Parameters:
schemaName
- The schema name- Returns:
- A set containing the associations
-
associateWithSchema
public void associateWithSchema(SchemaObject schemaObject)
Store the given SchemaObject in the Map associating SchemaObjetcs to their related Schema.- Parameters:
schemaObject
- The schemaObject to register
-
dissociateFromSchema
public void dissociateFromSchema(SchemaObject schemaObject) throws LdapException
Store the given SchemaObject in the Map associating SchemaObjetcs to their related Schema.- Parameters:
schemaObject
- The schemaObject to register- Throws:
LdapException
- If there is a problem
-
isReferenced
public boolean isReferenced(SchemaObject schemaObject)
Checks if a specific SchemaObject is referenced by any other SchemaObject.- Parameters:
schemaObject
- The SchemaObject we are looking for- Returns:
- true if there is at least one SchemaObjetc referencing the given one
-
getUsedBy
public Set<SchemaObjectWrapper> getUsedBy(SchemaObject schemaObject)
Gets the Set of SchemaObjects referencing the given SchemaObject- Parameters:
schemaObject
- The SchemaObject we are looking for- Returns:
- The Set of referencing SchemaObject, or null
-
dumpUsedBy
public String dumpUsedBy()
Dump the UsedBy data structure as a String- Returns:
- The UsedBy data structure
-
dumpUsing
public String dumpUsing()
Dump the Using data structure as a String- Returns:
- The Using data structure
-
getUsing
public Set<SchemaObjectWrapper> getUsing(SchemaObject schemaObject)
Gets the Set of SchemaObjects referenced by the given SchemaObject- Parameters:
schemaObject
- The SchemaObject we are looking for- Returns:
- The Set of referenced SchemaObject, or null
-
addReference
public void addReference(SchemaObject base, SchemaObject referenced)
Add an association between a SchemaObject an the SchemaObject it refers- Parameters:
base
- The base SchemaObjectreferenced
- The referenced SchemaObject
-
delReference
public void delReference(SchemaObject base, SchemaObject referenced)
Delete an association between a SchemaObject an the SchemaObject it refers- Parameters:
base
- The base SchemaObjectreferenced
- The referenced SchemaObject
-
check
public boolean check()
Check the registries for invalid relations. This check stops at the first error.- Returns:
- true if the Registries is consistent, false otherwise
-
clone
public Registries clone() throws CloneNotSupportedException
Clone the Registries. This is done in two steps : - first clone the SchemaObjetc registries - second restore the relation between them- Throws:
CloneNotSupportedException
-
isRelaxed
public boolean isRelaxed()
Tells if the Registries is permissive or if it must be checked against inconsistencies.- Returns:
- True if SchemaObjects can be added even if they break the consistency
-
isStrict
public boolean isStrict()
Tells if the Registries is strict.- Returns:
- True if SchemaObjects cannot be added if they break the consistency
-
setRelaxed
public void setRelaxed()
Change the Registries to a relaxed mode, where invalid SchemaObjects can be registered.
-
setStrict
public void setStrict()
Change the Registries to a strict mode, where invalid SchemaObjects cannot be registered.
-
getErrorHandler
public SchemaErrorHandler getErrorHandler()
-
setErrorHandler
public void setErrorHandler(SchemaErrorHandler errorHandler)
-
isDisabledAccepted
public boolean isDisabledAccepted()
Tells if the Registries accept disabled elements.- Returns:
- True if disabled SchemaObjects can be added
-
getReferencing
public Set<SchemaObjectWrapper> getReferencing(SchemaObject schemaObject)
Check that we can remove a given SchemaObject without breaking some of its references. We will return the list of refereing objects.- Parameters:
schemaObject
- The SchemaObject to remove- Returns:
- The list of SchemaObjects referencing the SchemaObjetc we want to remove
-
setDisabledAccepted
public void setDisabledAccepted(boolean disabledAccepted)
Change the Registries behavior regarding disabled SchemaObject element.- Parameters:
disabledAccepted
- Iffalse
, then the Registries won't accept disabled SchemaObject or enabled SchemaObject from disabled schema
-
clear
public void clear() throws LdapException
Clear the registries from all its elements- Throws:
LdapException
- If something goes wrong
-
toString
public String toString()
- Overrides:
toString
in classObject
- See Also:
Object.toString()
-
-