public void testUnregisterNodeType() throws Exception { try { ntm.unregisterNodeType("unknownnodetype"); fail("NoSuchNodeTypeException expected."); } catch (NoSuchNodeTypeException e) { // success } try { ntm.unregisterNodeType("nt:base"); fail("RepositoryException expected."); } catch (RepositoryException e) { // success } }
@Test public void testUnRegisterNodeType() throws Exception { NodeTypeManager ntm = superuser.getWorkspace().getNodeTypeManager(); NodeTypeTemplate ntd = ntm.createNodeTypeTemplate(); ntd.setName("testUnregisterNodeType"); ntd.setMixin(true); ntm.registerNodeType(ntd, true); Workspace testWsp = testSession.getWorkspace(); try { try { NodeTypeManager testNtm = testWsp.getNodeTypeManager(); testNtm.unregisterNodeType(ntd.getName()); fail("Node type unregistration should be denied."); } catch (AccessDeniedException e) { // success } try { NodeTypeManager testNtm = testWsp.getNodeTypeManager(); testNtm.unregisterNodeTypes(new String[] {ntd.getName()}); fail("Node type unregistration should be denied."); } catch (AccessDeniedException e) { // success } } finally { // NOTE: diff to jr-core where unregisterNt was not supported ntm.unregisterNodeType(ntd.getName()); } } }
public static boolean unRegisterDocumentType( final PluginContext context, final String prefix, final String name ) throws RepositoryException { final Session session = context.createSession(); final Workspace workspace = session.getWorkspace(); final NodeTypeManager manager = workspace.getNodeTypeManager(); try { // NOTE: we need to do this otherwise exception is thrown: // TODO: classloading issue, not possible :( NodeTypeRegistry.disableCheckForReferencesInContentException = true; log.info("NodeTypeRegistry.disableCheckForReferencesInContentException {}", NodeTypeRegistry.disableCheckForReferencesInContentException); manager.unregisterNodeType(prefix + ':' + name); } finally { NodeTypeRegistry.disableCheckForReferencesInContentException = false; GlobalUtils.cleanupSession(session); } return true; }
try { NodeTypeManager testNtm = testWsp.getNodeTypeManager(); testNtm.unregisterNodeType(ntd.getName()); fail("Namespace unregistration should be denied."); } catch (AccessDeniedException e) { ntm.unregisterNodeType(ntd.getName()); } catch (Exception e) {
public static boolean unRegisterDocumentType( final PluginContext context, final String prefix, final String name ) throws RepositoryException { final Session session = context.createSession(); final Workspace workspace = session.getWorkspace(); final NodeTypeManager manager = workspace.getNodeTypeManager(); try { // NOTE: we need to do this otherwise exception is thrown: // TODO: classloading issue, not possible :( NodeTypeRegistry.disableCheckForReferencesInContentException = true; log.info("NodeTypeRegistry.disableCheckForReferencesInContentException {}", NodeTypeRegistry.disableCheckForReferencesInContentException); manager.unregisterNodeType(prefix + ':' + name); } finally { NodeTypeRegistry.disableCheckForReferencesInContentException = false; GlobalUtils.cleanupSession(session); } return true; }
@Override public boolean deleteType(final ID id) { final Session session = getSession(); final JcrExtensibleType.TypeId typeId = (JcrExtensibleType.TypeId) id; try { final Node typeNode = session.getNodeByIdentifier(typeId.getIdValue()); final String typeName = typeNode.getName(); session.getWorkspace().getNodeTypeManager().unregisterNodeType(typeName); session.getRootNode().getNode(ExtensionsConstants.TYPES + "/" + typeName).remove(); return JcrExtensibleEntityProvider.cleanupDeletedType(session, typeName); } catch (ItemNotFoundException | NoSuchNodeTypeException | NullPointerException e) { // KYLO-8: Ignore NPE caused by unregistering a node type return true; } catch (UnsupportedRepositoryOperationException e) { return false; } catch (RepositoryException e) { throw new MetadataRepositoryException("Unable to retrieve extensible type: " + id, e); } }
@Override @Before public void setUp() throws Exception { super.setUp(); final ModuleRegistryImpl moduleRegistry = new ModuleRegistryImpl(); installContext = new InstallContextImpl(moduleRegistry); Session configSession = MgnlContext.getJCRSession(RepositoryConstants.CONFIG); nodeTypeManager = configSession.getWorkspace().getNodeTypeManager(); // register node type mgnl:versionable without lockable mixin NodeTypeDefinition ntd = NodeTypeTemplateUtil.createSimpleNodeType(nodeTypeManager, NodeTypes.Activatable.NAME, Arrays.asList()); NodeTypeRegistry.disableCheckForReferencesInContentException = true; nodeTypeManager.unregisterNodeType(NodeTypes.Area.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Component.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Folder.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Role.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.User.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Group.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Page.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Content.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.ContentNode.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Resource.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Activatable.NAME); nodeTypeManager.registerNodeType(ntd, true); NodeTypeRegistry.disableCheckForReferencesInContentException = false; NodeType activatableNodeType = nodeTypeManager.getNodeType(NodeTypes.Activatable.NAME); assertThat(activatableNodeType.getDeclaredSupertypes(), not(arrayContaining(JcrConstants.MIX_LOCKABLE))); }
public void migrateIfNeeded() throws RepositoryException { if (!ntm.hasNodeType(DEPRECATED_NT_HIPPOSYS_AUTOEXPORT)) { log.debug("No migration needed"); return; } checkDeprecatedTypeNotInUse(DEPRECATED_NT_HIPPOSYS_AUTOEXPORT); migrateDomains(); migrateModuleConfig(); migrateUrlRewriter(); migrateHtmlProcessor(); migrateHtmlProcessorUsage(); if (!dryRun) { ntr.ignoreNextCheckReferencesInContent(); ntm.unregisterNodeType(DEPRECATED_NT_HIPPOSYS_AUTOEXPORT); log.info("Migrated"); } else { log.info("MigrateToV12 dry-run completed."); } }
@Override @Before public void setUp() throws Exception { super.setUp(); final ModuleRegistryImpl moduleRegistry = new ModuleRegistryImpl(); installContext = new InstallContextImpl(moduleRegistry); Session configSession = MgnlContext.getJCRSession(RepositoryConstants.CONFIG); nodeTypeManager = configSession.getWorkspace().getNodeTypeManager(); // register node type mgnl:versionable without lockable mixin NodeTypeDefinition ntd = NodeTypeTemplateUtil.createSimpleNodeType(nodeTypeManager, NodeTypes.Versionable.NAME, Arrays.asList()); NodeTypeRegistry.disableCheckForReferencesInContentException = true; nodeTypeManager.unregisterNodeType(NodeTypes.Role.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.User.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Group.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Page.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Content.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Deleted.NAME); nodeTypeManager.unregisterNodeType(NodeTypes.Versionable.NAME); nodeTypeManager.registerNodeType(ntd, true); NodeTypeRegistry.disableCheckForReferencesInContentException = false; NodeType versionableNodeType = nodeTypeManager.getNodeType(NodeTypes.Versionable.NAME); assertThat(versionableNodeType.getDeclaredSupertypes(), not(arrayContaining(JcrConstants.MIX_LOCKABLE))); }
@Test public void removeNodeType() throws Exception { Session session = getAdminSession(); Node root = session.getRootNode(); ValueFactory vf = session.getValueFactory(); NodeTypeManager manager = session.getWorkspace().getNodeTypeManager(); Node n = root.addNode("q1", "nt:query"); n.setProperty("jcr:statement", vf.createValue("statement")); n.setProperty("jcr:language", vf.createValue("language")); session.save(); try { manager.unregisterNodeType("nt:query"); fail(); } catch (ConstraintViolationException expected) { // this type is referenced in content, so it can't be removed } n.remove(); session.save(); try { manager.unregisterNodeType("nt:query"); // no longer referenced in content, so removal should succeed } catch (ConstraintViolationException unexpected) { fail(); } }
registry.disableCheckForReferencesInContentException = true; log.info("Unregistering [{}] node type.", nodeType); getNodeTypeManager().unregisterNodeType(nt.getName()); registry.disableCheckForReferencesInContentException = false; log.info("Registering [{}] node type.", nodeType);
nodeTypeManager.unregisterNodeType(nodeType.getName()); fail("Should not be able to remove node type"); } catch (RepositoryException e) {
@Override @Before public void setUp() throws Exception { super.setUp(); final ModuleRegistryImpl moduleRegistry = new ModuleRegistryImpl(); installContext = new InstallContextImpl(moduleRegistry); Session configSession = MgnlContext.getJCRSession(RepositoryConstants.CONFIG); nodeTypeManager = configSession.getWorkspace().getNodeTypeManager(); // register node type mgnl:resource without activatable mixin NodeTypeDefinition ntd = NodeTypeTemplateUtil.createSimpleNodeType(nodeTypeManager, NodeTypes.Resource.NAME, Arrays.asList(NodeType.NT_RESOURCE, NodeTypes.LastModified.NAME, NodeTypes.Created.NAME)); NodeTypeRegistry.disableCheckForReferencesInContentException = true; nodeTypeManager.unregisterNodeType(NodeTypes.Resource.NAME); nodeTypeManager.registerNodeType(ntd, true); NodeTypeRegistry.disableCheckForReferencesInContentException = false; // check that we really have nt:resource, mgnl:created and mgnl:lastModified supertypes NodeType nodeTypeMgnlResource = nodeTypeManager.getNodeType(NodeTypes.Resource.NAME); assertNotNull(nodeTypeMgnlResource); assertEquals(3, nodeTypeMgnlResource.getDeclaredSupertypes().length); assertTrue(containsAllSupertypes(nodeTypeMgnlResource, Arrays.asList(JcrConstants.NT_RESOURCE, NodeTypes.Created.NAME, NodeTypes.LastModified.NAME))); }
@Test public void nodeTypeRegistry() throws RepositoryException { NodeTypeManager ntMgr = getAdminSession().getWorkspace().getNodeTypeManager(); assertFalse(ntMgr.hasNodeType("foo")); NodeTypeTemplate ntd = ntMgr.createNodeTypeTemplate(); ntd.setName("foo"); ntMgr.registerNodeType(ntd, false); assertTrue(ntMgr.hasNodeType("foo")); ntMgr.unregisterNodeType("foo"); assertFalse(ntMgr.hasNodeType("foo")); }
ntMgr.unregisterNodeType(nodeType.getName());
ntMgr.unregisterNodeType(test.getName()); supported = true; } catch (UnsupportedRepositoryOperationException e) {
@Test @FixFor( "MODE-2141" ) public void shouldNotAllowUnregisteringUsedNamespaces() throws Exception { String prefix = "admb"; String uri = "http://www.admb.be/modeshape/admb/1.0"; NodeTypeManager nodeTypeManager = session.getWorkspace().getNodeTypeManager(); // First create a namespace for the nodeType which is going to be added registry.registerNamespace(prefix, uri); assertThatNamespaceIsRegistered(prefix, uri); // Start creating a nodeTypeTemplate, keep it basic. NodeTypeTemplate nodeTypeTemplate = nodeTypeManager.createNodeTypeTemplate(); String nodeTypeName = prefix + ":test"; nodeTypeTemplate.setName(nodeTypeName); nodeTypeManager.registerNodeType(nodeTypeTemplate, false); try { registry.unregisterNamespace(prefix); fail("Should not allow the unregistration of a namespace used by a node type"); } catch (NamespaceException e) { //expected } nodeTypeManager.unregisterNodeType(nodeTypeName); registry.unregisterNamespace(prefix); assertThatNamespacePrefixIsNotRegistered(prefix); }
@Test @FixFor( "MODE-2142" ) public void shouldNotAllowChangingThePrefixOfUsedNamespaces() throws Exception { String prefix = "admb"; String uri = "http://www.admb.be/modeshape/admb/1.0"; NodeTypeManager nodeTypeManager = session.getWorkspace().getNodeTypeManager(); // First create a namespace for the nodeType which is going to be added registry.registerNamespace(prefix, uri); assertThatNamespaceIsRegistered(prefix, uri); // Start creating a nodeTypeTemplate, keep it basic. NodeTypeTemplate nodeTypeTemplate = nodeTypeManager.createNodeTypeTemplate(); String nodeTypeName = prefix + ":test"; nodeTypeTemplate.setName(nodeTypeName); nodeTypeManager.registerNodeType(nodeTypeTemplate, false); try { registry.registerNamespace("newPrefix", uri); fail("Should not allow changing the prefix of a namespace used by a node type"); } catch (NamespaceException e) { //expected } nodeTypeManager.unregisterNodeType(nodeTypeName); registry.registerNamespace("newPrefix", uri); assertThatNamespacePrefixIsNotRegistered(prefix); assertThatNamespaceIsRegistered("newPrefix", uri); }