Replace Attribute and Attributes
We will be replacing the use of Attributes and Attribute interfaces inside the server with server specific schema aware representations for entries and their attribute values. These schema aware objects utilize schema information to conduct simple operations like contains() and equals() checks properly. Hence this cleans up several bug ridden regions of the server where these check may or may not be performed correctly.
More information on this initiative is available ServerValue, ServerAttribute and ServerEntry.
While doing this several other changes will be drawn in because of the dependencies impacted by this change. These are noted in other sections of this document.
Participants
Alex Karasulu
Emmanuel Lécharny
Replace NamingEnumeration
The server uses java.naming.NamingEnumeration objects to stream out results as if it was a cursor. Besides causing problems with exception handling and usage it prevents returning ServerEntry objects. This must be replaced with the proper Cursor construct. These changes will tunnel deep into the jdbm implementation of partitions but much code will be cleaned up and made more efficient.
More information on this initiative is available Cursors.
Participants
Alex Karasulu
Emmanuel Lécharny
Replace ModificationItem
We no longer need to use JNDI analogs which are not schema aware and cause issues with simple operations, so it makes sense to get rid of using ModificationItems. These objects should be using ServerValues and ServerAttributes to do their bidding.
Participants
Alex Karasulu
Emmanuel Lécharny
Clean Up LDIF Entry
Makes sense to cleanup the LDIF Entry so that it uses ServerValues when used in the server and ClientValues when used outside of the server.
Participants
Alex Karasulu
Emmanuel Lécharny
Replace SearchControl
Again this analog should go to complete the picture. For the server side there is no reason to be using strings for the values of attributes instead of AttributeTypes themselves.
Participants
Alex Karasulu
Emmanuel Lécharny
Complete JNDI Wrapper Decoupling
Once all these changes are made then the JNDI wrapper can be better decoupled from the JNDI wrapper. Which is what it now becomes once we remove native JNDI support. These server constructs are simply transformed to and from JNDI constructs to rid the server of ambiguities.