Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This class diagram exposes the relations between all those classes :

AttributeType

TODO

Comparator

Here are the fields stored in a Comparator AttributeType instance :

Name

default

description

N/A

extensions

N/A

isEnabled

TRUE

isObsolete

FALSE

isReadOnly

FALSE

names

No names

objectType COMPARATOR

ATTRIBUTE_TYPE

oid

MR AT OID

schemaName

N/A

specification

not modifiable

canUserModify

TRUE

bytecode equality

not modifiable MR reference

fqcn equalityOid

not modifiable

Adding a comparator

Register the comparator into the ComparatorRegistry :
update the ComparatorRegistry.byOid : add <oid, comparator>
update the ComparatorRegistry.byName : add <oid, comparator>
associate the Comparator with the schema : <schema, set<SchemaObject>> += comparator

Modifying a comparator

Nothing to do but update the comparator in place (replacing all the fields of the original comparator).

Note that all the fields are not modifiables.

Deleting a comparator

We can't delete a comparator if it is used by a MatchingRule. This is check by verifying in
the usedBy table :

if usedBy.get( comparator.oid ) is not empty, generate an error.

This is a more complex operation, as we may have some MatchingRules pointing on this object.
We have to :
remove the oid from the ComparatorRegistry.byOid
remove the oid from the ComparatorRegistry.byName
remove the Comparator from the registries bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= comparator

DITContentRule

Not Yet Implemented

DITStructureRule

Not Yet Implemented

MatchingRule

TODO

MatchingRuleUse

Not Yet Implemented

NameForm

Not Yet Implemented

...

MR OID

isCollective

FALSE

isSingleValued

FALSE

ordering

MR reference

orderingOid

MR OID

substring

MR reference

substringOid

MR OID

superior

AT reference

superiorOid

MR OID

syntax

Syntax reference

syntaxLength

0

syntaxOid

Syntax OID

usage

userApplications

Adding an AttributeType

Register the AttributeType into the AttributeTypeRegistry :
update the AttributeTypeRegistry.byOid : add <oid, AttributeType>
update the AttributeTypeRegistry.byName : add <oid, AttributeType>
associate the AttributeType with the schema : <schema, set<SchemaObject>> += AttributeType

Modifying an AttributeType

Deleting an AttributeType

Comparator

Here are the fields stored in a Normalizer Comparator instance :

Name

default

description

N/A

extensions

N/A

isEnabled

TRUE

isObsolete

FALSE

isReadOnly

FALSE

names

No names

objectType

NORMALIZER COMPARATOR

oid

MR OID

schemaName

N/A

specification

not modifiable

bytecode

not modifiable

fqcn

not modifiable

*

Adding a Normalizer

Register the Normalizer into the NormalizerRegistry :
update the NormalizerRegistry.byOid : add <oid, Normalizer>
update the NormalizerRegistry.byName : add <oid, Normalizer>
associate the Normalizer with the schema : <schema, set<SchemaObject>> += Normalizer

Modifying a Normalizer

Nothing to do but update the Normalizer in place (replacing all the fields of the original Normalizer).

Note that all the fields are not modifiables.

Deleting a Normalizer

not modifiable

Adding a comparator

Register the comparator into the ComparatorRegistry :
update the ComparatorRegistry.byOid : add <oid, comparator>
update the ComparatorRegistry.byName : add <oid, comparator>
associate the Comparator with the schema : <schema, set<SchemaObject>> += comparator

Modifying a comparator

Nothing to do but update the comparator in place (replacing all the fields of the original comparator).

Note that all the fields are not modifiables.

Deleting a comparator

We can't delete a comparator if it is used by a MatchingRule. This is checked by verifying in
the usedBy table :

if usedBy.get( comparator.oid ) is not empty, generate an error.

This is a more complex operation, as we may have some MatchingRules pointing on this object.
We have to :
remove the oid from the ComparatorRegistry.byOid
remove the oid from the ComparatorRegistry.byName
remove the Comparator from the bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= comparator

DITContentRule

Not Yet Implemented

DITStructureRule

Not Yet Implemented

MatchingRule

TODO

MatchingRuleUse

Not Yet Implemented

NameForm

Not Yet Implemented

Normalizer (specific)

Here are the fields stored in a Normalizer instance :

Name

default

description

N/A

extensions

N/A

isEnabled

TRUE

isObsolete

FALSE

isReadOnly

FALSE

names

No names

objectType

NORMALIZER

oid

MR OID

schemaName

N/A

specification

not modifiable

bytecode

not modifiable

fqcn

not modifiable

*

