Hello,

I am working on a use case where I have to dynamically add a new attribute
to an existing object class in Apache DS. I need some help here.

1)Here is some code which defines my object class:--

        Attributes attrs = new BasicAttributes(true);

        attrs.put("NUMERICOID", "1.3.6.1.4.1.18060.0.4.3.3.1");

        attrs.put("NAME", "ship");

        attrs.put("DESC", "An entry which represents a ship");

        attrs.put("SUP", "top");

        attrs.put("STRUCTURAL", "true");



        Attribute must = new BasicAttribute("MUST");

        must.add("cn");

        attrs.put(must);



        Attribute may = new BasicAttribute("MAY");

        may.add("numberOfGuns");

        may.add("numberOfGuns2");

        may.add("description");

        attrs.put(may);



        //add

        schema.createSubcontext("ClassDefinition/ship", attrs);



2) Adding an object of ship object class:

Attributes attributes=new BasicAttributes();

Attribute objectClass=new BasicAttribute("objectClass");

objectClass.add("ship");

attributes.put(objectClass);



Attribute g=new BasicAttribute("numberOfGuns");

Attribute g2=new BasicAttribute("numberOfGuns2");

Attribute cn=new BasicAttribute("cn");





g.add("2");

g2.add("3");

cn.add("four");





attributes.put(g);

attributes.put(cn);

attributes.put(g2);

;



ctx.createSubcontext("cn=four,dc=example,dc=com",attributes);



3) Add a new attribute -- 'mustA' to the object class

        Attributes attrs = new BasicAttributes(true);

        attrs.put("NUMERICOID", "1.3.6.1.4.1.18060.0.4.3.3.1");

        attrs.put("NAME", "ship");

        attrs.put("DESC", "An entry which represents a ship");

        attrs.put("SUP", "top");

        attrs.put("STRUCTURAL", "true");



        Attribute must = new BasicAttribute("MUST");

        must.add("cn");

        must.add("mustA");

        attrs.put(must);



        Attribute may = new BasicAttribute("MAY");

        may.add("numberOfGuns");

        may.add("numberOfGuns2");

        may.add("description");

        attrs.put(may);



        //modify


schema.modifyAttributes("ClassDefinition/ship",DirContext.ADD_ATTRIBUTE
,attrs);



Once the new attribute is added(which means object class is modified), If i
add a new object of that object class type, I can see the newly added
attribute in the newly created object.

My Questions:

1)    What happens to the objects which were created before I added the new
attribute? How can I make the new attribute to show up in the exiting
objects automatically? For example, here will the new attribute "mustA"
automatically show up in object "four"?Or Will I have to manually go and
modify that object to add that new attribute?

2)    Is there a way to add any default value when we add an attribute to
an object class?



Thanks,

Neha

Reply via email to