[ 
https://issues.apache.org/jira/browse/DIRAPI-191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13990276#comment-13990276
 ] 

Emmanuel Lecharny commented on DIRAPI-191:
------------------------------------------

There is no simple way to do that.

All the information is available in at least two places, now the format is 
really dependent on the server you are using.
In apacheDS, you can read the schema from cn=schema, or from ou=schema. They 
offer a different vision of the same thing.

ou=schema is the static schema, containing every elements that the server knows 
about, but which are not necessary activated (ie, you may not use all of them). 
It's ApacheDS specific

cn=schema contains the information about the available elements (ie, those you 
can use)

In any case, if you want to get the list of attributes for a given object 
class, you first have to load the entry associated to this object class and 
read the m-must and m-may attributes (they contain the list of attributes you 
can use in an ObjectClass). But this is far from being enough : you have to do 
so for every ObjectClass the current objectClass extends... And you may have a 
lot !

This is also very specific to ApacheDS.

Another way, which is supposed to be working with any server, would be to load 
the cn=schema entry, which contains the list of *all* the ObjectClasses in the 
objectClasses attribute. You will get the result in a format you will have to 
parse :
( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry' SUP country STRUCTURAL MUST 
co X-SCHEMA 'cosine' )

You can use the ObjectClassDescriptionSchemaParser.parse( String ) method to 
parse such an ObjectClass attribute, it will return an instance of teh 
ObjectClass java class, and you'll again have to read the may and must values 
using the getMayAttributeTypes() and getMustAttributeTypes() methods. Also keep 
in mind to prcess the inherited ObjectClasses using the getSuperiors() method.

Last, not least, the cn=schema entry might not be present at the top level : in 
LDAP, you may have more than one schema...

Good luck :-)

Side Note : it took us months to implement the schema browser in Apache 
Directory Studio, for the exact same reasons plus some other I haven't describe 
here...

> How to get attributes list according to objectClass
> ---------------------------------------------------
>
>                 Key: DIRAPI-191
>                 URL: https://issues.apache.org/jira/browse/DIRAPI-191
>             Project: Directory Client API
>          Issue Type: Question
>    Affects Versions: 1.0.0-M21
>            Reporter: Robert Hou
>
> I want to get attributes list according to specified objectclass, how to 
> achieve this purpose using Apahce Directory API? Could anyone share sample 
> code here?



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to