A couple comments...

1. in your list below there are at least 2 kinds of "type" info for the parameters: known types (int) and objects where the main choice is which class you use to implement an interface (Interceptor). I think these are sort of qualitatively different but that is not clear from your notation. As a sub-comment I don't know how you'd specify the implementation class for a component in DIT but this is probably my own ignorance.

2. Despite the unpleasantness of getting poked by all the pointy brackets in xml it does make it pretty easy to express the tree structure of wired together components in an easy to understand way. It's much less good at showing non-tree graphs (you have to use some kind of reference). I think this is pretty useful information that AFAIK would be completely obscured in a DIT configuration model. On the other hand this wiring info is mostly useful for advanced users that need to assemble a custom server; people using a more or less plain server probably only need to change a few "primitive" parameters.

thanks
david jencks

On Mar 18, 2009, at 11:03 AM, Emmanuel Lecharny wrote:

Ersin ER wrote:
Let's continue discussion on next generation configuration mechanism for
ApacheDS in this thread.


I have listed _all_ the parameters we currently want to manage, in all classes :

DirectoryService
----------------
  accessControlEnabled      : boolean;
  allowAnonymousAccess      : boolean
 +changeLog                 : ChangeLog
  denormalizeOpAttrsEnabled : boolean
  exitVmOnShutdown          : boolean
  id                        : String
 +journal                   : Journal
  maxPDUSize                : int
  passordHidden             : boolean
  replicaId                 : int
 +systemPartition           : Partition
  workingDirectory          : File
*interceptors List<Interceptor> : org.apache.directory.server.core.interceptor.Interceptor *partitions Set<? extends Partition> : org.apache.directory.server.core.partition.Partition *testEntries List<? extends LdifEntry> : org.apache.directory.shared.ldap.ldif.Entry


ChangeLog
---------
  enabled                : boolean
  exposeChangeLog        : boolean
  partitionSuffix        : String
  revisionsContainerName : String
  tagsContainerName      : String
 +changeLogStore         : ChangeLogStore


ChangeLogStore
--------------
No setters...


Journal
-------
  enabled      : boolean
 +journalStore : JournalStore


JournalStore
------------
  fileName         : String
  workingDirectory : String


