This thread branched off of the previous status thread Emmanuel posted. This
topic needs it's own thread.
CATEGORIZATION
----------------------------
Before we begin let's consider the different categories of extensions
(controls & extended operations):
FYI ADP = Apache Directory Project.
FYI Extensions = Bundles, modules, that extend the codec, like controls and
extended operations
Class (1) [ADP-PROVIDED]
- considered part of the standard ldap model
- must have
- packaged into API: available out of the box
- examples:
* ManageDsaIT
* PersistentSearch
* EntryChange
* Subentries
* Cascade
Class (2) [ADP-PROVIDED] non-standard, optional and available as a single
extension bundle
- not considered part of the standard ldap model
- may be server specific
- may be custom non-published spec
- optional, pluggable on demand
- examples:
* CreateCertificate
* StoredProcedure
* PassordPolicy
* Replication
Class (3) [USER-PROVIDED] non-standard, optional and user provided
bundle[s]
- anything under the sun
- optional
QUESTION
-----------------
How does this overlap into what we will do to restructure the organization
of the shared-ldap module which will eventually break up into separate Maven
modules (OSGi bundles)?
ANSWERS AND SOLUTIONS
--------------------------------------------
Here's one answer with possible configuration:
o shared-ldap-model
- holds only standard LDAP model types
- class 1 ADS-PROVIDED extension POJI/POJO pairs in
oadsl.message.controls and oadsl.message.extended
o shared-ldap-codec
- holds all the implementation details we want to hide
- exposes some SPI classes: as little as is needed to write new
controls and extended operations
- contains the default codec service implementation
- contains class 1 ADS-PROVIDED extension implementation objects
(grammars,containers,factories,decorators)
o shared-ldap-codec-api
- exposes minimal codec API so it can be used in studio, apacheds,
and other applications
- contains codec service interface
- codec related utilities
o shared-ldap-ext
- contains all class 2 ADS-PROVIDED extension classes
in oadsl.extensions.controls & oadsl.extensions.extended
- exposes extension POJO/POJI and utilities
- hides extension codec implementations
(grammars,containers,factories,decorators)
- registering one extension registers them all
- later if need by turned into ldap-ext multi-project, breaking up
extensions into per-extension bundles
Thoughts?
Thanks,
Alex
|