@Override
public void loadRepository(RepositoryDefinition definition) throws RepositoryNotInitializedException, InstantiationException, IllegalAccessException, ClassNotFoundException {
log.info("Loading JCR {}", definition.getName());
Set<String> workspaces = new LinkedHashSet<>(definition.getWorkspaces());
workspaces.addAll(Arrays.asList(RepositoryConstants.SYSTEM, RepositoryConstants.VERSION_STORE));
definition.getWorkspaces().clear();
definition.getWorkspaces().addAll(workspaces);
Class<? extends Provider> providerClass = Classes.getClassFactory().forName(definition.getProvider());
Provider provider = Components.getComponentProvider().newInstance(providerClass);
provider.init(definition);
Repository repository = provider.getUnderlyingRepository();
workspaceMapping.setRepository(definition.getName(), repository);
workspaceMapping.setRepositoryProvider(definition.getName(), provider);
if (definition.isLoadOnStartup()) {
for (String workspaceId : workspaces) {
registerNameSpacesAndNodeTypes(workspaceId, definition, provider);
}
}
}