You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by Alex Karasulu <ak...@apache.org> on 2011/02/01 17:30:16 UTC

[Shared] Ldap and codec module finalization and controls

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

Re: [Shared] Ldap and codec module finalization and controls

Posted by Alex Karasulu <ak...@apache.org>.
On Wed, Feb 2, 2011 at 1:01 AM, Emmanuel Lecharny <el...@apache.org>wrote:

>
>
> On Tue, Feb 1, 2011 at 5:30 PM, Alex Karasulu <ak...@apache.org>wrote:
>
>> 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?
>>
>
> Where do you store class 3  elements ?
>


Class 3 extensions are user provided. They are not produced here.

Regards,
-- Alex

Re: [Shared] Ldap and codec module finalization and controls

Posted by Emmanuel Lecharny <el...@apache.org>.
On Tue, Feb 1, 2011 at 5:30 PM, Alex Karasulu <ak...@apache.org> wrote:

> 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?
>

Where do you store class 3  elements ?

>
>
> Thanks,
> Alex
>
>


-- 
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Re: [Shared] Ldap and codec module finalization and controls

Posted by Pierre-Arnaud Marcelot <pa...@marcelot.net>.
+1

Sounds very good to me.
Easy to understand and easy to use.

Regards,
Pierre-Arnaud

On 1 févr. 2011, at 17:30, Alex Karasulu wrote:

> 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
>