repository = engine.getRepository(repositoryName);
} catch (NoSuchRepositoryException e) {
throw new StartException(e);
}
RepositoryConfiguration repositoryConfig = repository.getConfiguration();
Editor editor = repositoryConfig.edit();
EditableDocument providers = editor.getOrCreateDocument(FieldName.INDEX_PROVIDERS);
EditableDocument provider = Schematic.newDocument();
String providerName = providerProperties.getProperty(FieldName.NAME);
for (Object key : providerProperties.keySet()) {
String keyStr = (String)key;
if (FieldName.NAME.equals(keyStr)) continue;
Object value = providerProperties.get(keyStr);
if (value instanceof List<?>) {
for (Object val : (List<?>)value) {
provider.getOrCreateArray(keyStr).addValue(val);
}
} else {
// Just set the value as a field
provider.set(keyStr, value);
}
}
providers.set(providerName, provider);
// Get the changes and validate them ...
Changes changes = editor.getChanges();
Problems validationResults = repositoryConfig.validate(changes);
if (validationResults.hasErrors()) {
String msg = JcrI18n.errorsInRepositoryConfiguration.text(this.repositoryName,
validationResults.errorCount(),
validationResults.toString());