public void setRepositories(Collection<RepositoryDefinition> repositories) { for (RepositoryDefinition def : repositories) { this.addRepository(def); } }
/** * Load repository mappings and params using repositories.xml. */ public RepositoryMappingDefinition read(InputStream stream) throws JDOMException, IOException { SAXBuilder builder = new SAXBuilder(); Document document = builder.build(stream); Element root = document.getRootElement(); RepositoryMappingDefinition definition = new RepositoryMappingDefinition(); parseRepositoryMapping(root, definition); parseRepositories(root, definition); return definition; }
/** * Parses <Repository>. */ private void parseRepositories(Element root, RepositoryMappingDefinition definition) { @SuppressWarnings("unchecked") List<Element> repositoryElements = root.getChildren(ELEMENT_REPOSITORY); for (Element repositoryElement : repositoryElements) { parseRepository(repositoryElement, definition); } }
/** * Adds workspace mapping, if the physical workspace doesn't exist it is added. */ public void addWorkspaceMapping(WorkspaceMappingDefinition mapping) { if (workspaceMappingDefinitions.containsKey(mapping.getLogicalWorkspaceName())) { return; } addWorkspaceMappingDefinition(mapping); RepositoryDefinition repositoryDefinition = getRepositoryDefinition(mapping.getRepositoryName()); if (!repositoryDefinition.getWorkspaces().contains(mapping.getPhysicalWorkspaceName())) { repositoryDefinition.addWorkspace(mapping.getPhysicalWorkspaceName()); } }
@Override public Session getSession(String logicalWorkspaceName, Credentials credentials) throws RepositoryException { WorkspaceMappingDefinition mapping = this.workspaceMapping.getWorkspaceMapping(logicalWorkspaceName); if (mapping == null) throw new NoSuchWorkspaceException(logicalWorkspaceName); Repository repository = getRepository(mapping.getRepositoryName()); String physicalWorkspaceName = mapping.getPhysicalWorkspaceName(); Session session = repository.login(credentials, physicalWorkspaceName); return wrapSession(session, 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; }
public void addRepository(RepositoryDefinition repositoryDefinition) { this.repositories.put(repositoryDefinition.getName(), repositoryDefinition); }
public void addMapping(String logicalWorkspaceName, String repositoryName, String workspaceName) { workspaceMappings.put(logicalWorkspaceName, new WorkspaceMappingDefinition(logicalWorkspaceName, repositoryName, workspaceName)); }
/** * Checks if all workspaces are present according to the repository mapping, creates any missing workspace. */ private void validateWorkspaces() throws RepositoryException { Iterator<String> configuredNames = repositoryMapping.getWorkspaces().iterator(); while (configuredNames.hasNext()) { registerWorkspace(configuredNames.next()); } }
public void addWorkspaceMappingDefinition(WorkspaceMappingDefinition definition) { workspaceMappingDefinitions.put(definition.getLogicalWorkspaceName(), definition); }
/** * @see info.magnolia.repository.Provider#registerNodeTypes(java.lang.String) */ @Override public void registerNodeTypes(String configuration) throws RepositoryException { if (StringUtils.isEmpty(configuration)) { configuration = this.repositoryMapping.getParameters().get(CUSTOM_NODETYPES); } InputStream xml = getNodeTypeDefinition(configuration); this.registerNodeTypes(xml); }
/** * 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; }
/** * Parses <RepositoryMapping>. */ private void parseRepositoryMapping(Element root, RepositoryMappingDefinition definition) { Element repositoryMappingElement = root.getChild(ELEMENT_REPOSITORYMAPPING); @SuppressWarnings("unchecked") List<Element> children = repositoryMappingElement.getChildren(); for (Element child : children) { definition.addMapping( child.getAttributeValue(ATTRIBUTE_NAME), child.getAttributeValue(ATTRIBUTE_REPOSITORY_NAME), child.getAttributeValue(ATTRIBUTE_WORKSPACE_NAME)); } }
@Override public String getRepositoryNameForWorkspace(String logicalWorkspaceName) { if (hasWorkspace(logicalWorkspaceName)) { return workspaceMapping.getWorkspaceMapping(logicalWorkspaceName).getRepositoryName(); } throw new IllegalStateException("No repository known for logical workspace name " + logicalWorkspaceName); }
public void addRepositoryDefinition(RepositoryDefinition repositoryDefinition) { repositoryDefinitions.put(repositoryDefinition.getName(), repositoryDefinition); }
/** * 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)); }
/** * Get default workspace name. * * @return default name if there are no workspaces defined or there is no workspace present with name "default", otherwise return same name as repository name. */ public static String getDefaultWorkspace(String repositoryId) { RepositoryDefinition mapping = getRepositoryMapping(repositoryId); if (mapping == null) { return DEFAULT_WORKSPACE; } Collection<String> workspaces = mapping.getWorkspaces(); if (workspaces.contains(getMappedWorkspaceName(repositoryId))) { return repositoryId; } return DEFAULT_WORKSPACE; }
/** * 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); }
private void registerNameSpacesAndNodeTypes(String physicalWorkspaceName, RepositoryDefinition repositoryDefinition, Provider provider) { try { Session session = provider.getSystemSession(physicalWorkspaceName); try { provider.registerNamespace(RepositoryConstants.NAMESPACE_PREFIX, RepositoryConstants.NAMESPACE_URI, session.getWorkspace()); provider.registerNodeTypes(); } finally { session.logout(); } } catch (RepositoryException e) { log.error("Failed to initialize workspace {} in repository {}", physicalWorkspaceName, repositoryDefinition.getName(), e); } }
@Override public void shutdown() { log.info("Shutting down JCR"); for (RepositoryDefinition repositoryDefinition : workspaceMapping.getRepositoryDefinitions()) { Provider provider = workspaceMapping.getRepositoryProvider(repositoryDefinition.getName()); provider.shutdownRepository(); } workspaceMapping.clearAll(); }