public void addMapping(String logicalWorkspaceName, String repositoryName, String workspaceName) { workspaceMappings.put(logicalWorkspaceName, new WorkspaceMappingDefinition(logicalWorkspaceName, repositoryName, workspaceName)); }
/** * Adds a workspace mapping. * * @deprecated since 4.5 - use {@link info.magnolia.repository.RepositoryManager#addWorkspaceMapping(info.magnolia.repository.definition.WorkspaceMappingDefinition)} directly. */ public static void addMappedRepositoryName(String logicalWorkspaceName, String repositoryName, String workspaceName) { if (StringUtils.isEmpty(workspaceName)) { workspaceName = logicalWorkspaceName; } Components.getComponent(RepositoryManager.class).addWorkspaceMapping(new WorkspaceMappingDefinition(logicalWorkspaceName, repositoryName, workspaceName)); }
@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 void createWorkspace(String repository, String logicalWorkspaceName) throws RepositoryException { for (WorkspaceMappingDefinition mapping : workspaceMapping.getWorkspaceMappings()) { Session session = getSystemSession(mapping.getLogicalWorkspaceName()); try { if (mapping.getRepositoryName().equals(repository)) { Workspace workspace = session.getWorkspace(); workspace.createWorkspace(logicalWorkspaceName); workspaceMapping.addWorkspaceMapping(new WorkspaceMappingDefinition(logicalWorkspaceName, repository, logicalWorkspaceName)); return; } } finally { session.logout(); } } throw new RepositoryException("Repository [" + repository + "] doesn't exist."); }
@Test public void repositoryIsClusteredAndClusterMaster() throws Exception { // GIVEN MagnoliaConfigurationProperties properties = mock(MagnoliaConfigurationProperties.class); given(properties.getProperty(MagnoliaConfigurationProperties.MAGNOLIA_REPOSITORIES_CLUSTER_CONFIG)).willReturn("website"); given(properties.getBooleanProperty(MagnoliaConfigurationProperties.MAGNOLIA_REPOSITORIES_CLUSTER_MASTER)).willReturn(true); given(properties.hasProperty(MagnoliaConfigurationProperties.MAGNOLIA_REPOSITORIES_CLUSTER_MASTER)).willReturn(true); WorkspaceMapping workspaceMapping = new WorkspaceMapping(); RepositoryDefinition repositoryDefinition = mock(RepositoryDefinition.class); Map<String, String> definitionMap = newHashMap(); definitionMap.put("website", "website"); definitionMap.put("null-mgnlVersion", "mgnlVersion"); given(repositoryDefinition.getName()).willReturn("magnolia"); given(repositoryDefinition.getParameters()).willReturn(definitionMap); given(repositoryDefinition.getWorkspaces()).willReturn(newArrayList("website", "mgnlVersion")); workspaceMapping.addRepositoryDefinition(repositoryDefinition); workspaceMapping.addWorkspaceMapping(new WorkspaceMappingDefinition("magnolia-mgnlVersion", "magnolia", "mgnlVersion")); workspaceMapping.addWorkspaceMapping(new WorkspaceMappingDefinition("website", "magnolia", "website")); DefaultRepositoryManager repositoryManager = new DefaultRepositoryManager(properties, workspaceMapping); ComponentsTestUtil.setInstance(RepositoryManager.class, repositoryManager); // WHEN ModuleManagerImpl moduleManager = new TestModuleManagerImpl(moduleVersionHandlers, context, moduleDefinitionReader, moduleRegistry, repositoryManager); moduleManager.applyDeltas(moduleDefinition, newArrayList(delta), context); // THEN assertThat(websiteSession.hasPendingChanges(), is(false)); }