public void deActivateNode(String path) throws ExchangeException, RepositoryException {
    // do not deactivate node datas
    if (this.getTree().getHierarchyManager().isNodeData(path)) {
      return;
    }

    Syndicator syndicator = getDeactivationSyndicator(path);
    syndicator.deActivate(path);
  }
 /**
  * Create the <code>Syndicator</code> to deactivate the specified path.
  *
  * @param path node path to be deactivated
  * @return the <code>Syndicator</code> used to deactivate
  */
 protected Syndicator getDeactivationSyndicator(String path) {
   Rule rule = new Rule();
   Syndicator syndicator = (Syndicator) FactoryUtil.getInstance(Syndicator.class);
   syndicator.init(
       MgnlContext.getUser(),
       this.getRepository(),
       ContentRepository.getDefaultWorkspace(this.getRepository()),
       rule);
   return syndicator;
 }
  /**
   * @param path
   * @param recursive
   */
  public void activateNode(String path, boolean recursive)
      throws ExchangeException, RepositoryException {

    String parentPath = StringUtils.substringBeforeLast(path, "/");
    if (StringUtils.isEmpty(parentPath)) {
      parentPath = "/";
    }

    Syndicator syndicator = getActivationSyndicator(path);
    if (recursive) {
      activateNodeRecursive(syndicator, parentPath, path);
    } else {
      syndicator.activate(parentPath, path);
    }
  }
 /**
  * recursive activation Override this method to provide tree specific node recursion
  *
  * @param syndicator
  * @param parentPath
  * @param path
  */
 public void activateNodeRecursive(Syndicator syndicator, String parentPath, String path)
     throws ExchangeException, RepositoryException {
   syndicator.activate(parentPath, path);
   Iterator children =
       this.getTree().getHierarchyManager().getContent(path).getChildren().iterator();
   while (children.hasNext()) {
     this.activateNodeRecursive(syndicator, path, ((Content) children.next()).getHandle());
   }
 }