[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Changing an openLDAP schema programatically



At 03:57 PM 2002-09-16, akpan Zouk wrote:
>Hello all,
>
>I just joined the group. I searched the archives but
>didn't find a 
>solution to my problem. Apologies if it has been
>discussed. Here is the 
>problem:
>
>I have an objectclass thus defined in local.schema
>thus:
> 
>objectclass ( 1.1.1.1.1.1.1.1.1 
>    NAME 'newObjectClass' SUP top STRUCTURAL
>        MUST ( cn )     
>        )
>
>I would like to add attributes to this objectclass,
>but the names of the 
>attributes are known at run-time; i.e. I don't know
>the names of the 
>attributes when I am creating the above objectclass. I
>would there like to 
>change this definition at run time. Does openLDAP
>support this 
>capability?

No, adding attributes to an existing objectclass
would violate the LDAP/X.500 data model.

Instead, you might consider using the
extensibleObject object class which allows
any attribute to be present in entries belonging
to it.


>I tried the following using Novell's Java Library
>connecting to an 
>openLDAP server:
>
>//  add attribute 'userPassword'. Note that 'cn' and 
>// 'userPassword' are already defined in core.schema
>
>String[] requiredAttr = new 
>String[]{"cn","userPassword"};   
>
>LDAPObjectClassSchema newObjclass = new 
>        LDAPObjectClassSchema(
>                 new String[] {"newObjectClass"},
>                 "1.1.1.1.1.1.1.1.1",
>                 new String[]{"top"},
>                 "",
>                 requiredAttr ,
>                 optionalAttr ,
>                 LDAPObjectClassSchema.STRUCTURAL,
>                 false);
>                 
>                 
>try{
>    LDAPSchema schema = new LDAPSchema();
>    schema.modify(newObjclass);
>    schema.saveSchema(ldapConnection);
> } catch (LDAPException e){
>    e.printStackTrace();
> }
>
>
>I got an "unwillingToPerform exception"!!. Any ideas
>why this 
>happens?

Because OpenLDAP doesn't support subschema modification.