@Inject public BaseVersionManager(SystemContext systemContext, RepositoryManager repositoryManager, CopyUtil copyUtil) { this.systemContext = systemContext; this.repositoryManager = repositoryManager; this.copyUtil = copyUtil; for (RepositoryDefinition repositoryDefinition : repositoryManager.getRepositoryDefinitions()) { String repositoryId = repositoryDefinition.getName(); String workspaceName = repositoryId + "-" + RepositoryConstants.VERSION_STORE; if (repositoryManager.getWorkspaceMapping(workspaceName) != null) { versionWorkspaces.add(workspaceName); } else { throw new RuntimeException(String.format("Something went wrong, version workspace for repository %s does not exist.", repositoryId)); } } }
/** * Returns the physical workspace name given a logical workspace name. * * @returns the physical name or if the logical name doesn't exist it is returned * @deprecated since 4.5 - use {@link info.magnolia.repository.RepositoryManager#getWorkspaceMapping(String)}. */ public static String getMappedWorkspaceName(String logicalWorkspaceName) { RepositoryManager repositoryManager = Components.getComponent(RepositoryManager.class); WorkspaceMappingDefinition mapping = repositoryManager.getWorkspaceMapping(logicalWorkspaceName); return mapping != null ? mapping.getPhysicalWorkspaceName() : logicalWorkspaceName; }
/** * Returns the name of the repository for a logical workspace name. * * @returns the repository name or if the logical name doesn't exist it is returned * @deprecated since 4.5 - use {@link info.magnolia.repository.RepositoryManager#getWorkspaceMapping(String)}. */ public static String getMappedRepositoryName(String logicalWorkspaceName) { RepositoryManager repositoryManager = Components.getComponent(RepositoryManager.class); WorkspaceMappingDefinition mapping = repositoryManager.getWorkspaceMapping(logicalWorkspaceName); return mapping != null ? mapping.getRepositoryName() : logicalWorkspaceName; }
private void clone(Node node, Node parent) throws RepositoryException { if (node.getDefinition().isAutoCreated()) { Node destination = parent.getNode(node.getName()); this.removeProperties(destination); this.updateProperties(node, destination); } else { final String parentPath = parent.getPath(); final String srcWorkspaceLogicalName = node.getSession().getWorkspace().getName(); final String srcWorkspacePhysicalName = repositoryManager.getWorkspaceMapping(srcWorkspaceLogicalName).getPhysicalWorkspaceName(); final Workspace targetWorkspace = parent.getSession().getWorkspace(); final String srcPath = node.getPath(); final String targetPath = parentPath + (parentPath != null && parentPath.endsWith("/") ? "" : "/") + node.getName(); log.debug("workspace level clone from {}:{} to {}:{}", srcWorkspaceLogicalName, srcPath, targetWorkspace.getName(), parentPath); targetWorkspace.clone(srcWorkspacePhysicalName, srcPath, targetPath, true); } }
/** * Returns the repository definition for a repository or the repository for a given workspace. */ // method copied 1-to-1 from former ContentRepository#getRepositoryMapping // TODO: ditch the terminology mix-up between former repositories and workspaces for good private info.magnolia.repository.definition.RepositoryDefinition getRepositoryMapping(String repositoryOrLogicalWorkspace) { if (!repositoryManager.hasRepository(repositoryOrLogicalWorkspace)) { WorkspaceMappingDefinition mapping = repositoryManager.getWorkspaceMapping(repositoryOrLogicalWorkspace); repositoryOrLogicalWorkspace = mapping != null ? mapping.getRepositoryName() : repositoryOrLogicalWorkspace; } return repositoryManager.getRepositoryDefinition(repositoryOrLogicalWorkspace); }
@Override public void start(Cache cache) { for (Iterator<String> iter = this.getWorkspacesToProcess().iterator(); iter.hasNext(); ) { final String workspace = iter.next(); try { if (repositoryManager.getWorkspaceMapping(workspace) != null) { for (String path : getPaths(cache, workspace)) { final CacheCleaner cacheCleaner = new CacheCleaner(cache, workspace); final EventListener listener = ObservationUtil.instanciateDeferredEventListener(cacheCleaner, 5000, 30000); ObservationUtil.registerChangeListener(workspace, path, listener); registeredListeners.put(cache.getName() + ":" + workspace + ":" + path, listener); } } } catch (Exception e) { log.warn("Failed to register cache flushing observation for workspace '{}' (cache named {}): ", workspace, cache.getName(), e); } } }
@Override public Session createSession(Credentials credentials) { RepositoryManager repositoryManager = Components.getComponent(RepositoryManager.class); WorkspaceMappingDefinition mapping = repositoryManager.getWorkspaceMapping(physicalWorkspaceName); String mappedWorkspaceName = mapping != null ? mapping.getPhysicalWorkspaceName() : physicalWorkspaceName; Session session; try { session = repository.login(credentials, mappedWorkspaceName); } catch (RepositoryException e) { throw new RuntimeRepositoryException(e); } return session; } }
@Before public void setUp() throws Exception { MockContext ctx = new MockContext(); MgnlContext.setInstance(ctx); MockSession session = new MockSession(RepositoryConstants.WEBSITE); ctx.addSession(RepositoryConstants.WEBSITE, session); RepositoryManager repositoryManager = mock(RepositoryManager.class); RepositoryDefinition repositoryDefinition = mock(RepositoryDefinition.class); WorkspaceMappingDefinition workspaceMappingDefinition = mock(WorkspaceMappingDefinition.class); EventBus eventBus = mock(EventBus.class); when(repositoryManager.getRepositoryDefinition(RepositoryConstants.WEBSITE)).thenReturn(repositoryDefinition); when(repositoryManager.getWorkspaceMapping(RepositoryConstants.WEBSITE)).thenReturn(workspaceMappingDefinition); when(repositoryManager.getWorkspaceMapping(RepositoryConstants.USERS)).thenReturn(workspaceMappingDefinition); when(repositoryManager.getWorkspaceNames()).thenReturn(Arrays.asList(RepositoryConstants.WEBSITE, RepositoryConstants.USERS)); PowerMockito.mockStatic(ObservationUtil.class); EventListener eventListener = mock(EventListener.class); when(ObservationUtil.instanciateDeferredEventListener(any(EventListener.class), anyInt(), anyInt())).thenReturn(eventListener); ComponentsTestUtil.setInstance(RepositoryManager.class, repositoryManager); ComponentsTestUtil.setImplementation(TypeMapping.class, TypeMappingImpl.class); policy = new FlushAllListeningPolicy(new CacheModule(null, eventBus), repositoryManager); when(cache1.getName()).thenReturn("cache1"); }
.getWorkspaceMapping(workspaceName) .getRepositoryName()));