Package com.cognifide.sling.query.function

Source Code of com.cognifide.sling.query.function.ClosestFunction

package com.cognifide.sling.query.function;

import java.util.Iterator;

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

import com.cognifide.sling.query.api.function.ResourceToIteratorFunction;
import com.cognifide.sling.query.iterator.ArrayIterator;
import com.cognifide.sling.query.iterator.EmptyIterator;
import com.cognifide.sling.query.selector.Selector;

public class ClosestFunction implements ResourceToIteratorFunction {

  private final Selector selector;

  public ClosestFunction(Selector selector) {
    this.selector = selector;
  }

  @Override
  public Iterator<Resource> apply(Resource resource) {
    Resource current = resource;
    while (current != null) {
      Iterator<Resource> iterator = new ArrayIterator(current);
      iterator = selector.apply(iterator);
      if (iterator.hasNext()) {
        return iterator;
      }
      current = current.getParent();
    }
    return EmptyIterator.INSTANCE;
  }
}
TOP

Related Classes of com.cognifide.sling.query.function.ClosestFunction

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.