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