Partition : JdbmPartition
-------------------------
  cacheSize        : int
  id               : String
  optimizerEnabled : boolean
  suffix           : String
  syncOnWrite      : boolean
 *indexedAttributes Set<Index<?,ServerEntry>> indexedAttributes ) ???
  property( String propertyName, String propertyValue ???


Index : JdbmIndex
-----------------
  attributeId : String
  cacheSize   : int
  numDupLimit : int
  wkDirPath   : File


Interceptor : AuthenticationInterceptor
---------------------------------------
*authenticators Set<Authenticator> : org.apache.directory.server.core.authn.Authenticator


Authenticator
-------------
No setters...


Interceptor:JournalInterceptor
------------------------------
  rotation : int


LdifEntry
---------
No setters...


LdapService
-----------
 +directoryService        : DirectoryService (AbstractProtocolServer)
  enabled                 : boolean (AbstractProtocolServer)
 +tcpTransport            : TcpTransport (AbstractProtocolServer)
 +udpTransport            : UdpTransport (AbstractProtocolServer)
  catelogBased            : boolean (DirectoryBackedService)
  searchBaseDn            : String (DirectoryBackedService)
  allowAnonymousAccess    : boolean
  certificatePassword     : String
  confidentialityRequired : boolean
  enableLdaps             : boolean
  keystoreFile            : String
  maxSizeLimit            : int
  maxTimeLimit            : int
 +replicationSystem       : ReplicationSystem
  saslHost                : String
  saslPrincipal           : String
  serviceId               : String
  serviceName             : String
*extendedOperationHandlers Collection<ExtendedOperationHandler> : org.apache.directory.server.ldap.ExtendedOperationHandler
 *saslQop Set<String> : java.lang.String
 *saslRealms( List<String> : java.lang.String
*saslMechanismHandlers( Map<String, MechanismHandler> : MechanismHandler + mech-name *transportProtocols Set<TransportProtocol> : org.apache.directory.server.protocol.shared.TransportProtocol


ReplicationSystem
-----------------
*replicaPeers Set<ReplicaPeerConfiguration> : org.apache.directory.server.ldap.replication.ReplicaPeerConfiguration


ReplicaPeerConfiguration
------------------------
  setInterval    : long
  setPassword    : String
  setPrincipalDN : String
  setProducer    : String
  setRefreshOnly : boolean


ExtendedOperationHandler
------------------------
No setters...


MechanismHandler : NtlmMechanismHandler
---------------------------------------
 +ntlmProvider     : NtlmProvider
  ntlmProviderFqcn : String


NtlmProvider
------------
No setters...


ChangePasswordServer
--------------------
 +directoryService        : DirectoryService (AbstractProtocolServer)
  enabled                 : boolean (AbstractProtocolServer)
 +tcpTransport            : TcpTransport (AbstractProtocolServer)
 +udpTransport            : UdpTransport (AbstractProtocolServer)
  catelogBased            : boolean (DirectoryBackedService)
  searchBaseDn            : String (DirectoryBackedService)
  allowableClockSkew    : long
  emptyAddressesAllowed : boolean
  policyCategoryCount   : int
  policyPasswordLength  : int
  policyTokenSize       : int
  primaryRealm          : String
  servicePrincipal      : String
 *encryptionTypes EncryptionType[] : EncryptionType


DnsServer
---------
 +directoryService        : DirectoryService (AbstractProtocolServer)
  enabled                 : boolean (AbstractProtocolServer)
 +tcpTransport            : TcpTransport (AbstractProtocolServer)
 +udpTransport            : UdpTransport (AbstractProtocolServer)
  catelogBased            : boolean (DirectoryBackedService)
  searchBaseDn            : String (DirectoryBackedService)


KdcServer
---------
 +directoryService        : DirectoryService (AbstractProtocolServer)
  enabled                 : boolean (AbstractProtocolServer)
 +tcpTransport            : TcpTransport (AbstractProtocolServer)
 +udpTransport            : UdpTransport (AbstractProtocolServer)
  catelogBased            : boolean (DirectoryBackedService)
  searchBaseDn            : String (DirectoryBackedService)
  allowableClockSkew       : long
  bodyChecksumVerified     : boolean
  emptyAddressesAllowed    : boolean
  forwardableAllowed       : boolean
  kdcPrincipal             : String
  maximumRenewableLifetime : long
  maximumTicketLifetime    : long
  paEncTimestampRequired   : boolean
  postdatedAllowed         : boolean
  primaryRealm             : String
  proxiableAllowed         : boolean
  renewableAllowed         : boolean
 *encryptionTypes( EncryptionType[] : EncryptionType


NtpServer
---------
 +directoryService        : DirectoryService (AbstractProtocolServer)
  enabled                 : boolean (AbstractProtocolServer)
 +tcpTransport            : TcpTransport (AbstractProtocolServer)
 +udpTransport            : UdpTransport (AbstractProtocolServer)


TcpTransport
------------
  setAddress   : String (AbstractTransport)
  setBackLog   : int (AbstractTransport)
  setNbThreads : int (AbstractTransport)
  setPort      : int (AbstractTransport)


UdpTransport
------------
  setAddress   : String (AbstractTransport)
  setBackLog   : int (AbstractTransport)
  setNbThreads : int (AbstractTransport)
  setPort      : int (AbstractTransport)


ApacheDS
--------
  allowAnonymousAccess : boolean
  ldifDirectory        : File
  synchPeriodMillis    : long

BTW, we already have some notes on CiDIT:

http://cwiki.apache.org/DIRxSRVx11/configuration-in-dit-cidit.html

This is a good starting point.

--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org



Reply via email to