/** * Gets the names of all logical workspaces. * * @deprecated since 4.5 - use {@link info.magnolia.repository.RepositoryManager#getWorkspaceNames()} directly. */ public static Iterator<String> getAllRepositoryNames() { return Components.getComponent(RepositoryManager.class).getWorkspaceNames().iterator(); }
@SuppressWarnings("unchecked") public Iterator<String> getRepositories() { return Components.getComponent(RepositoryManager.class).getWorkspaceNames().iterator(); }
private List<Task> getLockableMixinAdditionTasksForAllWorkspaces() { List<Task> tasks = Lists.newArrayList(); for (String workspaceName : repositoryManager.getWorkspaceNames()) { tasks.add(new AddLockableMixinToVersionableMixinTask("", "Adding lockable mixing as supertype to versionable mixin for workspace '{" + workspaceName + "}'", workspaceName)); tasks.add(new AddLockableMixinToActivatableMixinTask("", "Adding lockable mixing as supertype to activatable mixin for workspace '{" + workspaceName + "}'", workspaceName)); } return tasks; }
/** * Repositories appears to be empty and the <code>"magnolia.bootstrap.dir</code> directory is configured in * web.xml. Loops over all the repositories and try to load any xml file found in a subdirectory with the same name * of the repository. For example the <code>config</code> repository will be initialized using all the * <code>*.xml</code> files found in <code>"magnolia.bootstrap.dir</code><strong>/config</strong> directory. * * @param bootdirs bootstrap dir */ public static void bootstrapRepositories(String[] bootdirs, BootstrapFilter filter) { log.info("Trying to initialize repositories from: \n {}", StringUtils.join(bootdirs, "\n ")); Collection<String> workspaces = Components.getComponent(RepositoryManager.class).getWorkspaceNames(); for (String workspace : workspaces) { if (!bootstrapRepository(bootdirs, workspace, filter)) { // exception was already logged break; } log.info("Repository [{}] has been initialized.", workspace); } }
private List<String> getWorkspacesToProcess() { if (this.getWorkspaces() != null) { return this.getWorkspaces(); } else { ArrayList<String> workspaces = new ArrayList<String>(repositoryManager.getWorkspaceNames()); workspaces.removeAll(this.getExcludedWorkspaces()); return workspaces; } }
@Override protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException { List<String> versionWorkspaces = repositoryManager.getWorkspaceNames().stream().filter(input -> StringUtils.endsWith(input, RepositoryConstants.VERSION_STORE)).collect(Collectors.toList()); for (String workspace : versionWorkspaces) { String xpath = "//element(*, mgnl:folder)/element(*, mgnl:folder)/element(*, mgnl:folder)/*"; NodeIterator nodeIterator = QueryUtil.search(workspace, xpath, Query.XPATH); while (nodeIterator.hasNext()) { Node node = nodeIterator.nextNode(); if (node.getDepth() == 4 && !StringUtils.equals(node.getName(), node.getIdentifier())) { NodeUtil.renameNode(node, node.getIdentifier()); } } } } }
@Override protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException { RepositoryManager repositoryManager = Components.getComponent(RepositoryManager.class); Collection<String> workspaceNames = repositoryManager.getWorkspaceNames(); for (String workspaceName : workspaceNames) { Session session = installContext.getJCRSession(workspaceName); MetaDataAsMixinConversionHelper conversionHelper = new MetaDataAsMixinConversionHelper(); conversionHelper.setDeleteMetaDataIfEmptied(true); conversionHelper.setPeriodicSaves(true); NodeIterator childRootNodes = session.getRootNode().getNodes(); while (childRootNodes.hasNext()) { Node child = childRootNodes.nextNode(); if (!child.getName().startsWith(NodeTypes.JCR_PREFIX) && !child.getName().startsWith(NodeTypes.REP_PREFIX)) { conversionHelper.convertNodeAndChildren(child); } else { log.debug("Node '{}' are not handled by this task", child.getName()); } } log.debug("Converted MetaData in workspace [{0}]", workspaceName); } } }
/** * Check if repositories has any content, exclude mgnlVersion repository. */ private boolean checkIfInitialized() throws RepositoryException { boolean isClusteredWorkspace = false; boolean isMasterCluster = false; Collection<String> workspaceNames = repositoryManager.getWorkspaceNames(); for (String workspace : workspaceNames) { if (repositoryManager instanceof DefaultRepositoryManager) { isClusteredWorkspace = ((DefaultRepositoryManager) repositoryManager).isClusteredWorkspace(workspace); isMasterCluster = ((DefaultRepositoryManager) repositoryManager).isClusterMaster(); } if (isClusteredWorkspace && !isMasterCluster) { log.info("Skipped clustered workspace '{}' initializing check because it is not cluster master", workspace); continue; } if (!workspace.endsWith(RepositoryConstants.VERSION_STORE) && repositoryManager.checkIfInitialized(workspace)) { return true; } } return false; } }
@Override public boolean check(InstallContext installContext) { try { List<String> workspaces = new ArrayList<>(); for (String workspaceName : repositoryManager.getWorkspaceNames()) { if (workspaceName.contains(RepositoryConstants.VERSION_STORE)) { workspaces.add(workspaceName); } } workspaces.addAll(WORKSPACES); for (String workspaceName : workspaces) { Session session = installContext.getJCRSession(workspaceName); NodeTypeManager ntManager = session.getWorkspace().getNodeTypeManager(); for (String nodetypeName : NODETYPES) { NodeType nodetype = ntManager.getNodeType(nodetypeName); for (NodeDefinition def : nodetype.getChildNodeDefinitions()) { if (def.allowsSameNameSiblings()) { log.error("Child definition of the [{}] node type in workspace [{}] allows same name siblings.", nodetypeName, workspaceName); return false; } } } } } catch (RepositoryException ex) { log.error("Cannot verify that same name siblings are not allowed.", ex); return false; } // everything OK return true; }
@Override protected void operateOnNode(InstallContext installContext, Node node) { Collection<String> includedRepositories = new ArrayList<String>(); Collection<String> includedWorkspaces = Components.getComponent(RepositoryManager.class).getWorkspaceNames(); try { if (node.hasNode(REPOSITORIES)) { Node repositores = node.getNode(REPOSITORIES); PropertyIterator propertyIterator = new FilteringPropertyIterator(repositores.getProperties(), new JCRMgnlPropertyHidingPredicate()); while (propertyIterator.hasNext()) { includedRepositories.add(propertyIterator.nextProperty().getString()); } repositores.remove(); } includedWorkspaces.removeAll(includedRepositories); Node excludedWorkspaces = node.addNode(EXCLUDED_WORKSPACES, NodeTypes.ContentNode.NAME); for (String workspace : includedWorkspaces) { excludedWorkspaces.setProperty(workspace, workspace); } installContext.info(String.format("The configuration '%s' was migrated. All workspaces are now registered by default except those defined under '%s'. " + "The obsolete property '%s' was removed.", node, EXCLUDED_WORKSPACES, REPOSITORIES)); } catch (RepositoryException e) { installContext.error(String.format("Cannot execute task '%s' for node '%s'", this.getDescription(), node), e); } } }
Collection<String> repositoryNames = repositoryManager.getWorkspaceNames(); for (String repoName : repositoryNames) { log.debug("{} repository {}", (persist ? "Saving" : "Rolling back"), repoName);
@Before public void setUp() throws RepositoryException, IOException { repositoryManager = mock(RepositoryManager.class); ComponentsTestUtil.setInstance(RepositoryManager.class, repositoryManager); when(repositoryManager.getWorkspaceNames()).thenReturn(Arrays.asList(RepositoryConstants.WEBSITE, RepositoryConstants.CONFIG)); installContext = mock(InstallContext.class); MockSession websiteSession = new MockSession(RepositoryConstants.WEBSITE); MockSession configSession = new MockSession(RepositoryConstants.CONFIG); when(installContext.getJCRSession(eq(RepositoryConstants.WEBSITE))).thenReturn(websiteSession); when(installContext.getJCRSession(eq(RepositoryConstants.CONFIG))).thenReturn(configSession); }
@Override protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException { List<String> versionWorkspaces = repositoryManager.getWorkspaceNames().stream().filter(input -> StringUtils.endsWith(input, RepositoryConstants.VERSION_STORE)).collect(Collectors.toList()); List<String> workspacesToSearchIn = repositoryManager.getWorkspaceNames().stream().filter(input -> !(StringUtils.endsWith(input, RepositoryConstants.VERSION_STORE) || StringUtils.endsWith(input, RepositoryConstants.SYSTEM))).collect(Collectors.toList());
@Test public void testConvertsAllWorkspaces() throws TaskExecutionException, RepositoryException { ConvertMetaDataUpdateTask task = new ConvertMetaDataUpdateTask("", ""); task.execute(installContext); verify(repositoryManager).getWorkspaceNames(); verify(installContext).getJCRSession(eq(RepositoryConstants.CONFIG)); verify(installContext).getJCRSession(eq(RepositoryConstants.WEBSITE)); } }
@Before public void setUp() throws Exception { RepositoryManager repositoryManager = mock(RepositoryManager.class); when(repositoryManager.getWorkspaceNames()).thenReturn(Arrays.asList( RepositoryConstants.WEBSITE, RepositoryConstants.SYSTEM,
@Override @Before public void setUp() throws Exception { super.setUp(); String versionWorkspaceName = "magnolia-" + RepositoryConstants.VERSION_STORE; Session versionSession = MgnlContext.getJCRSession(versionWorkspaceName); testNode = versionSession.getRootNode().addNode("test"); Node parentNode = NodeUtil.createPath(versionSession.getRootNode(), getSavePath(testNode), NodeTypes.Folder.NAME, false); NodeUtil.moveNode(testNode, parentNode); // we need to save session because we're using query in the task versionSession.save(); RepositoryManager repositoryManager = mock(RepositoryManager.class); when(repositoryManager.getWorkspaceNames()).thenReturn(Collections.singletonList(versionWorkspaceName)); installContext = mock(InstallContext.class); when(installContext.getJCRSession(any())).thenReturn(versionSession); task = new RenameVersionNodesTask(repositoryManager); }
@Test public void testGetCurrentlyInstalled() throws Exception{ //GIVEN RepositoryManager repoManager = mock(RepositoryManager.class); ComponentsTestUtil.setInstance(RepositoryManager.class, repoManager); String mgnlSystem = "magnolia-mgnlSystem"; String mgnlVersion = "magnolia-mgnlVersion"; Collection<String> workspaceNames = new ArrayList<>(); workspaceNames.add(mgnlSystem); workspaceNames.add(mgnlVersion); when(repoManager.getWorkspaceNames()).thenReturn(workspaceNames); when(repoManager.checkIfInitialized(mgnlSystem)).thenReturn(false); when(repoManager.checkIfInitialized(mgnlVersion)).thenReturn(true); WebappVersionHandler handler = new WebappVersionHandler(repoManager); //WHEN Version installedVersion = handler.getCurrentlyInstalled(mock(InstallContext.class)); //THEN //null is returned when no module is installed assertNull(installedVersion); }
@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"); }
Collection<String> workspaceNames = repositoryManager.getWorkspaceNames();