Return-Path: Delivered-To: apmail-directory-dev-archive@www.apache.org Received: (qmail 37859 invoked from network); 18 Mar 2009 20:38:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 18 Mar 2009 20:38:23 -0000 Received: (qmail 44334 invoked by uid 500); 18 Mar 2009 20:38:23 -0000 Delivered-To: apmail-directory-dev-archive@directory.apache.org Received: (qmail 44295 invoked by uid 500); 18 Mar 2009 20:38:23 -0000 Mailing-List: contact dev-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Apache Directory Developers List" Delivered-To: mailing list dev@directory.apache.org Received: (qmail 44286 invoked by uid 99); 18 Mar 2009 20:38:22 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Mar 2009 13:38:22 -0700 X-ASF-Spam-Status: No, hits=4.6 required=10.0 tests=FH_HELO_EQ_D_D_D_D,HELO_DYNAMIC_IPADDR,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [92.51.130.250] (HELO lvps92-51-130-250.dedicated.hosteurope.de) (92.51.130.250) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Mar 2009 20:38:12 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lvps92-51-130-250.dedicated.hosteurope.de (Postfix) with ESMTP id A791C1174400C for ; Wed, 18 Mar 2009 20:37:51 +0000 (UTC) Message-ID: <49C15B9F.9020609@apache.org> Date: Wed, 18 Mar 2009 21:37:51 +0100 From: Stefan Seelmann User-Agent: Thunderbird 2.0.0.19 (X11/20090105) MIME-Version: 1.0 To: Apache Directory Developers List Subject: Re: ApacheDS ConfigNG References: <49C13760.8040709@nextury.com> In-Reply-To: <49C13760.8040709@nextury.com> X-Enigmail-Version: 0.95.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Hi, if we go the CiDIT way and we need some mapping between LDAP entries and Java beans we should consider to use DataNucleus. DataNucleus is an implementation of JDO and JPA standards, Andy Jefferson already announced it on this list last year. Beside RDBMS it also supports other data stores like LDAP and XML. I worked on the LDAP persistence part recently. A list of mappings that are currently supported for LDAP: - An object is obviously mapped to an entry - Primitives, wrappers of primitives, String, Date, Calendar could be mapped to single-valued attributes - Arrays and Sets of the above types could be mapped to multi-valued attributes (no order and no duplicate values are supported atm) - Relationships between Java objects could be mapped hierarchical, by using DN references or by using attribute references Please see [1] for more information. To go a step further, the same Java beans, mapping configuration and data access layer could be used to access the configuration over the wire. For example it could be used for the configuration UI within Studio. Maybe another advantage - however I'm not sure if possible - could be to use the DataNucleus XML store to map the current configuration file. Kind Regards, Stefan [1] http://www.datanucleus.org/products/accessplatform_1_1/ldap/mapping.html 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 : > org.apache.directory.server.core.interceptor.Interceptor > *partitions Set : > org.apache.directory.server.core.partition.Partition > *testEntries List : > 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> indexedAttributes ) ??? > property( String propertyName, String propertyValue ??? > > > Index : JdbmIndex > ----------------- > attributeId : String > cacheSize : int > numDupLimit : int > wkDirPath : File > > > Interceptor : AuthenticationInterceptor > --------------------------------------- > *authenticators Set : > 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 : > org.apache.directory.server.ldap.ExtendedOperationHandler > *saslQop Set : java.lang.String > *saslRealms( List : java.lang.String > *saslMechanismHandlers( Map : > MechanismHandler + mech-name > *transportProtocols Set : > org.apache.directory.server.protocol.shared.TransportProtocol > > > ReplicationSystem > ----------------- > *replicaPeers Set : > 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. >