Return-Path: Delivered-To: apmail-directory-dev-archive@www.apache.org Received: (qmail 82101 invoked from network); 28 Mar 2007 22:03:16 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 28 Mar 2007 22:03:16 -0000 Received: (qmail 67521 invoked by uid 500); 28 Mar 2007 22:03:23 -0000 Delivered-To: apmail-directory-dev-archive@directory.apache.org Received: (qmail 67397 invoked by uid 500); 28 Mar 2007 22:03: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 67386 invoked by uid 99); 28 Mar 2007 22:03:22 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 28 Mar 2007 15:03:22 -0700 X-ASF-Spam-Status: No, hits=1.4 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (herse.apache.org: 212.27.42.35 is neither permitted nor denied by domain of elecharny@gmail.com) Received: from [212.27.42.35] (HELO smtp5-g19.free.fr) (212.27.42.35) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 28 Mar 2007 15:03:14 -0700 Received: from [192.168.0.1] (vol75-3-82-66-216-176.fbx.proxad.net [82.66.216.176]) by smtp5-g19.free.fr (Postfix) with ESMTP id 7AA8E38231 for ; Thu, 29 Mar 2007 00:02:53 +0200 (CEST) Message-ID: <460AE60D.4090103@gmail.com> Date: Thu, 29 Mar 2007 00:02:53 +0200 From: Emmanuel Lecharny User-Agent: Mozilla Thunderbird 1.0.7 (X11/20050923) X-Accept-Language: fr, en MIME-Version: 1.0 To: Apache Directory Developers List Subject: Re: [Schema] How do I write a new ObjectClass to ApacheDS References: <460AC99F.5030600@gmail.com> <460AD11F.6080103@gmail.com> <460ADFD2.1060402@gmail.com> In-Reply-To: <460ADFD2.1060402@gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Virus-Checked: Checked by ClamAV on apache.org Ole Ersoy a �crit : > OH - OK - I think the lights are turning on. > > Suppose I have a > DN: cn=user1 ou=users, ou=system > > I can hang any attribute I want on this DN right? Alas, no. You have clear rules (explained in RFCs) : - you can use attributes which are described as MAYin all the objectClasses for this entry - you *must* declare all the MUST attributes described in all the objectClasses for this entry - the attribute used in the RDN (here, it's cn=user1) *must* be present as an attribute. > > So if I want to store an instance of Java Class User (That has members > [userName:String, userPassword:string] > I could simply add the member values of a User instance as attributes > to the DN, and my object is effectively stored. Sorry, I don't understand what you mean. > > If I want to get an instance of that object later, > the DAS just creates a user instance, and fetches the attributes using > the > DN: cn=user1 ou=users, ou=system > context. ah, maybe you are talking about a O/L mapping (Object/Ldap mapping, Patent N� 5356886, owned by Emmanuel L�charny :) > > In other words I get the attributes assigned to this context and > the ones that have the same name as the User Class members, would be > be assigned used to initialize the state of a User instance? I don't understand ... > > So even thought userName has java type String, > I don't have to create a corresponding > LDAP ObjectClass named User that says that > userName is of LDAP attribute type String....., and then map the java > members > to the members of the User ObjectClass? Sorry, I must be dumb, but I don't understand. What do you want to do exactly ? Emmanuel > > Thanks, > - Ole > > > > Emmanuel Lecharny wrote: > >> Hi Ole, >> >> not sure I understand exactly what you want to do, but first, you >> should read >> http://cwiki.apache.org/confluence/display/DIRxSRVx11/Schema+Subsystem+Redesign >> >> and the children pages, they explain what is the current status of >> the Schema system in ADS 1.5. >> >> Now, you have to know that ObjectClasses and AttributTypes are just >> considered as normal entries by the server, so you can simply use >> BasicAttributes() to store your newly created ObjectClass, wih all >> the meta attributes needed to describe your objectclasses (see the >> xiki pages above, there is an example of conversion for core.schema) >> >> Hope it helps. >> >> Ole Ersoy a �crit : >> >>> Hey Guys, >>> >>> I'm in the middle of designing the DAS and >>> decided that I can probably make it way more efficient >>> if I create an ObjectClass per Java Class that I want to write to >>> ADS. >>> >>> So how do I programmatically create a ObjectClass and store it >>> in ApacheDS? >>> >>> Do we have a description somewhere or is this a standard JNDI thing? >>> >>> Here's a little further elaboration on what I want to do for those >>> interested. >>> >>> Keep in mind this is just an example. The Class User could be any >>> java class used in a model. >>> >>> I have a Java Class >> User >>> >>> The Class User has String members [firstName, lastName, password] >>> >>> So I want to create a Structural ObjectClass in ApacheDS so that >>> I can add it as an attribute to the DN where a User instance will be >>> stored (The java object instance). >>> >>> If I were doing this in a relational database, I would create a >>> table definition instead of a ObjectClass. >>> >>> So I'm looking for something like this: >>> >>> ObjectClass objectClass = LDAPSchemaFactory.createObjectClass(); >>> objectClass.setName("User"); >>> ObjectClassAttribute objectClassAttribute = >>> LDAPSchemaFactory.createObjectClassAttribute(); >>> objectClassAttribute.setName("firstName"); >>> objectClassAttribute.setType(LDAP_STRING_ATTRIBUTE_TYPE); >>> >>> Then I would do something like: >>> >>> ctx.storeObjectClass(objectClass); >>> >>> The objectClass can now be assigned as an attribute to an ADS entry, >>> and if we were to look at all the ObjectClasses in ADS through >>> JXPlorer or LDAP Studio, >>> we would see the User ObjectClass in the list. >>> >>> Does that make sense? >>> >>> Thanks, >>> - Ole >>> >>> >>> >>> >>> >>> >> >> > >