public void createNamespace(String prefix, String uri) throws WorkflowException, MappingException, RepositoryException { try { NamespaceRegistry nsreg = session.getWorkspace().getNamespaceRegistry(); nsreg.registerNamespace(prefix, uri); } catch (NamespaceException ex) { log.error(ex.getMessage() + " For: " + prefix + ":" + uri); throw new WorkflowException("Cannot create new namespace", ex); } }
private static TypeState determineState(final Node template) throws RepositoryException { final String prefix = template.getParent().getName(); final NamespaceRegistry nsReg = template.getSession().getWorkspace().getNamespaceRegistry(); final String currentUri = nsReg.getURI(prefix); final Node ntHandle = template.getNode(HippoNodeType.HIPPOSYSEDIT_NODETYPE); final NodeIterator variants = ntHandle.getNodes(HippoNodeType.HIPPOSYSEDIT_NODETYPE); Node current = null; Node draft = null; while (variants.hasNext()) { final Node variant = variants.nextNode(); if (variant.isNodeType(HippoNodeType.NT_REMODEL)) { final String uri = variant.getProperty(HippoNodeType.HIPPO_URI).getString(); if (currentUri.equals(uri)) { current = variant; } } else { draft = variant; } } if (current == null) { return draft != null ? NEW : UNKNOWN; } else { return draft == null ? LIVE : CHANGED; } }
/** * {@inheritDoc} */ public void unregisterNamespace(SessionInfo sessionInfo, String uri) throws NamespaceException, UnsupportedRepositoryOperationException, AccessDeniedException, RepositoryException { Session session = getSessionInfoImpl(sessionInfo).getSession(); NamespaceRegistry nsReg = session.getWorkspace().getNamespaceRegistry(); nsReg.unregisterNamespace(nsReg.getPrefix(uri)); }
@Override public void runTest() throws RepositoryException { for (int i = 0; i < 10000; i++) { for (String prefix : registry.getPrefixes()) { registry.getURI(prefix); } } }
private void copyNamespaces() throws RepositoryException { NamespaceRegistry sourceRegistry = source.getNamespaceRegistry(); NamespaceRegistry targetRegistry = target.getNamespaceRegistry(); logger.info("Copying registered namespaces"); Collection<String> existing = Arrays.asList(targetRegistry.getURIs()); for (String uri : sourceRegistry.getURIs()) { if (!existing.contains(uri)) { // TODO: what if the prefix is already taken? targetRegistry.registerNamespace( sourceRegistry.getPrefix(uri), uri); } } }
/** * @see info.magnolia.repository.Provider#registerNamespace(java.lang.String, java.lang.String, javax.jcr.Workspace) */ @Override public void registerNamespace(String namespacePrefix, String uri, Workspace workspace) throws RepositoryException { try { workspace.getNamespaceRegistry().getURI(namespacePrefix); } catch (NamespaceException e) { log.debug(e.getMessage()); log.info("Registering prefix [{}] with URI {}", namespacePrefix, uri); workspace.getNamespaceRegistry().registerNamespace(namespacePrefix, uri); } }
log.info("Setting up the repository, registering node types etc."); try { Node root = session.getRootNode(); Workspace ws = session.getWorkspace(); ws.getNamespaceRegistry().registerNamespace("drools", RulesRepository.DROOLS_URI); if (!packageAreaNode.hasNode(RulesRepository.GLOBAL_AREA)) { Node globalAreaNode = RulesRepository.addNodeIfNew(packageAreaNode, RulesRepository.GLOBAL_AREA, ModuleItem.MODULE_TYPE_NAME); globalAreaNode.addNode(ModuleItem.ASSET_FOLDER_NAME, "drools:versionableAssetFolder"); globalAreaNode.setProperty(ModuleItem.TITLE_PROPERTY_NAME, RulesRepository.GLOBAL_AREA); globalAreaNode.setProperty(AssetItem.DESCRIPTION_PROPERTY_NAME, "the global area that holds sharable assets"); globalAreaNode.setProperty(AssetItem.FORMAT_PROPERTY_NAME, ModuleItem.MODULE_FORMAT); globalAreaNode.setProperty(ModuleItem.CREATOR_PROPERTY_NAME, session.getUserID()); Calendar lastModified = Calendar.getInstance(); globalAreaNode.setProperty(ModuleItem.LAST_MODIFIED_PROPERTY_NAME, lastModified);
@Test public void sessionRemappedNamespace() throws RepositoryException { NamespaceRegistry nsReg = getAdminSession().getWorkspace().getNamespaceRegistry(); nsReg.registerNamespace("foo", "file:///foo"); getAdminSession().getRootNode().addNode("foo:test"); getAdminSession().save(); Session s = createAdminSession(); s.setNamespacePrefix("bar", "file:///foo"); assertTrue(s.getRootNode().hasNode("bar:test")); Node n = s.getRootNode().getNode("bar:test"); assertEquals("bar:test", n.getName()); s.logout(); getAdminSession().getRootNode().getNode("foo:test").remove(); getAdminSession().save(); nsReg.unregisterNamespace("foo"); }
private void removeEmptyFragments() { try { if (node.hasNode("#")) { @SuppressWarnings("unchecked") final Iterator<Node> nodes = node.getNode("#").getNodes(); nodes.forEachRemaining(n -> { try { .map(uncheck(NodeType::getName)).filter(hasInternalNamespace.negate()) .map(uncheck(type -> getSession().getWorkspace().getNamespaceRegistry().getURI(type.split(":")[0]))) .anyMatch(isManagedNamespace.negate());
@Override protected void setUp() throws Exception { super.setUp(); superuser.getWorkspace().getNamespaceRegistry().registerNamespace("qTest", "http://jackrabbit-oak-2.apache.org"); Node n = testRootNode.addNode("qTest:node").addNode("qTest:node2").addNode("qTest:node3"); n.setProperty("qTest:property", superuser.getValueFactory().createValue("stringValue")); n.setProperty("qTest:booleanProperty", superuser.getValueFactory().createValue(true)); n.setProperty("qTest:nameProperty", superuser.getValueFactory().createValue("qTest:nameValue", PropertyType.NAME)); superuser.save(); session = getHelper().getSuperuserSession(); session.setNamespacePrefix("my", "http://jackrabbit-oak-2.apache.org"); session.setNamespacePrefix("myRep", NamespaceConstants.NAMESPACE_REP); resultPath = testRootNode.getPath() + "/my:node/my:node2/my:node3"; }
/** * @since oak */ @Test public void testRegisterCustomPrivilegesVisibleInContent() throws RepositoryException { Workspace workspace = session.getWorkspace(); workspace.getNamespaceRegistry().registerNamespace("test", "http://www.apache.org/jackrabbit/test"); Map<String, String[]> newCustomPrivs = new HashMap<String, String[]>(); newCustomPrivs.put("new", new String[0]); newCustomPrivs.put("test:new", new String[0]); for (String name : newCustomPrivs.keySet()) { boolean isAbstract = true; String[] aggrNames = newCustomPrivs.get(name); Privilege registered = privilegeManager.registerPrivilege(name, isAbstract, aggrNames); Node privilegeRoot = session.getNode(PrivilegeConstants.PRIVILEGES_PATH); assertTrue(privilegeRoot.hasNode(name)); Node privNode = privilegeRoot.getNode(name); assertTrue(privNode.getProperty(PrivilegeConstants.REP_IS_ABSTRACT).getBoolean()); assertFalse(privNode.hasProperty(PrivilegeConstants.REP_AGGREGATES)); } }
@Test public void registryRemappedNamespace() throws RepositoryException { NamespaceRegistry nsReg = getAdminSession().getWorkspace().getNamespaceRegistry(); nsReg.registerNamespace("foo", "file:///foo"); getAdminSession().getRootNode().addNode("foo:test"); getAdminSession().save(); try { nsReg.registerNamespace("bar", "file:///foo"); fail("Remapping namespace through NamespaceRegistry must not be allowed"); } catch (NamespaceException e) { // expected } finally { getAdminSession().getRootNode().getNode("foo:test").remove(); getAdminSession().save(); nsReg.unregisterNamespace("foo"); } }
@Test @FixFor( "MODE-2142" ) public void shouldAllowChangingNamespacePrefixesInSession() throws Exception { String repositoryConfigFile = "config/repo-config-binaries-fs.json"; final String prefix = "admb"; final String uri = "http://www.admb.be/modeshape/admb/1.0"; final String nodeTypeName = prefix + ":test"; startRunStop(repository -> { Session session = repository.login(); NodeTypeManager nodeTypeManager = session.getWorkspace().getNodeTypeManager(); // First create a namespace for the nodeType which is going to be added session.getWorkspace().getNamespaceRegistry().registerNamespace(prefix, uri); // Start creating a nodeTypeTemplate, keep it basic. NodeTypeTemplate nodeTypeTemplate = nodeTypeManager.createNodeTypeTemplate(); nodeTypeTemplate.setName(nodeTypeName); nodeTypeManager.registerNodeType(nodeTypeTemplate, false); session.getRootNode().addNode("testNode", nodeTypeName); session.save(); Node node = session.getNode("/testNode"); assertEquals(nodeTypeName, node.getPrimaryNodeType().getName()); session.setNamespacePrefix("newPrefix", uri); assertEquals("newPrefix:test", node.getPrimaryNodeType().getName()); }, repositoryConfigFile); startRunStop(repository -> { Session session = repository.login(); Node node = session.getNode("/testNode"); assertEquals(nodeTypeName, node.getPrimaryNodeType().getName()); }, repositoryConfigFile); }
/** * Tries to register a namespace. */ public void testRegisterNamespace() throws RepositoryException { nsp.registerNamespace(namespacePrefix, namespaceUri); assertEquals("Namespace prefix was not registered.", namespacePrefix, nsp.getPrefix(namespaceUri)); assertEquals("Namespace URI was not registered.", namespaceUri, nsp.getURI(namespacePrefix)); Item created; try { created = testRootNode.addNode(namespacePrefix + ":root"); testRootNode.getSession().save(); } catch (RepositoryException ex) { // that didn't work; maybe the repository allows a property here? testRootNode.getSession().refresh(false); created = testRootNode.setProperty(namespacePrefix + ":root", "test"); testRootNode.getSession().save(); } // Need to remove it here, otherwise teardown can't unregister the NS. testRootNode.getSession().getItem(created.getPath()).remove(); testRootNode.getSession().save(); }
Workspace workspace = session.getWorkspace(); NamespaceRegistry namespaceRegistry = workspace.getNamespaceRegistry(); NodeTypeManager nodeTypeManager = workspace.getNodeTypeManager(); namespaceRegistry.registerNamespace(namespaceName, namespaceUri); Node rootNode = session.getRootNode(); Node newNode = rootNode.addNode("testNode"); newNode.addMixin(nodeType.getName()); session.save();
@Before public void setUp() throws Exception { super.setUp(); session = MgnlContext.getJCRSession(WEBSITE); session.getWorkspace().getNamespaceRegistry().registerNamespace("yes", "urn:yes:1.0"); session.getWorkspace().getNamespaceRegistry().registerNamespace("no", "urn:no:1.0"); Node foo = session.getRootNode().addNode("foo", NT_UNSTRUCTURED); foo.setProperty("yes:prop", "yes"); foo.setProperty("no:prop", "no"); }
@Test public void testAddNodeWithExpandedName() throws RepositoryException { Session session = getAdminSession(); session.getWorkspace().getNamespaceRegistry().registerNamespace("foo", "http://foo"); Node node = getNode(TEST_PATH); Node added = node.addNode("{http://foo}new"); assertEquals("foo:new", added.getName()); session.save(); added = session.getNode(TEST_PATH + "/{http://foo}new"); assertEquals("foo:new", added.getName()); }
private void ensureInitialized() throws RepositoryException { try { if (isFirstHcmStartup()) { if (!isNamespaceRegistered(HCM_PREFIX)) { session.getWorkspace().getNamespaceRegistry().registerNamespace(HCM_PREFIX, HCM_NAMESPACE); } if (!session.getWorkspace().getNodeTypeManager().hasNodeType(HIPPO_LOCK)) { try (InputStream is = getClass().getResourceAsStream("/" + HCM_CONFIG_FOLDER + "/hippo.cnd")) { BootstrapUtils.initializeNodetypes(session, is, "hippo.cnd"); } } if (!session.getWorkspace().getNodeTypeManager().hasNodeType(NT_HCM_ROOT)) { try (InputStream is = getClass().getResourceAsStream("/" + HCM_CONFIG_FOLDER + "/hcm.cnd")) { BootstrapUtils.initializeNodetypes(session, is, "hcm.cnd"); } } session.getRootNode().addNode(HCM_ROOT, NT_HCM_ROOT); session.save(); } } catch (RepositoryException | RuntimeException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } }
public EditmodelWorkflowImpl(Session userSession, Session rootSession, Node subject) throws RemoteException, RepositoryException { this.rootSession = rootSession; this.subject = rootSession.getNodeByIdentifier(subject.getIdentifier()); this.prefix = this.subject.getParent().getName(); NamespaceRegistry nsReg = rootSession.getWorkspace().getNamespaceRegistry(); this.uri = nsReg.getURI(prefix); }
for ( final String registeredUri : node.getSession().getWorkspace().getNamespaceRegistry().getURIs() ) { if ( registeredUri.equals( uri ) ) { registered = true; final NamespaceRegistry registry = node.getSession().getWorkspace().getNamespaceRegistry(); final List< String > prefixes = Arrays.asList( registry.getPrefixes() ); registry.registerNamespace( prefix, uri ); node.setProperty( propName, value );