directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Karasulu" <>
Subject [ApacheDS] [BigBang] Status Report
Date Mon, 08 Oct 2007 02:06:20 GMT
Hi all,


In the bigbang branches (BBB) [0] we're conducting a massive code
refactoring of ApacheDS 1.5 in preparation
for the 2.0 road map [1].  There are three major phases to the big bang

Phase I:
   Remove configuration bean hierarchy to directly configure service objects
with dependency injection.  At
   the same time we decouple configuration via JNDI but not the use of JNDI
for in-vm based ldap operations
   against the directory core.

Phase II:
   Decouple JNDI completely from the core and from protocol providers for
solid state operations: i.e. add, del
   modify, search etc.  JNDI classes and interfaces will no longer be used
within the server.  Consolidate all
   JNDI initial context factories into a single factory implementation and
move this wrapper provider outside of
   the core into it's own module.

Phase III:
   Cleanup after refactoring and implement additional high impact changes
such as:
       - virtual attributes
       - instrumentation
       - a better interceptor mechanism.
       - finalize facades for schema and other subsystems
       - code security to sandbox stored procedures

After this last phase the BBBs will replace their respective trunks for
shared, daemon, apacheds,
and installers.


I just finished a major part of phase I in the BBBs.  Specifically I have
removed the top level object for the
configuration as well as everything in the configuration bean hierarchy
except the protocol providers (PP).
Those still remain but they should be trivial to remove and configure the
PP's themselves.  After this change
I had to deal with several broken tests which I fixed just tonight.  They
still use JNDI for solid state operations
which is fine for now.  David if you're ready you can now start working
those protocol provider configuration
beans.  I'll start on the LDAP one for now which will perhaps take the
longest time to cleanup.

There are still some residual things remaining however I'll clean these
scars up with some more refactoring
as we work on the protocol providers.  Just to see the impact of these
changes up until this point you might
want to look at some test cases and the server.xml file.  It's really
looking good and a slew (not even a 3rd)
of the JNDI garbage has been removed.  There's much more clarity now and I'm
certain this is the right path
to take.  Here are links to those files:

As you can see the server.xml has become much more concise with greater
clarity.  This is thanks to David's
recommendation to use XBean.  Furthermore notice how the components
themselves are being assembled
instead of the configuration classes that were used before.

One important thing to note is that there is no longer an environment
section used before for JNDI environment
properties.  This used to store among other things the username/password of
the administrative user to start
up the server.  This will no longer be needed.  All embedded code is
trusted, including the protocol providers,
until we build a sandbox for code added to the server as stored procedures
to run with the permissions of the
owner in phase III.

Finally here are some test cases whose setUp() methods show how to construct
and start the core and the
server with all protocols respectively:

Notice that JNDI and the configuration beans are not used any longer to
start up the core.

Again notice the same thing with the ApacheDS object. Also note that by
default everything is configured to
work properly via smart defaults however note that LDAP is the only protocol
active by default.  All others
including LDAPS needs to be configured.

Plan for the Near Future

The next step I guess is still up to David and I.  We'll be removing all the
protocol configuration beans to
directly configure these beans by themselves.  Perhaps other components like
MINA thread pools etc
will be configured and injected as well.  There's a lot of cleanup that will
still take place once these objects
have been removed.

After that we can begin working on phase II.  Some or all of the work for
this phase can happen in parallel.
Emmanuel and I discussed this to some degree. Also Ersin those changes to
properly enable virtual/computed
attributes can now start as well as some sandboxing infrastructure for
stored procedures.


[0] -
[1] -

View raw message