Hi,

so here is where I am from now on :

o A new hierarchy has been defined for the schema objects. The base class is SchemaObject. It defines the following attributes :
   String oid : The SchemaObject numeric OID
   List<String> names : The optional names for this SchemaObject
   boolean isEnabled : Whether or not this SchemaObject is enabled
   boolean isReadOnly : Whether or not this SchemaObject can be modified
   boolean isObsolete : Whether or not this SchemaObject is obsolete
   String description : A short description of this SchemaObject
String schemaName : The name of the schema this object is associated with SchemaObjectType objectType : The SchemaObjectType (AT, OC, N, C, LS, etc) Map<String, List<String>> extensions A map containing the list of supported extensions

All those attributes may not be used by all the inherit classes (like the Obsolete field is not used for C, N, LS, SC), but it's easier to have it here.

Another class has been used for SO which define some behavior, namely C, N and SC. As one user can define its own set of such SO, with specific implementation, and as they can be classLoaded, we have defined a LoadableSchemaObject. This class define two new attributes :
   private String fqcn : The Full Qualified Class Name
   private String bytecode : The base64 encoded bytecode for this schema

This class inherits from ScvhemaObject

All the SchemaObject children extends either SchemaObject or LoadableSchemaObject.

o Registries have been moved to shared.
As registries just hold Map containing relation between an OID and a SchemaObject, plus a Map relating a Name with a SchemaObject, it's better to have them in a place a client can use them

o A lot of refactoring is going on to get the OIDs of SO instance being passed as an argument of the SO constructors, as we want each SO to have its own OID. That also mean we should make the C and N have their associated MR's OID, and the SC has its LS's OID.

o The remaining String representing OIDs hard coded are slowly moved to shared SchemaConstants class.

o The Syntax has been renamed to LdapSyntax to reflect the naming used in the RFC

o Comparator has also be renamed LdapComparator, to avoid any confusion with the Java Comparator class

o An heavy use of generics has been done, especially for Comparators

o Of course, the impact on the whole server is enourmous, and t will take time to complete the full migration, but right now, Normalizers, Comparators and SyntaxCheckers have been completed.

o We also have to add the missing Comparators (a lot of them needs to be added)

That's pretty much it for today, I'm continuing with MR, expecting it to be done in the afternoon.

Completion of the full change is expected to be around the middle of next week. Any help is welcomed, of course, and as everything is don in a branch (https://svn.apache.org/repos/asf/directory/apacheds/branches/apacheds-schema-with-dependencies/), and as I'm committing code as fast as I can, there is room for othe rpeople than just me to review or code.

Thanks !

--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org


Reply via email to