Introduction

Speculoos was initially created to provide a solution for accessing directories from Java applications without the complexity of the standard JNDI/LDAP API provided in Java SDK (or similar features provided by directory server vendors like Novell). Accessing directory has been standard in Java SDK since version 1.3 and yet it is difficult and tedious to create requests. While there exists solutions that provide this kind of feature, they are either limited in scope (eg. Directory4j) or proprietary (eg. BMC Calendra).

There is to the best of our knowledge no library that provides some sort of Object-to-LDAP mapping service in an easy-to-use and non-intrusive way. There exists however lots of libraries using different techniques for mapping XML data to Java types and the other way round. One can then observe that XML and LDAP servers share a common underlying structure:

  • They are both structured around the notion of a graph or tree of data,
  • They can store data in a very versatile form. Typing may be tight or loose and document structure may or may not be enforced by a formal grammar (DTD, XML-Schema, RelaxNG for XML, Schema for directories),
  • They are used to store and exchange data in technology neutral way for lots of different pieces of information in an information system.

Speculoos then aims at providing a unifying view of various kind of graph and tree-structured data by being a kind of Domain Specific Language for accessing such data independently of the specific backends used for storing it.