directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ole Ersoy <ole.er...@gmail.com>
Subject Re: [Schema] How do I write a new ObjectClass to ApacheDS
Date Thu, 29 Mar 2007 02:07:04 GMT
Ahhh - You are still out there - Lucky Dog!

Thanks for wading through all these "Books" while on vacation!

Man - You hit every nail right on the head, so I'm just going to write 
at the
top of this mail.

I was just about to hit send on another mail, and then I saw you replied 
to this one.

Anyways I'll send the other one too, just in case it helps others 
following the discussion,
but my only question now is

how do I create an ObjectClass on the fly before storing a (Java Class 
instance)?

On the wiki here:
http://cwiki.apache.org/confluence/display/DIRxSRVx11/Schema+Subsystem+Redesign

It says:
The new design will enable dynamic yet persistent updates to schema 
elements within the server.

So how do I do it using a JNDI Context?

I need something like:

ObjectClass objectClass = LDAPFactory.createObjectClass();
objectClass.setName(myJavaObjectInstance.class.getFullyQualifiedName() 
);  //Sets the name of the object class to the fully qualified name of 
the java class

ObjectClassAttribute objectClassNameAttribute = 
LDAPFactory.createObjectClassAttribute();

objectClassNameAttribute.setName("name");
objectClassNameAttribute.setContainer(objectClass);

etc.

then

ctx.storeObjectClass(objectClass);

Does that make any sense?

Thanks again!
- Ole






Alex Karasulu wrote:
> Hi Ole,
>
> On 3/28/07, *Ole Ersoy* <ole.ersoy@gmail.com 
> <mailto:ole.ersoy@gmail.com>> wrote:
>
>     Hey Alex,
>
>     Yes - I think we're getting warmer!
>
>     Here's the thing.  Suppose I want to store an object that has
>     String members
>
>     shoeSize
>     weight
>     height
>     name
>
>     etc.
>
>     I probably have name on some ObjectClass already defined in ApacheDS.
>
>     However I still want to duplicate name on a completely different
>     ObjectClass. 
>
>  
> No problem.  Really it does not matter; you can create a new xyzName 
> attribute.  Sometimes that's not so bad.  Now I see that you want to 
> autogenerate a schema from the Class
> metadata and creating the attributes for your objectClass with 
> namespace qualification might
> be a good idea.
>
>  
>
>     The ObjectClass I want has a 1:1 correspondence with the Java Class I
>     want to store.
>     That way a simple convention can be used to store the object, and no
>     configuration file
>     or index searching is needed to include a preexisting ObjectClass that
>     has the name attribute on it.
>
>  
> Yep I agree (now that I understand your motives more) just create all 
> the LDAP
> metadata you need on the fly to establish the mapping. 
>
>  
>
>     I guess I could create an index with all the LDAP attributeTypes and
>     look to see whether a certain attribute
>     already exists, and use it, but I think it's simpler just to create a
>     brand new ObjectClass.
>
>  
> Nah don't bother.
>
>  
>
>     Which leads me to another question.
>
>     Can ObjectClass names have periods or underscores in them
>
>     For Instance there's inetOrgPerson?
>
>     Could it be
>     inet.org.person?
>
>  
> I think so. 
>
>  
>
>     The reason I ask is because I want to create ObjectClasses on the fly
>     that are namespaced.
>
>  
> Gotchya.
>
> SNIP ...
>
> Hope fishing was a blast.  I'm sure you're really glad to out of the
> Sun, blue clear water,
> and cool breeze environment and  be back in front of a monitor.
>  
> Hey I still have a few more days to go :).  It's not over yet.
>  
> Regards,
> Alex
>
> Alex Karasulu wrote:
> > Hi Ole,
> >
> > Looks like you got some good advice already.  Let me just add one more
> > suggestion
> > while you're looking into creating a schema.  Sometimes you'll find
> > that the
> > attributeTypes and objectClasses you're looking for are already
> > defined in published
> > schemas.
> >
> > For example for users you might want to take a look at something like
> > inetOrgPerson etc.
> >
> > Second I suppose you're thinking of staying bleeding edge by using 1.5
> > rather than using
> > 1.0.  I'd recommend this.  And if so then merely adding the schema
> > description entry for
> > the objectClass in the ou=schema partition in the appropriate place
> > should work.  The schema
> > is dynamic in 1.5 but I guess Emmanuel and Stephan already pointed
> > this out.
> >
> > I will try to back read this thread.  As you can imagine I have a lot
> > to catch up on since
> > I've been on vacation fishing all week :D.  Yeah I don't miss LDAP 
> he he.
> >
> > Regards,
> > Alex
> >
> > On 3/28/07, *Ole Ersoy* <ole.ersoy@gmail.com 
> <mailto:ole.ersoy@gmail.com>
> > <mailto:ole.ersoy@gmail.com <mailto:ole.ersoy@gmail.com>>> wrote:
> >
> >     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
> >
> >
> >
> >
> >
> >
>
>  
>


Mime
View raw message