directory-api mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard Sand" <>
Subject RE: API behavior questions
Date Fri, 26 Jul 2013 03:27:51 GMT
Thanks Emmanuel! What is the criteria for isSchemaAware=true? Is it just that a schema (any
schema) was loaded, or that the objectclass of the object has at least one value in one of
the loaded schema?

-----Original Message-----
From: Emmanuel Lécharny [] 
Sent: Thursday, July 25, 2013 7:11 PM
Subject: Re: API behavior questions

Le 7/26/13 12:01 AM, Richard Sand a écrit :
> Hi all - I've a couple of quick questions I wanted to bounce off the list here, being
new to the API, about the API behavior. Just want to make sure I do the proper amount of defensive
> 1) Does ever return null? My understanding is that if there
are no results it'll still return a Cursor, but then will return false. 
it should never return null.
> 2) Is there ever a condition where Entry.containsAttribute would return true, but a call
to Entry.get() returned null?
No. The thwo methdos are working on the same internal data structure (a Map of Attributes)
> 3) Is there ever a condition where Entry.getAttributes() returns null, as opposed to
an empty collection?
When the AttributeType allows you to store null value, then you can get a Value containing
a null value. So, no, you can't get null.
> 4) Ditto for Attribute.iterator() - is it ever null, or will it always exist but sometimes
just be empty?
it's never null. But you can have no attribute to iterate on.
> 5) What needs to happen to have the results of calls to return
entries for which isSchemaAware is true?
The LdapConnection must be schema aware itself.

For that to happen, you just have to call the loadSchema() method :

LdapConnection connection = new LdapNetworkConnection( "localhost", 389 ); connection.loadSchema();

Here, we will load the default schemas.

You can use some specific schema by using :

connection.addSchema( "MySchema.schema" );

where the "MySchema.schema" is a schema in OpenLDAP format.

You can also use a SchemaLoader, but this get a bit too complex atm (and sadly, the associated
method is not yet in the LdapConnection interface)
> 6) I'm assuming that when an entry is schemaAware, calls to isHumanReadable and getAttributeType
will be populated per the schema?

Yes, and all the controls on the Attribute values are done on the client side. This is extremelly
interesting for comparison of values, etc.

Sorry if some of those response are not accurate, I'm giving them from the top of my head.
I hope I'm not too far from what the API is doing.
All those thing would need to be documented...

Emmanuel Lécharny 

View raw message