Adding a Normalizer

Register the Normalizer into the NormalizerRegistry :
update the NormalizerRegistry.byOid : add <oid, Normalizer>
update the NormalizerRegistry.byName : add <oid, Normalizer>
associate the Normalizer with the schema : <schema, set<SchemaObject>> += Normalizer

Modifying a Normalizer

Nothing to do but update the Normalizer in place (replacing all the fields of the original Normalizer).

Note that all the fields are not modifiables.

Deleting a Normalizer

We can't delete a Normalizer if it is used by a MatchingRule. This is checked by verifying in
the usedBy table :

if usedBy.get( Normalizer.oid ) is not empty, generate an error.

This is a more complex operation, as we may have some MatchingRules pointing on this object.
We have to :
remove the oid from the NormalizerRegistry.byOid
remove the oid from the NormalizerRegistry.byName
remove the Normalizer from the bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= Normalizer

ObjectClass

TODO

Syntax

Here are the fields stored in a Syntax instance :

Name

default

description

N/A

extensions

N/A

isEnabled

TRUE

isObsolete

FALSE

isReadOnly

FALSE

names

No names

objectType

ATTRIBUTE_TYPE

oid

AT OID

schemaName

N/A

isHumanReadable

FALSE

syntaxChecker

SC reference

Adding a Syntax

Register the Syntax into the SyntaxRegistry :
update the SyntaxRegistry.byOid : add <oid, Syntax>
update the SyntaxRegistry.byName : add <oid, Syntax>
associate the Syntax with the schema : <schema, set<SchemaObject>> += Syntax
update the Registries.globalOidRegistry : add <oid, Syntax>

When all the schema modifications will be done, do the additional updates :

update the Syntax.syntaxChecker : SyntaxCheckerRegistry.lookup( oid )
update the Registries.using map : <Syntax.oid, set<SyntaxChecker>> += SyntaxChecker
update the Registries.usedBy map : <SyntaxChecker.oid, set<Syntax>> += Syntax

Modifying a Syntax

We won't create a new object, but will update the existing one. The OID can't be changed

If we have changed the SyntaxChecker, when all the schema modifications will be done, do the
additional updates :
update the Syntax.syntaxChecker : SyntaxCheckerRegistry.lookup( oid )
update the Registries.using map : <Syntax.oid, set<SyntaxChecker>> -= old SyntaxChecker
update the Registries.using map : <Syntax.oid, set<SyntaxChecker>> += new SyntaxChecker
update the Registries.usedBy map : <old SyntaxChecker.oid, set<Syntax>> -= Syntax
update the Registries.usedBy map : <new SyntaxChecker.oid, set<Syntax>> += Syntax

Deleting a Syntax

We can't delete a schema which is used by either a MatchingRule or an AttributeType. This is checked We can't delete a Normalizer if it is used by a MatchingRule. This is check by verifying in
the usedBy table :

if usedBy.get( Normalizer.oid ) is not empty, generate an error.

This is a more complex operation, as we may have some MatchingRules pointing on this object.
We have to :
remove the oid from the NormalizerRegistry.byOid
remove the oid from the NormalizerRegistry.byName
remove the Normalizer from the registries bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= Normalizer

ObjectClass

TODO

Syntax

Syntax.oid ) is not empty, generate an error.

Otherwise, here are the operations we have to conduct :
remove the Syntax.oid from the SyntaxRegistry.byOid
for each Syntax' name,
remove the Syntax.name from the SyntaxRegistry.byName
remove the Syntax from the bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= Syntax

When all the schema modifications will be done, do the additional updates :

update the Registries.using map : remove the relation <Syntax.oid, set<SyntaxChecker>>
update the Registries.usedBy map : <SyntaxChecker.oid, set<Syntax>> -= SyntaxTODO

SyntaxChecker (specific)

Here are the fields stored in a SyntaxChecker instance :

Name

default

description

N/A

extensions

N/A

isEnabled

TRUE

isObsolete

FALSE

isReadOnly

FALSE

names

No names

objectType

SYNTAX_CHECKER

oid

MR SYNTAX OID

schemaName

N/A

specification

not modifiable

bytecode

not modifiable

fqcn

not modifiable

*

...

We can't delete a SyntaxChecker if it is used by a Syntax. This is check checked by verifying in
the usedBy table :

...

This is a more complex operation, as we may have some Syntax pointing on this object.
We have to :
remove the oid from the SyntaxCheckerRegistry.byOid
remove the oid from the SyntaxCheckerRegistry.byName
remove the SyntaxChecker from the registries bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= SyntaxChecker

...