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











Reply via email to