@Override public void loadRepository(RepositoryDefinition definition) throws RepositoryNotInitializedException, InstantiationException, IllegalAccessException, ClassNotFoundException { log.info("Loading JCR {}", definition.getName()); // create also mgnlVersion and mgnlSystem for each repository. 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); } } }
assertEquals("magnolia", magnolia.getName()); assertEquals("provider-class", magnolia.getProvider()); assertTrue(magnolia.isLoadOnStartup()); assertEquals(2, magnolia.getParameters().size()); assertEquals("value1", magnolia.getParameters().get("parameter1")); assertEquals("anotherRepository", anotherRepository.getName()); assertEquals("another-provider-class", anotherRepository.getProvider()); assertFalse(anotherRepository.isLoadOnStartup()); assertEquals(0, anotherRepository.getParameters().size()); assertEquals(1, anotherRepository.getWorkspaces().size()); assertEquals("repositoryWithoutWorkspaces", repositoryWithoutWorkspaces.getName()); assertEquals("third-provider-class", repositoryWithoutWorkspaces.getProvider()); assertFalse(repositoryWithoutWorkspaces.isLoadOnStartup()); assertEquals(0, repositoryWithoutWorkspaces.getParameters().size()); assertEquals(1, repositoryWithoutWorkspaces.getWorkspaces().size());