@Override public void loadWorkspace(String repositoryId, String physicalWorkspaceName) throws RepositoryException { String logicalWorkspaceName; // fallback to old pattern if repo id is empty if (StringUtils.isNotBlank(repositoryId) && (RepositoryConstants.SYSTEM.equals(physicalWorkspaceName) || RepositoryConstants.VERSION_STORE.equals(physicalWorkspaceName))) { logicalWorkspaceName = repositoryId + "-" + physicalWorkspaceName; } else { logicalWorkspaceName = physicalWorkspaceName; } log.info("Loading workspace {} (logical name {}).", physicalWorkspaceName, logicalWorkspaceName); workspaceMapping.addWorkspaceMapping(new WorkspaceMappingDefinition(logicalWorkspaceName, repositoryId, physicalWorkspaceName)); Provider provider = getRepositoryProvider(repositoryId); provider.registerWorkspace(physicalWorkspaceName); RepositoryDefinition repositoryDefinition = workspaceMapping.getRepositoryDefinition(repositoryId); registerNameSpacesAndNodeTypes(physicalWorkspaceName, repositoryDefinition, provider); }
@Override public Session getSystemSession(String logicalWorkspaceName) throws RepositoryException { WorkspaceMappingDefinition mapping = this.workspaceMapping.getWorkspaceMapping(logicalWorkspaceName); if (mapping == null) { throw new NoSuchWorkspaceException(logicalWorkspaceName); } Provider provider = getRepositoryProvider(mapping.getRepositoryName()); return wrapSession(provider.getSystemSession(mapping.getPhysicalWorkspaceName()), logicalWorkspaceName); }
@Test public void testUnknownRepositoryShouldAlsoYieldMeaningfulExceptionMessageForRepositoryProviders() { assertThat(() -> { defaultRepositoryManager.getRepositoryProvider("dummy"); }, throwsAnException(strictlyInstanceOf(IllegalArgumentException.class) .withMessage("Failed to retrieve repository provider 'dummy'. Your Magnolia instance might not have been initialized properly."))); } }