directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Norval Hope (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DIRSERVER-760) reading .schema files at server start-up
Date Tue, 07 Nov 2006 10:58:51 GMT
     [ http://issues.apache.org/jira/browse/DIRSERVER-760?page=all ]

Norval Hope updated DIRSERVER-760:
----------------------------------

    Attachment: schema_branch.patch

Here is an initial patch of a working server (at least given the testing I've done) against
https://svn.apache.org/repos/asf/directory/branches/apacheds-schema , where no output from
the Maven schema plugin is used in the server.xml file (I ran ./apache/server_main/apacheds.bat).

This is obviously a work in progress to show the job can be done, and one possible implementational
approach. There are a number of significant questions that still need to be addressed by some
developers more knowledgeable about ApacheDS then myself:
  1. Maven support: currently I ran by looking up the .schema files in ./apache/server_main/conf/*.schema
(configured via ./apache/server_main/server.xml, which I also copied into the installers dir).
I copied these files manually to test, but presume they should be copied from apache/core/src/main/schema
to somewhere else for packaging in all supported release packages. Even if the standard .schema
files are packaged in .jars, I think it is important that a dir outside of jars can be easily
configured to accept extra .schema files not included in the standard build.
    a. Currently extra content (not attribute types or object classes) that is associated
with a .schema file, but which must be manually maintained is found by looking for a matching
???SchemaAdditions class (eg SystemSchemaAdditions associated with "00_system.schema") using
reflection. A more explicit approach would be better but simply using Spring is problematic
as the major variable in the manual configurations is the code (normalizer/comparator etc)
for each item, and having a separate class for each them is most probably not a viable approach.
  2. Tidy up: I haven't removed any code made defunct by this patch, but there is some (eg
BootstrapSchemaLoader). There was some ThreadLocal support in this class which I don't understand
the motivation for, so I may have missed something.
    a. I don't understand the reasoning behind the BootstrapRegistries versus the GlobalRegistries,
and it seems to me that ultimately a single Registries flavour should be supported, and it
should support schema being contributed to the server dynamically after it has started up
(for instance on a custom partition being dynamically activated).
     b. Some refactoring of project modules will most probably be required if my implementation
approach is accepted. In particular the apache/core-plugin module should perhaps be deleted
and the Antlr support in it moved to apache/core.
  3. Once more knowledgeable peeps then I have weighed in so that the details are clearer,
I'm happy to document the details.

> reading .schema files at server start-up
> ----------------------------------------
>
>                 Key: DIRSERVER-760
>                 URL: http://issues.apache.org/jira/browse/DIRSERVER-760
>             Project: Directory ApacheDS
>          Issue Type: New Feature
>          Components: core
>    Affects Versions: 1.5.1
>         Environment: N/A
>            Reporter: Norval Hope
>         Attachments: schema_branch.patch, schema_loader.patch
>
>
> I am submitting a patch for a feature I required, and which I've seen a number of queries
about on the DEV list. Currently the only way to get new .schema information into ApacheDS
is to use the Maven2 plugin, requiring a rebuild of the server (not to mention working around
problems like methods being generated which are too long for Java to handle).
> Instead this patch adds support for reading of  specified .schema files from server.xml
at server startup, via a new interface SchemaLoader and a default implementation FileSystemSchemaLoader.
The latter supports reading all files matching a specified regex in a specified directory
(in which case users must be careful to ensure that files appear lexicographically before
their dependant files, ala init.rc in Linux) or reading an ordered list of file names under
a specified directory. An example server.xml snippet is as follows:
>     <property name="bootstrapSchemas">
>       <set>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.AutofsSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.CorbaSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.CoreSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.CosineSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.ApacheSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.CollectiveSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.InetorgpersonSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.JavaSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.Krb5kdcSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.NisSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.SystemSchema"/>
>         <bean class="org.apache.directory.server.core.schema.bootstrap.ApachednsSchema"/>
>       </set>
>     </property>
>     <property name="schemaLoaders">
>         <list>
>             <bean class="org.apache.directory.server.core.schema.FileSystemSchemaLoader">
>                 <constructor-arg><value>./</value></constructor-arg>
>                 <!--<constructor-arg><value>.*_openldap.schema</value></constructor-arg>-->
>                 <constructor-arg>
>                     <list>
>                         <value>my1_openldap.schema</value>
>                         <value>my2_openldap.schema</value>
>                     </list>
>                 </constructor-arg>
>             </bean>
>         </list>
>     </property>
> noting that the Maven2 style approach is of course still supported where desired. A list
is used so that multiple SchemaLoader implementations can be appended if required (which I
do). 
> I have also included SchemaFromSearchConverter which can read a schema from another directory
via conventional query, which may come in useful for people using ApacheDS as a virtual directory
container of sorts. It is not required by the core patch and can be excluded if no generic
use is seen for it.
> A few issues are still outstanding:
>    1. Is the patch seen as worthwhile by the DEV list and/or are there any issues with
my implementation of it?
>    2. At it's core the patch uses the OpenLdapSchemaParser to read the .schema files,
which is currently only available in the Maven2 plugin artifact     
> <groupId>org.apache.directory.server</groupId>
> <artifactId>apacheds-core-plugin</artifactId>
>    
>     which is a bit clunky as it means people need to include this jar in their classpath
(or in the UberJar). Perhaps this parsing component should be separated from the rest of the
maven plugin to tidy this up (I don't know maven well enough to do this myself).
>    
>    3. If the feature and implementation are ok, what further steps should I take re preparing
the patch for inclusion?
> Thanks (by the way I was previously known as Norbert Reilly)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message