I have removed a lot of the old initialization code as you can see in the DefaultDirectoryService class. The new SchemaPartition which now wraps another supplied partition implementation storing the schema in it's own implementation specific backing store, initializes the schema on behalf of the system.
The idea is simple. The SchemaPartition's wrapped partition is instantiated first, then injected into the SchemaPartition which is instantiated right after this contained partition. The SchemaPartition in the default constructor loads the "apachemeta" schema and its dependencies from within the apacheds-ldap-schema-[version].jar without exploding it. This is because we need a minimal set of schema to give to this contained partition before initializing it later on in this process. We're still talking instantiation and object composition right now. Also we do not explode because we might not use an LDIF partition like in Andrea's case where an OraclePartition is used.
Now once the SchemaPartition is composed with injected wrapped Partition it is injected into the SchemaService. The SchemaService is then injected into the DefaultDirectoryService. The DDS when launched in code would have to have this kind of setup done to it to start it up embedded.
Then after instantiation is done, the DDS is initialized. On initialization the SchemaPartition is initialized by handing it the DDS reference. This then triggers loading the schema from the contained Partition using the ParititionSchemaLoader. This loads all the enabled schemas skipping the apachemeta and its dependencies that were already loaded.
Once the full registries come on line through the Partition based load, the DDS starts initializing all other partitions. There are now some loose ends that need to be cleaned up considering how late it was last night when I did all this.
I will start trying to clean this up today.
so far, I'm able to build and run tests up to the core project, which fails as teh SchemaService is not initialized.
The associated portion of code has been removed, and should be replaced by the new initialization.
Any status on this part ?