protected void registerNodeTypes() throws Exception { if ( !nodeTypeDefinitionProviders.isEmpty() ) { Session session = null; try { session = getAdminSession(); Workspace ws = session.getWorkspace(); NodeTypeManager ntMgr = ws.getNodeTypeManager(); ValueFactory vFac = session.getValueFactory(); List<NodeTypeDefinition> ntds = new ArrayList<NodeTypeDefinition>(); for ( NodeTypeDefinitionProvider nodeTypeDefinitionProvider : nodeTypeDefinitionProviders ) { ntds.add( nodeTypeDefinitionProvider.getNodeTypeDefinition( ntMgr, vFac ) ); } ntMgr.registerNodeTypes( ntds.toArray( new NodeTypeDefinition[ 0 ] ), true ); } catch ( RepositoryException ex ) { LOG.error( "Error registering nodetypes ", ex.getCause() ); } finally { if ( session != null ) { session.logout(); } } } }
private void copyNodeTypes(NodeTypeManager ntMgr, ValueFactory valueFactory) throws RepositoryException { NodeTypeRegistry sourceRegistry = source.getNodeTypeRegistry(); List<NodeTypeTemplate> templates = Lists.newArrayList(); for (Name name : sourceRegistry.getRegisteredNodeTypes()) { String oakName = getOakName(name); // skip built-in nodetypes (OAK-1235) if (!ntMgr.hasNodeType(oakName)) { QNodeTypeDefinition def = sourceRegistry.getNodeTypeDef(name); templates.add(createNodeTypeTemplate(valueFactory, ntMgr, oakName, def)); } } ntMgr.registerNodeTypes(templates.toArray(new NodeTypeTemplate[templates.size()]), true); }
private void copyNodeTypes(NodeTypeManager ntMgr, ValueFactory valueFactory) throws RepositoryException { NodeTypeRegistry sourceRegistry = source.getNodeTypeRegistry(); List<NodeTypeTemplate> templates = Lists.newArrayList(); for (Name name : sourceRegistry.getRegisteredNodeTypes()) { String oakName = getOakName(name); // skip built-in nodetypes (OAK-1235) if (!ntMgr.hasNodeType(oakName)) { QNodeTypeDefinition def = sourceRegistry.getNodeTypeDef(name); templates.add(createNodeTypeTemplate(valueFactory, ntMgr, oakName, def)); } } ntMgr.registerNodeTypes(templates.toArray(new NodeTypeTemplate[templates.size()]), true); }
NodeTypeIterator registered = nodeTypeManager.registerNodeTypes( toRegister.toArray(new NodeTypeTemplate[toRegister.size()]), true); return toArray(registered);
/** * {@inheritDoc} */ public void registerNodeTypes(SessionInfo sessionInfo, QNodeTypeDefinition[] nodeTypeDefinitions, boolean allowUpdate) throws InvalidNodeTypeDefinitionException, NodeTypeExistsException, UnsupportedRepositoryOperationException, RepositoryException { SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo); NodeTypeManager ntMgr = sInfo.getSession().getWorkspace().getNodeTypeManager(); NodeTypeDefinition[] defs = new NodeTypeDefinition[nodeTypeDefinitions.length]; for (int i = 0; i < nodeTypeDefinitions.length; i++) { defs[i] = new NodeTypeDefinitionImpl(nodeTypeDefinitions[i], sInfo.getNamePathResolver(), sInfo.getSession().getValueFactory()) { }; } ntMgr.registerNodeTypes(defs, allowUpdate); }
/** * Register new mixin type if does not exists on workspace * * @param session the JCR session * @param mixin the mixin name to register * @throws RepositoryException */ public static void registerMixinType(Session session, String mixin) throws RepositoryException { NodeTypeManager nodeTypeManager = session.getWorkspace().getNodeTypeManager(); if (!nodeTypeManager.hasNodeType(mixin)) { NodeTypeTemplate nodeTypeTemplate = nodeTypeManager.createNodeTypeTemplate(); nodeTypeTemplate.setMixin(true); nodeTypeTemplate.setName(mixin); NodeTypeDefinition[] nodeTypes = new NodeTypeDefinition[]{nodeTypeTemplate}; nodeTypeManager.registerNodeTypes(nodeTypes, true); } }
/** * {@inheritDoc} */ public void registerNodeTypes(SessionInfo sessionInfo, QNodeTypeDefinition[] nodeTypeDefinitions, boolean allowUpdate) throws InvalidNodeTypeDefinitionException, NodeTypeExistsException, UnsupportedRepositoryOperationException, RepositoryException { SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo); NodeTypeManager ntMgr = sInfo.getSession().getWorkspace().getNodeTypeManager(); NodeTypeDefinition[] defs = new NodeTypeDefinition[nodeTypeDefinitions.length]; for (int i = 0; i < nodeTypeDefinitions.length; i++) { defs[i] = new NodeTypeDefinitionImpl(nodeTypeDefinitions[i], sInfo.getNamePathResolver(), sInfo.getSession().getValueFactory()) { }; } ntMgr.registerNodeTypes(defs, allowUpdate); }
NodeTypeIterator registered = nodeTypeManager.registerNodeTypes( toRegister.toArray(new NodeTypeTemplate[toRegister.size()]), true); return toArray(registered);
NodeTypeIterator registered = nodeTypeManager.registerNodeTypes( toRegister.toArray(new NodeTypeTemplate[toRegister.size()]), true); return toArray(registered);
ntMgr.registerNodeTypes(ntts.toArray(new NodeTypeTemplate[ntts.size()]), allowUpdate); } else if (!unregisterNames.isEmpty()) { ntMgr.unregisterNodeTypes(unregisterNames.toArray(new String[unregisterNames.size()]));
public void testRegisterNodeTypes() throws Exception { NodeTypeDefinition[] defs = new NodeTypeDefinition[5]; for (int i = 0; i < defs.length; i++) { NodeTypeTemplate ntt = ntm.createNodeTypeTemplate(); ntt.setName("mix:foo" + i); ntt.setAbstract(false); ntt.setMixin(true); ntt.setOrderableChildNodes(false); ntt.setQueryable(false); PropertyDefinitionTemplate pdt = ntm.createPropertyDefinitionTemplate(); pdt.setAutoCreated(false); pdt.setName("foo" + i); pdt.setMultiple(false); pdt.setRequiredType(PropertyType.STRING); List pdefs = ntt.getPropertyDefinitionTemplates(); pdefs.add(pdt); defs[i] = ntt; } ntm.registerNodeTypes(defs, true); try { ntm.registerNodeTypes(defs, false); fail("NodeTypeExistsException expected."); } catch (NodeTypeExistsException e) { // success } }
if (nodeTypes.size() > 0) { try { ntMgr.registerNodeTypes(nodeTypes.toArray(new NodeTypeDefinition[nodeTypes.size()]), true); } catch (UnsupportedOperationException e) { log.error("Unable to install node types.");
@Test public void testRegisterNodeTypeWithPrivilege() throws Exception { modify(null, JCR_NODE_TYPE_DEFINITION_MANAGEMENT.toString(), true); try { Workspace testWsp = testSession.getWorkspace(); NodeTypeManager ntm = testWsp.getNodeTypeManager(); NodeTypeTemplate ntd = ntm.createNodeTypeTemplate(); ntd.setName("testRegisterNodeTypeWithPrivilege"); ntd.setMixin(true); ntm.registerNodeType(ntd, true); NodeTypeTemplate[] ntds = new NodeTypeTemplate[2]; ntds[0] = ntd; ntds[1] = ntm.createNodeTypeTemplate(); ntds[1].setName("anotherRegisterNodeTypeWithPrivilege"); ntds[1].setDeclaredSuperTypeNames(new String[] {"nt:file"}); ntm.registerNodeTypes(ntds, true); } finally { modify(null, JCR_NODE_TYPE_DEFINITION_MANAGEMENT.toString(), false); } }
ntt.add(nt); manager.registerNodeTypes(ntt.toArray(new NodeTypeTemplate[0]), false); ntt.add(nt); manager.registerNodeTypes(ntt.toArray(new NodeTypeTemplate[0]), true); manager.registerNodeTypes(ntt.toArray(new NodeTypeTemplate[0]), true);
ntds[1].setDeclaredSuperTypeNames(new String[] {"nt:file"}); try { ntm.registerNodeTypes(ntds, true); fail("Node type registration should be denied."); } catch (AccessDeniedException e) { ntm.registerNodeTypes(ntds, false); fail("Node type registration should be denied."); } catch (AccessDeniedException e) {
ntds[1].setDeclaredSuperTypeNames(new String[] {"nt:file"}); try { ntm.registerNodeTypes(ntds, true); fail("Node type registration should be denied."); } catch (AccessDeniedException e) { ntm.registerNodeTypes(ntds, false); fail("Node type registration should be denied."); } catch (AccessDeniedException e) {
public void testRegisterNodeTypeWithPrivilege() throws Exception { assertDefaultPrivileges(NameConstants.JCR_NODE_TYPE_DEFINITION_MANAGEMENT); assertPermission(Permission.NODE_TYPE_DEF_MNGMT, false); modifyPrivileges(null, NameConstants.JCR_NODE_TYPE_DEFINITION_MANAGEMENT.toString(), true); assertPrivilege(NameConstants.JCR_NODE_TYPE_DEFINITION_MANAGEMENT, true); assertPermission(Permission.NODE_TYPE_DEF_MNGMT, true); try { Workspace testWsp = getTestWorkspace(); NodeTypeManager ntm = testWsp.getNodeTypeManager(); NodeTypeTemplate ntd = ntm.createNodeTypeTemplate(); ntd.setName("testNodeType"); ntd.setMixin(true); ntm.registerNodeType(ntd, true); NodeTypeTemplate[] ntds = new NodeTypeTemplate[2]; ntds[0] = ntd; ntds[1] = ntm.createNodeTypeTemplate(); ntds[1].setName("anotherNodeType"); ntds[1].setDeclaredSuperTypeNames(new String[] {"nt:file"}); ntm.registerNodeTypes(ntds, true); } finally { modifyPrivileges(null, NameConstants.JCR_NODE_TYPE_DEFINITION_MANAGEMENT.toString(), false); } assertPrivilege(NameConstants.JCR_NODE_TYPE_DEFINITION_MANAGEMENT, false); assertPermission(Permission.NODE_TYPE_DEF_MNGMT, false); }