Hi,
I'm back to work on the API support for OpenLDAP an other servers. I've
explored the situation a bit. I still do not know what was the original
reason for the relaxed mode (does anyone know?). But it looks like if I
make all the exceptions needed for processing OpenLDAP schema into the
relaxed mode then it is just too much. It breaks the tests and I'm
afraid that it may also break existing code that relies on the API.
It looks like we need more than just relaxed=true/false. I propose the
change from boolean isRelaxed in Registries (and related places) to enum
with three values: STRICT, RELAXED and LAX. Strict and relaxed modes
will be used as they are used today. The new lax mode will be used for
OpenLDAP and other dirty schemas.
As I'm still new to this project I would like someone more senior to
check that this is generally a good idea.
(of course, I'll commit it after the release)
--
Radovan Semancik
Software Architect
evolveum.com
On 03/20/2015 04:07 PM, Radovan Semancik wrote:
https://github.com/Evolveum/directory-shared/commit/b941ff690a41cd03b31679759dcf2fb367b1cb83
I had a closer look at this. Tests are failing after my modification.
The reason seems to be this: (Registries:1344)
public List<Throwable> add( List<Throwable> errors, SchemaObject
schemaObject, boolean check ) throws LdapException
{
// Relax the registries
boolean wasRelaxed = isRelaxed;
setRelaxed();
...
This causes that operations that failed before my modifications are no
longer failing as this explicitly sets relaxed mode.
Is there any particular reason why Registries.add(...) sets relaxed mode?