Package com.cognifide.sling.query.iterator.tree

Source Code of com.cognifide.sling.query.iterator.tree.DfsTreeIterator

package com.cognifide.sling.query.iterator.tree;

import java.util.Deque;
import java.util.Iterator;
import java.util.LinkedList;

import org.apache.sling.api.resource.Resource;

import com.cognifide.sling.query.iterator.AbstractResourceIterator;

public class DfsTreeIterator extends AbstractResourceIterator {

  private final Deque<Iterator<Resource>> queue = new LinkedList<Iterator<Resource>>();

  public DfsTreeIterator(Resource root) {
    queue.add(root.listChildren());
  }

  @Override
  protected Resource getResource() {
    if (queue.isEmpty()) {
      return null;
    }
    if (queue.peekLast().hasNext()) {
      Resource next = queue.peekLast().next();
      queue.add(next.listChildren());
      return next;
    } else {
      queue.pollLast();
      return getResource();
    }
  }
}
TOP

Related Classes of com.cognifide.sling.query.iterator.tree.DfsTreeIterator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.