Details
Description
After creating a schema ldif extractor and and schema manager the method "loadAllEnabled()" of the schema manager throws the following exception:
org.apache.directory.shared.ldap.exception.LdapInvalidAttributeValueException: ERR_04131 The value is expected to be a String
The exception only appears when using a servlet container like tomcat 6. The same code works fine on unit tests.
Here the code:
DefaultDirectoryService service = new DefaultDirectoryService();
service.setInstanceLayout(new InstanceLayout(new File(System.getProperty("java.io.tmpdir"), "server-work")));
File instanceDirectory = service.getInstanceLayout().getInstanceDirectory();
File schemaRepository = new File(instanceDirectory, "schema");
// Extract the schema on disk (a brand new one) and load the registries
SchemaLdifExtractor extractor = new DefaultSchemaLdifExtractor(instanceDirectory);
extractor.extractOrCopy(true);
SchemaLoader loader = new LdifSchemaLoader(schemaRepository);
DefaultSchemaManager schemaManager = new DefaultSchemaManager(loader);
service.setSchemaManager(schemaManager);
// We have to load the schema now, otherwise we won't be able
// to initialize the Partitions, as we won't be able to parse
// and normalize their suffix DN
schemaManager.loadAllEnabled();
// Init the LdifPartition
LdifPartition ldifPartition = new LdifPartition(schemaManager);
ldifPartition.setPartitionPath(schemaRepository.toURI());
SchemaPartition schemaPartition = new SchemaPartition(schemaManager);
schemaPartition.setWrappedPartition(ldifPartition);
schemaPartition.setSchemaManager(schemaManager);
service.setSchemaPartition(schemaPartition);