/** * Since version is set "only revert" always return true. */ @Override public boolean isInvalidMaxVersions() { return VersionConfig.getInstance().getMaxVersionAllowed() < 1; }
/** * Initialize bean. */ public void init() { load(); }
protected void preDeleteNode(Node node, Context context, Lock lock) throws RepositoryException { // Due to deprecated #preDeleteNode(Node,Context) method, lock object can be null. if (lock != null) { lock.refresh(); } VersionConfig versionConfig = Components.getComponent(VersionConfig.class); if (versionConfig.isActive()) { version(node, context); } markAsDeleted(node); purgeContent(node); storeDeletionInfo(node, context); // save changes before progressing on sub node - means we can't roll back, but session doesn't grow out of limits node.getSession().save(); Rule rule = new Rule(StringUtils.split(getItemTypes() + "," + NodeTypes.MetaData.NAME + "," + NodeTypes.Resource.NAME, ", ")); rule.reverse(); for (Iterator<Node> iter = new FilteringNodeIterator(node.getNodes(), new RuleBasedNodePredicate(rule)); iter.hasNext(); ) { preDeleteNode(iter.next(), context, lock); } }
versionConfig.init();
versionConfig = new VersionConfig(); definition = new RestoreVersionActionDefinition();
@Test public void testPreDeleteNodeDoesNotVersionIfVersioningIsNotAvailable() throws Exception { // GIVEN when(ctx.get(MarkNodeAsDeletedCommand.DELETED_NODE_PROP_NAME)).thenReturn("rootFolder"); // build a contact tree Node rootFolderNode = MgnlContext.getJCRSession("website").getRootNode().addNode("rootFolder", NodeTypes.Content.NAME); Node subFolderNode = rootFolderNode.addNode("subFolder", NodeTypes.Content.NAME); Node contactInSubFolderNode = subFolderNode.addNode("contactInSubFolder", NodeTypes.Content.NAME); Node contactInRootFolderNode = rootFolderNode.addNode("contactInRootFolder", NodeTypes.Content.NAME); VersionManager versionManager = Components.getComponent(VersionManager.class); VersionConfig versionConfig = mock(VersionConfig.class); when(versionConfig.isActive()).thenReturn(false); ComponentsTestUtil.setInstance(VersionConfig.class, versionConfig); // save the tree rootFolderNode.getSession().save(); // WHEN (call preDeleteNode WhenMarkNodeAsDelete) cmd.execute(ctx); // THEN assertNull(versionManager.getVersionedNode(rootFolderNode)); assertNull(versionManager.getVersionedNode(contactInRootFolderNode)); assertEquals(MarkNodeAsDeletedCommand.DELETED_NODE_TEMPLATE,rootFolderNode.getProperty(NodeTypes.Renderable.TEMPLATE).getString()); assertEquals(MarkNodeAsDeletedCommand.DELETED_NODE_TEMPLATE,contactInRootFolderNode.getProperty(NodeTypes.Renderable.TEMPLATE).getString()); }
/** * Set version history to max version possible. * * @throws RepositoryException if failed to get VersionHistory or fail to remove */ @Override public void setMaxVersionHistory(Node node) throws RepositoryException { VersionHistory history = node.getVersionHistory(); VersionIterator versions = history.getAllVersions(); // size - 2 to skip root version long indexToRemove = (versions.getSize() - 2) - VersionConfig.getInstance().getMaxVersionAllowed(); if (indexToRemove > 0) { // skip root version versions.nextVersion(); // remove the version after rootVersion for (; indexToRemove > 0; indexToRemove--) { final String versionName = versions.nextVersion().getName(); if (!versionName.equals(NodeTypes.Activatable.getLastActivatedVersion(node))) { history.removeVersion(versionName); } } } }
/** * Read config and reload bean. */ public void reload() { load(); }