You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by to...@apache.org on 2017/09/25 10:14:16 UTC

svn commit: r1809597 - in /sling/trunk/contrib/extensions/sling-query: ./ src/main/java/org/apache/sling/query/ src/main/java/org/apache/sling/query/api/ src/main/java/org/apache/sling/query/api/internal/ src/main/java/org/apache/sling/query/function/ ...

Author: tomekr
Date: Mon Sep 25 10:14:15 2017
New Revision: 1809597

URL: http://svn.apache.org/viewvc?rev=1809597&view=rev
Log:
SLING-7149: Sling Query support for Java 8

Removed:
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/Function.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/Predicate.java
Modified:
    sling/trunk/contrib/extensions/sling-query/pom.xml
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/AbstractQuery.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/SlingQuery.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/SearchStrategy.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/ElementToIteratorFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/IteratorToIteratorFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/Option.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/TreeProvider.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/package-info.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/AddFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ClosestFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/CompositeFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/DescendantFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/EvenFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FilterFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FindFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/HasFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/IteratorToIteratorFunctionWrapper.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/LastFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NextFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NotFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ParentsFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/PrevFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/SliceFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/UniqueFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/FilteringIterator.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/ParentsIterator.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/SiblingsIterator.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/package-info.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/IterableContainsPredicate.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/ParentPredicate.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/RejectingPredicate.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/SelectorOperator.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePredicate.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePropertyPredicate.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourceTreeProvider.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/JcrOperator.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/FunctionType.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/HierarchyOperator.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/SelectorFunction.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/Selector.java
    sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/SelectorSegment.java
    sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/FilterTest.java

Modified: sling/trunk/contrib/extensions/sling-query/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/pom.xml?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-query/pom.xml Mon Sep 25 10:14:15 2017
@@ -22,13 +22,13 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>26</version>
+        <version>32</version>
         <relativePath/>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>org.apache.sling.query</artifactId>
-    <version>3.0.1-SNAPSHOT</version>
+    <version>4.0.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <name>Apache Sling Query</name>
@@ -40,6 +40,10 @@
         <url>http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query</url>
     </scm>
 
+    <properties>
+        <sling.java.version>8</sling.java.version>
+    </properties>
+
     <build>
         <plugins>
             <plugin>

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/AbstractQuery.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/AbstractQuery.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/AbstractQuery.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/AbstractQuery.java Mon Sep 25 10:14:15 2017
@@ -23,9 +23,11 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 
-import org.apache.sling.query.api.Function;
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.SearchStrategy;
 import org.apache.sling.query.api.internal.IteratorToIteratorFunction;
 import org.apache.sling.query.api.internal.Option;
@@ -55,13 +57,12 @@ import org.apache.sling.query.predicate.
 import org.apache.sling.query.predicate.RejectingPredicate;
 import org.apache.sling.query.selector.SelectorFunction;
 import org.apache.sling.query.util.LazyList;
-
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 @ProviderType
 public abstract class AbstractQuery<T, Q extends AbstractQuery<T, Q>> implements Iterable<T> {
 
-	protected final List<Function<?, ?>> functions = new ArrayList<Function<?, ?>>();
+	protected final List<Function<?, ?>> functions = new ArrayList<>();
 
 	private final List<T> initialCollection;
 
@@ -71,13 +72,13 @@ public abstract class AbstractQuery<T, Q
 
 	AbstractQuery(TreeProvider<T> provider, T[] initialCollection, SearchStrategy strategy) {
 		this.provider = provider;
-		this.initialCollection = new ArrayList<T>(Arrays.asList(initialCollection));
+		this.initialCollection = new ArrayList<>(Arrays.asList(initialCollection));
 		this.searchStrategy = strategy;
 	}
 
 	protected AbstractQuery(AbstractQuery<T, Q> original, SearchStrategy searchStrategy) {
 		this.functions.addAll(original.functions);
-		this.initialCollection = new ArrayList<T>(original.initialCollection);
+		this.initialCollection = new ArrayList<>(original.initialCollection);
 		this.searchStrategy = searchStrategy;
 		this.provider = original.provider;
 	}
@@ -87,20 +88,24 @@ public abstract class AbstractQuery<T, Q
 	 */
 	@Override
 	public Iterator<T> iterator() {
-		IteratorToIteratorFunction<T> f = new CompositeFunction<T>(functions);
-		Iterator<Option<T>> iterator = f.apply(new OptionDecoratingIterator<T>(initialCollection.iterator()));
-		iterator = new EmptyElementFilter<T>(iterator);
-		return new OptionStrippingIterator<T>(iterator);
+		IteratorToIteratorFunction<T> f = new CompositeFunction<>(functions);
+		Iterator<Option<T>> iterator = f.apply(new OptionDecoratingIterator<>(initialCollection.iterator()));
+		iterator = new EmptyElementFilter<>(iterator);
+		return new OptionStrippingIterator<>(iterator);
+	}
+
+	public Stream<T> stream() {
+		return StreamSupport.stream(this.spliterator(), false);
 	}
 
 	/**
 	 * Include resources to the collection.
 	 * 
-	 * @param iterable Resources to include
+	 * @param resources Resources to include
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q add(T... resources) {
-		return function(new AddFunction<T>(Arrays.asList(resources)));
+		return function(new AddFunction<>(Arrays.asList(resources)));
 	}
 
 	/**
@@ -110,7 +115,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q add(Iterable<T> iterable) {
-		return function(new AddFunction<T>(iterable));
+		return function(new AddFunction<>(iterable));
 	}
 
 	/**
@@ -119,7 +124,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return List containing all elements from the collection.
 	 */
 	public List<T> asList() {
-		return new LazyList<T>(iterator());
+		return new LazyList<>(iterator());
 	}
 
 	/**
@@ -128,7 +133,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q children() {
-		return function(new ChildrenFunction<T>(provider));
+		return function(new ChildrenFunction<>(provider));
 	}
 
 	/**
@@ -138,7 +143,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q children(String filter) {
-		return function(new ChildrenFunction<T>(provider), filter);
+		return function(new ChildrenFunction<>(provider), filter);
 	}
 
 	/**
@@ -148,7 +153,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q children(Predicate<T> filter) {
-		return function(new ChildrenFunction<T>(provider), filter);
+		return function(new ChildrenFunction<>(provider), filter);
 	}
 
 	/**
@@ -158,7 +163,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q children(Iterable<T> filter) {
-		return function(new ChildrenFunction<T>(provider), filter);
+		return function(new ChildrenFunction<>(provider), filter);
 	}
 
 	/**
@@ -180,18 +185,18 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q closest(Iterable<T> iterable) {
-		return closest(new IterableContainsPredicate<T>(iterable, provider));
+		return closest(new IterableContainsPredicate<>(iterable, provider));
 	}
 
 	/**
 	 * For each Resource in the collection, return the first element matching the selector testing the
 	 * Resource itself and traversing up its ancestors.
 	 * 
-	 * @param selector Ancestor filter
+	 * @param predicate Ancestor filter
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q closest(Predicate<T> predicate) {
-		return function(new ClosestFunction<T>(predicate, provider));
+		return function(new ClosestFunction<>(predicate, provider));
 	}
 
 	/**
@@ -221,7 +226,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q filter(Predicate<T> predicate) {
-		return function(new FilterFunction<T>(predicate));
+		return function(new FilterFunction<>(predicate));
 	}
 
 	/**
@@ -231,7 +236,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q filter(Iterable<T> iterable) {
-		return function(new FilterFunction<T>(new IterableContainsPredicate<T>(iterable, provider)));
+		return function(new FilterFunction<>(new IterableContainsPredicate<>(iterable, provider)));
 	}
 
 	/**
@@ -242,7 +247,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q find() {
-		return function(new FindFunction<T>(searchStrategy, provider, ""));
+		return function(new FindFunction<>(searchStrategy, provider, ""));
 	}
 
 	/**
@@ -254,7 +259,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q find(String selector) {
-		return function(new FindFunction<T>(searchStrategy, provider, selector), selector);
+		return function(new FindFunction<>(searchStrategy, provider, selector), selector);
 	}
 
 	/**
@@ -266,7 +271,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q find(Predicate<T> predicate) {
-		return function(new FindFunction<T>(searchStrategy, provider, ""), predicate);
+		return function(new FindFunction<>(searchStrategy, provider, ""), predicate);
 	}
 
 	/**
@@ -278,7 +283,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q find(Iterable<T> iterable) {
-		return function(new DescendantFunction<T>(new LazyList<T>(iterable.iterator()), provider));
+		return function(new DescendantFunction<>(new LazyList<>(iterable.iterator()), provider));
 	}
 
 	/**
@@ -297,7 +302,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q has(String selector) {
-		return function(new HasFunction<T>(selector, searchStrategy, provider));
+		return function(new HasFunction<>(selector, searchStrategy, provider));
 	}
 
 	/**
@@ -307,7 +312,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q has(Predicate<T> predicate) {
-		return function(new HasFunction<T>(predicate, searchStrategy, provider));
+		return function(new HasFunction<>(predicate, searchStrategy, provider));
 	}
 
 	/**
@@ -317,7 +322,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q has(Iterable<T> iterable) {
-		return function(new HasFunction<T>(iterable, provider));
+		return function(new HasFunction<>(iterable, provider));
 	}
 
 	/**
@@ -335,7 +340,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q next() {
-		return function(new NextFunction<T>(provider));
+		return function(new NextFunction<>(provider));
 	}
 
 	/**
@@ -346,7 +351,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q next(String selector) {
-		return function(new NextFunction<T>(provider), selector);
+		return function(new NextFunction<>(provider), selector);
 	}
 
 	/**
@@ -357,7 +362,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q next(Predicate<T> predicate) {
-		return function(new NextFunction<T>(provider), predicate);
+		return function(new NextFunction<>(provider), predicate);
 	}
 
 	/**
@@ -368,7 +373,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q next(Iterable<T> iterable) {
-		return function(new NextFunction<T>(provider), iterable);
+		return function(new NextFunction<>(provider), iterable);
 	}
 
 	/**
@@ -377,7 +382,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q nextAll() {
-		return function(new NextFunction<T>(new RejectingPredicate<T>(), provider));
+		return function(new NextFunction<>(new RejectingPredicate<>(), provider));
 	}
 
 	/**
@@ -387,7 +392,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q nextAll(String selector) {
-		return function(new NextFunction<T>(new RejectingPredicate<T>(), provider), selector);
+		return function(new NextFunction<>(new RejectingPredicate<>(), provider), selector);
 	}
 
 	/**
@@ -397,7 +402,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q nextAll(Predicate<T> predicate) {
-		return function(new NextFunction<T>(new RejectingPredicate<T>(), provider), predicate);
+		return function(new NextFunction<>(new RejectingPredicate<>(), provider), predicate);
 	}
 
 	/**
@@ -407,7 +412,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q nextAll(Iterable<T> iterable) {
-		return function(new NextFunction<T>(new RejectingPredicate<T>(), provider), iterable);
+		return function(new NextFunction<>(new RejectingPredicate<>(), provider), iterable);
 	}
 
 	/**
@@ -418,7 +423,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q nextUntil(String until) {
-		return function(new NextFunction<T>(parse(until), provider));
+		return function(new NextFunction<>(parse(until), provider));
 	}
 
 	/**
@@ -429,7 +434,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q nextUntil(Predicate<T> predicate) {
-		return function(new NextFunction<T>(predicate, provider));
+		return function(new NextFunction<>(predicate, provider));
 	}
 
 	/**
@@ -440,7 +445,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q nextUntil(Iterable<T> iterable) {
-		return nextUntil(new IterableContainsPredicate<T>(iterable, provider));
+		return nextUntil(new IterableContainsPredicate<>(iterable, provider));
 	}
 
 	/**
@@ -450,7 +455,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q not(String selector) {
-		return function(new NotFunction<T>(parse(selector)));
+		return function(new NotFunction<>(parse(selector)));
 	}
 
 	/**
@@ -460,7 +465,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q not(Predicate<T> predicate) {
-		return function(new FilterFunction<T>(new RejectingPredicate<T>(predicate)));
+		return function(new FilterFunction<>(new RejectingPredicate<>(predicate)));
 	}
 
 	/**
@@ -470,7 +475,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q not(Iterable<T> iterable) {
-		return not(new IterableContainsPredicate<T>(iterable, provider));
+		return not(new IterableContainsPredicate<>(iterable, provider));
 	}
 
 	/**
@@ -479,7 +484,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q parent() {
-		return function(new ParentFunction<T>(provider));
+		return function(new ParentFunction<>(provider));
 	}
 
 	/**
@@ -488,7 +493,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q parents() {
-		return function(new ParentsFunction<T>(new RejectingPredicate<T>(), provider));
+		return function(new ParentsFunction<>(new RejectingPredicate<>(), provider));
 	}
 
 	/**
@@ -498,7 +503,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q parents(String selector) {
-		return function(new ParentsFunction<T>(new RejectingPredicate<T>(), provider), selector);
+		return function(new ParentsFunction<>(new RejectingPredicate<>(), provider), selector);
 	}
 
 	/**
@@ -508,17 +513,17 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q parents(Predicate<T> predicate) {
-		return function(new ParentsFunction<T>(new RejectingPredicate<T>(), provider), predicate);
+		return function(new ParentsFunction<>(new RejectingPredicate<>(), provider), predicate);
 	}
 
 	/**
 	 * For each element in the collection find its all ancestor, filtered by a selector.
 	 * 
-	 * @param predicate Parents filter
+	 * @param iterable Parents filter
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q parents(Iterable<T> iterable) {
-		return function(new ParentsFunction<T>(new RejectingPredicate<T>(), provider), iterable);
+		return function(new ParentsFunction<>(new RejectingPredicate<>(), provider), iterable);
 	}
 
 	/**
@@ -528,7 +533,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q parentsUntil(String until) {
-		return function(new ParentsFunction<T>(parse(until), provider));
+		return function(new ParentsFunction<>(parse(until), provider));
 	}
 
 	/**
@@ -538,7 +543,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q parentsUntil(Predicate<T> predicate) {
-		return function(new ParentsFunction<T>(predicate, provider));
+		return function(new ParentsFunction<>(predicate, provider));
 	}
 
 	/**
@@ -548,7 +553,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q parentsUntil(Iterable<T> iterable) {
-		return parentsUntil(new IterableContainsPredicate<T>(iterable, provider));
+		return parentsUntil(new IterableContainsPredicate<>(iterable, provider));
 	}
 
 	/**
@@ -557,7 +562,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prev() {
-		return function(new PrevFunction<T>(provider));
+		return function(new PrevFunction<>(provider));
 	}
 
 	/**
@@ -568,7 +573,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prev(String selector) {
-		return function(new PrevFunction<T>(null, provider), selector);
+		return function(new PrevFunction<>(null, provider), selector);
 	}
 
 	/**
@@ -579,7 +584,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prev(Predicate<T> predicate) {
-		return function(new PrevFunction<T>(null, provider), predicate);
+		return function(new PrevFunction<>(null, provider), predicate);
 	}
 
 	/**
@@ -590,7 +595,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prev(Iterable<T> iterable) {
-		return function(new PrevFunction<T>(null, provider), iterable);
+		return function(new PrevFunction<>(null, provider), iterable);
 	}
 
 	/**
@@ -599,7 +604,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prevAll() {
-		return function(new PrevFunction<T>(new RejectingPredicate<T>(), provider));
+		return function(new PrevFunction<>(new RejectingPredicate<>(), provider));
 	}
 
 	/**
@@ -609,7 +614,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prevAll(String selector) {
-		return function(new PrevFunction<T>(new RejectingPredicate<T>(), provider), selector);
+		return function(new PrevFunction<>(new RejectingPredicate<>(), provider), selector);
 	}
 
 	/**
@@ -619,7 +624,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prevAll(Predicate<T> predicate) {
-		return function(new PrevFunction<T>(new RejectingPredicate<T>(), provider), predicate);
+		return function(new PrevFunction<>(new RejectingPredicate<>(), provider), predicate);
 	}
 
 	/**
@@ -629,7 +634,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prevAll(Iterable<T> iterable) {
-		return function(new PrevFunction<T>(new RejectingPredicate<T>(), provider), iterable);
+		return function(new PrevFunction<>(new RejectingPredicate<>(), provider), iterable);
 	}
 
 	/**
@@ -640,7 +645,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prevUntil(String until) {
-		return function(new PrevFunction<T>(parse(until), provider));
+		return function(new PrevFunction<>(parse(until), provider));
 	}
 
 	/**
@@ -651,7 +656,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prevUntil(Predicate<T> predicate) {
-		return function(new PrevFunction<T>(predicate, provider));
+		return function(new PrevFunction<>(predicate, provider));
 	}
 
 	/**
@@ -662,7 +667,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q prevUntil(Iterable<T> iterable) {
-		return prevUntil(new IterableContainsPredicate<T>(iterable, provider));
+		return prevUntil(new IterableContainsPredicate<>(iterable, provider));
 	}
 
 	/**
@@ -691,7 +696,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q siblings(String selector) {
-		return function(new SiblingsFunction<T>(provider), selector);
+		return function(new SiblingsFunction<>(provider), selector);
 	}
 
 	/**
@@ -701,7 +706,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q siblings(Predicate<T> predicate) {
-		return function(new SiblingsFunction<T>(provider), predicate);
+		return function(new SiblingsFunction<>(provider), predicate);
 	}
 
 	/**
@@ -711,7 +716,7 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q siblings(Iterable<T> iterable) {
-		return function(new SiblingsFunction<T>(provider), iterable);
+		return function(new SiblingsFunction<>(provider), iterable);
 	}
 
 	/**
@@ -751,27 +756,27 @@ public abstract class AbstractQuery<T, Q
 	 * @return new SlingQuery object transformed by this operation
 	 */
 	public Q unique() {
-		return function(new UniqueFunction<T>(provider));
+		return function(new UniqueFunction<>(provider));
 	}
 
 	private Q function(Function<?, ?> function, Iterable<T> iterable) {
 		Q newQuery = clone(this, this.searchStrategy);
 		newQuery.functions.add(function);
-		newQuery.functions.add(new FilterFunction<T>(new IterableContainsPredicate<T>(iterable, provider)));
+		newQuery.functions.add(new FilterFunction<>(new IterableContainsPredicate<>(iterable, provider)));
 		return newQuery;
 	}
 
 	private Q function(Function<?, ?> function, Predicate<T> predicate) {
 		Q newQuery = clone(this, this.searchStrategy);
 		newQuery.functions.add(function);
-		newQuery.functions.add(new FilterFunction<T>(predicate));
+		newQuery.functions.add(new FilterFunction<>(predicate));
 		return newQuery;
 	}
 
 	private Q function(Function<?, ?> function, String selector) {
 		Q newQuery = clone(this, this.searchStrategy);
 		newQuery.functions.add(function);
-		newQuery.functions.add(new SelectorFunction<T>(selector, provider, searchStrategy));
+		newQuery.functions.add(new SelectorFunction<>(selector, provider, searchStrategy));
 		return newQuery;
 	}
 
@@ -782,7 +787,7 @@ public abstract class AbstractQuery<T, Q
 	}
 
 	private SelectorFunction<T> parse(String selector) {
-		return new SelectorFunction<T>(selector, provider, searchStrategy);
+		return new SelectorFunction<>(selector, provider, searchStrategy);
 	}
 
 	protected abstract Q clone(AbstractQuery<T, Q> original, SearchStrategy strategy);

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/SlingQuery.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/SlingQuery.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/SlingQuery.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/SlingQuery.java Mon Sep 25 10:14:15 2017
@@ -27,8 +27,7 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.query.api.SearchStrategy;
 import org.apache.sling.query.iterator.AdaptToIterator;
 import org.apache.sling.query.resource.ResourceTreeProvider;
-
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * SlingQuery is a Sling resource tree traversal tool inspired by the jQuery.
@@ -65,12 +64,7 @@ public class SlingQuery extends Abstract
 	 * @return new iterable containing succesfully adapted Resources
 	 */
 	public <E> Iterable<E> map(final Class<? extends E> clazz) {
-		return new Iterable<E>() {
-			@Override
-			public Iterator<E> iterator() {
-				return new AdaptToIterator<Resource, E>(SlingQuery.this.iterator(), clazz);
-			}
-		};
+		return () -> new AdaptToIterator<>(SlingQuery.this.iterator(), clazz);
 	}
 
 	@Override

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/SearchStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/SearchStrategy.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/SearchStrategy.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/SearchStrategy.java Mon Sep 25 10:14:15 2017
@@ -19,9 +19,9 @@
 
 package org.apache.sling.query.api;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 @ProviderType
 public enum SearchStrategy {
-	BFS, DFS, QUERY;
+	BFS, DFS, QUERY
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/ElementToIteratorFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/ElementToIteratorFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/ElementToIteratorFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/ElementToIteratorFunction.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,7 @@
 package org.apache.sling.query.api.internal;
 
 import java.util.Iterator;
-
-import org.apache.sling.query.api.Function;
+import java.util.function.Function;
 
 public interface ElementToIteratorFunction<T> extends Function<T, Iterator<T>> {
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/IteratorToIteratorFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/IteratorToIteratorFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/IteratorToIteratorFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/IteratorToIteratorFunction.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,7 @@
 package org.apache.sling.query.api.internal;
 
 import java.util.Iterator;
-
-import org.apache.sling.query.api.Function;
+import java.util.function.Function;
 
 public interface IteratorToIteratorFunction<T> extends Function<Iterator<Option<T>>, Iterator<Option<T>>> {
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/Option.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/Option.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/Option.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/Option.java Mon Sep 25 10:14:15 2017
@@ -33,11 +33,11 @@ public class Option<T> {
 	}
 
 	public static <T> Option<T> of(T element, int argumentId) {
-		return new Option<T>(element, argumentId);
+		return new Option<>(element, argumentId);
 	}
 
 	public static <T> Option<T> empty(int argumentId) {
-		return new Option<T>(null, argumentId);
+		return new Option<>(null, argumentId);
 	}
 
 	public int getArgumentId() {

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/TreeProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/TreeProvider.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/TreeProvider.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/internal/TreeProvider.java Mon Sep 25 10:14:15 2017
@@ -21,12 +21,11 @@ package org.apache.sling.query.api.inter
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.selector.parser.Attribute;
 import org.apache.sling.query.selector.parser.SelectorSegment;
-
-import aQute.bnd.annotation.ConsumerType;
+import org.osgi.annotation.versioning.ConsumerType;
 
 @ConsumerType
 public interface TreeProvider<T> {

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/package-info.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/package-info.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/api/package-info.java Mon Sep 25 10:14:15 2017
@@ -17,8 +17,7 @@
  * under the License.
  */
 
-@Version("3.0.0")
+@Version("4.0.0")
 package org.apache.sling.query.api;
 
-import aQute.bnd.annotation.Version;
-
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/AddFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/AddFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/AddFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/AddFunction.java Mon Sep 25 10:14:15 2017
@@ -37,7 +37,7 @@ public class AddFunction<T> implements I
 	@SuppressWarnings("unchecked")
 	@Override
 	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new MergingIterator<Option<T>>(input, new OptionDecoratingIterator<T>(iterable.iterator()));
+		return new MergingIterator<>(input, new OptionDecoratingIterator<>(iterable.iterator()));
 	}
 
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ClosestFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ClosestFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ClosestFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ClosestFunction.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,8 @@
 package org.apache.sling.query.function;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.ElementToIteratorFunction;
 import org.apache.sling.query.api.internal.TreeProvider;
 import org.apache.sling.query.util.IteratorUtils;
@@ -41,7 +41,7 @@ public class ClosestFunction<T> implemen
 	public Iterator<T> apply(T resource) {
 		T current = resource;
 		while (current != null) {
-			if (predicate.accepts(current)) {
+			if (predicate.test(current)) {
 				return IteratorUtils.singleElementIterator(current);
 			}
 			current = provider.getParent(current);

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/CompositeFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/CompositeFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/CompositeFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/CompositeFunction.java Mon Sep 25 10:14:15 2017
@@ -21,8 +21,8 @@ package org.apache.sling.query.function;
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.function.Function;
 
-import org.apache.sling.query.api.Function;
 import org.apache.sling.query.api.internal.IteratorToIteratorFunction;
 import org.apache.sling.query.api.internal.Option;
 

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/DescendantFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/DescendantFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/DescendantFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/DescendantFunction.java Mon Sep 25 10:14:15 2017
@@ -39,7 +39,7 @@ public class DescendantFunction<T> imple
 
 	@Override
 	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new DescendantsIterator<T>(input, descendants.iterator(), provider);
+		return new DescendantsIterator<>(input, descendants.iterator(), provider);
 	}
 
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/EvenFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/EvenFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/EvenFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/EvenFunction.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,8 @@
 package org.apache.sling.query.function;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.IteratorToIteratorFunction;
 import org.apache.sling.query.api.internal.Option;
 import org.apache.sling.query.iterator.FilteringIterator;
@@ -36,7 +36,7 @@ public class EvenFunction<T> implements
 
 	@Override
 	public Iterator<Option<T>> apply(Iterator<Option<T>> resources) {
-		return new FilteringIterator<T>(resources, new EvenPredicate<T>(even));
+		return new FilteringIterator<>(resources, new EvenPredicate<>(even));
 	}
 
 	private static class EvenPredicate<T> implements Predicate<T> {
@@ -47,7 +47,7 @@ public class EvenFunction<T> implements
 		}
 
 		@Override
-		public boolean accepts(T element) {
+		public boolean test(T element) {
 			boolean oldAccept = accept;
 			accept = !accept;
 			return oldAccept;

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FilterFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FilterFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FilterFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FilterFunction.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,8 @@
 package org.apache.sling.query.function;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.IteratorToIteratorFunction;
 import org.apache.sling.query.api.internal.Option;
 import org.apache.sling.query.iterator.FilteringIterator;
@@ -36,7 +36,7 @@ public class FilterFunction<T> implement
 
 	@Override
 	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new FilteringIterator<T>(input, predicate);
+		return new FilteringIterator<>(input, predicate);
 	}
 
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FindFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FindFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FindFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/FindFunction.java Mon Sep 25 10:14:15 2017
@@ -67,9 +67,9 @@ public class FindFunction<T> implements
 				break;
 			case DFS:
 			default:
-				iterator = new DfsTreeIterator<T>(input, provider);
+				iterator = new DfsTreeIterator<>(input, provider);
 				break;
 		}
-		return new WarningIterator<T>(iterator);
+		return new WarningIterator<>(iterator);
 	}
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/HasFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/HasFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/HasFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/HasFunction.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,8 @@
 package org.apache.sling.query.function;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.SearchStrategy;
 import org.apache.sling.query.api.internal.ElementToIteratorFunction;
 import org.apache.sling.query.api.internal.IteratorToIteratorFunction;
@@ -48,12 +48,12 @@ public class HasFunction<T> implements E
 	}
 
 	public HasFunction(Predicate<T> predicate, SearchStrategy searchStrategy, TreeProvider<T> provider) {
-		this(new FindFunction<T>(searchStrategy, provider, ""), new FilterFunction<T>(predicate));
+		this(new FindFunction<>(searchStrategy, provider, ""), new FilterFunction<T>(predicate));
 	}
 
 	public HasFunction(Iterable<T> iterable, TreeProvider<T> provider) {
-		this.findFunction = new DescendantFunction<T>(iterable, provider);
-		this.filter = new IdentityFunction<T>();
+		this.findFunction = new DescendantFunction<>(iterable, provider);
+		this.filter = new IdentityFunction<>();
 	}
 
 	@Override
@@ -61,7 +61,7 @@ public class HasFunction<T> implements E
 		Iterator<Option<T>> iterator = IteratorUtils.singleElementIterator(Option.of(input, 0));
 		iterator = findFunction.apply(iterator);
 		iterator = filter.apply(iterator);
-		if (new EmptyElementFilter<T>(iterator).hasNext()) {
+		if (new EmptyElementFilter<>(iterator).hasNext()) {
 			return IteratorUtils.singleElementIterator(input);
 		} else {
 			return IteratorUtils.emptyIterator();

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/IteratorToIteratorFunctionWrapper.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/IteratorToIteratorFunctionWrapper.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/IteratorToIteratorFunctionWrapper.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/IteratorToIteratorFunctionWrapper.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,8 @@
 package org.apache.sling.query.function;
 
 import java.util.Iterator;
+import java.util.function.Function;
 
-import org.apache.sling.query.api.Function;
 import org.apache.sling.query.api.internal.ElementToIteratorFunction;
 import org.apache.sling.query.api.internal.IteratorToIteratorFunction;
 import org.apache.sling.query.api.internal.Option;
@@ -49,6 +49,6 @@ public class IteratorToIteratorFunctionW
 
 	private static <T> Iterator<Option<T>> getOptionIterator(ElementToIteratorFunction<T> function,
 			Iterator<Option<T>> parentIterator) {
-		return new ExpandingIterator<T>((ElementToIteratorFunction<T>) function, parentIterator);
+		return new ExpandingIterator<>(function, parentIterator);
 	}
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/LastFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/LastFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/LastFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/LastFunction.java Mon Sep 25 10:14:15 2017
@@ -29,7 +29,7 @@ public class LastFunction<T> implements
 
 	@Override
 	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new LastIterator<T>(input);
+		return new LastIterator<>(input);
 	}
 
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NextFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NextFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NextFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NextFunction.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,8 @@
 package org.apache.sling.query.function;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.ElementToIteratorFunction;
 import org.apache.sling.query.api.internal.TreeProvider;
 import org.apache.sling.query.iterator.SiblingsIterator;
@@ -44,6 +44,6 @@ public class NextFunction<T> implements
 
 	@Override
 	public Iterator<T> apply(T resource) {
-		return new SiblingsIterator<T>(until, resource, Type.NEXT, provider);
+		return new SiblingsIterator<>(until, resource, Type.NEXT, provider);
 	}
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NotFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NotFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NotFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/NotFunction.java Mon Sep 25 10:14:15 2017
@@ -35,7 +35,7 @@ public class NotFunction<T> implements I
 
 	@Override
 	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new ReverseIterator<T>(function, input);
+		return new ReverseIterator<>(function, input);
 	}
 
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ParentsFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ParentsFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ParentsFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/ParentsFunction.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,8 @@
 package org.apache.sling.query.function;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.ElementToIteratorFunction;
 import org.apache.sling.query.api.internal.TreeProvider;
 import org.apache.sling.query.iterator.ParentsIterator;
@@ -39,7 +39,7 @@ public class ParentsFunction<T> implemen
 
 	@Override
 	public Iterator<T> apply(T resource) {
-		return new ParentsIterator<T>(until, resource, provider);
+		return new ParentsIterator<>(until, resource, provider);
 	}
 
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/PrevFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/PrevFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/PrevFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/PrevFunction.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,8 @@
 package org.apache.sling.query.function;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.ElementToIteratorFunction;
 import org.apache.sling.query.api.internal.TreeProvider;
 import org.apache.sling.query.iterator.SiblingsIterator;
@@ -44,6 +44,6 @@ public class PrevFunction<T> implements
 
 	@Override
 	public Iterator<T> apply(T resource) {
-		return new SiblingsIterator<T>(until, resource, Type.PREV, provider);
+		return new SiblingsIterator<>(until, resource, Type.PREV, provider);
 	}
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/SliceFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/SliceFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/SliceFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/SliceFunction.java Mon Sep 25 10:14:15 2017
@@ -44,9 +44,9 @@ public class SliceFunction<T> implements
 	@Override
 	public Iterator<Option<T>> apply(Iterator<Option<T>> resources) {
 		if (to == null) {
-			return new SliceIterator<T>(resources, from);
+			return new SliceIterator<>(resources, from);
 		} else {
-			return new SliceIterator<T>(resources, from, to);
+			return new SliceIterator<>(resources, from, to);
 		}
 	}
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/UniqueFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/UniqueFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/UniqueFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/function/UniqueFunction.java Mon Sep 25 10:14:15 2017
@@ -36,7 +36,7 @@ public class UniqueFunction<T> implement
 
 	@Override
 	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new UniqueIterator<T>(input, treeProvider);
+		return new UniqueIterator<>(input, treeProvider);
 	}
 
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/FilteringIterator.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/FilteringIterator.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/FilteringIterator.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/FilteringIterator.java Mon Sep 25 10:14:15 2017
@@ -20,8 +20,8 @@
 package org.apache.sling.query.iterator;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.Option;
 
 public class FilteringIterator<T> extends AbstractIterator<Option<T>> {
@@ -39,7 +39,7 @@ public class FilteringIterator<T> extend
 	protected Option<T> getElement() {
 		while (iterator.hasNext()) {
 			Option<T> element = iterator.next();
-			if (element.isEmpty() || predicate.accepts(element.getElement())) {
+			if (element.isEmpty() || predicate.test(element.getElement())) {
 				return element;
 			} else {
 				return Option.empty(element.getArgumentId());

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/ParentsIterator.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/ParentsIterator.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/ParentsIterator.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/ParentsIterator.java Mon Sep 25 10:14:15 2017
@@ -19,9 +19,10 @@
 
 package org.apache.sling.query.iterator;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.TreeProvider;
 
+import java.util.function.Predicate;
+
 public class ParentsIterator<T> extends AbstractIterator<T> {
 
 	private final Predicate<T> until;
@@ -47,7 +48,7 @@ public class ParentsIterator<T> extends
 			return null;
 		}
 
-		if (until != null && until.accepts(currentResource)) {
+		if (until != null && until.test(currentResource)) {
 			return null;
 		}
 

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/SiblingsIterator.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/SiblingsIterator.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/SiblingsIterator.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/iterator/SiblingsIterator.java Mon Sep 25 10:14:15 2017
@@ -21,8 +21,8 @@ package org.apache.sling.query.iterator;
 
 import java.util.Iterator;
 import java.util.ListIterator;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.TreeProvider;
 import org.apache.sling.query.util.IteratorUtils;
 import org.apache.sling.query.util.LazyList;
@@ -54,7 +54,7 @@ public class SiblingsIterator<T> extends
 		}
 		while (type.canAdvance(siblings)) {
 			T resource = type.advance(siblings);
-			if (until != null && until.accepts(resource)) {
+			if (until != null && until.test(resource)) {
 				finished = true;
 				return null;
 			}

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/package-info.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/package-info.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/package-info.java Mon Sep 25 10:14:15 2017
@@ -17,8 +17,7 @@
  * under the License.
  */
 
-@Version("3.0.0")
+@Version("4.0.0")
 package org.apache.sling.query;
 
-import aQute.bnd.annotation.Version;
-
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/IterableContainsPredicate.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/IterableContainsPredicate.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/IterableContainsPredicate.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/IterableContainsPredicate.java Mon Sep 25 10:14:15 2017
@@ -19,10 +19,11 @@
 
 package org.apache.sling.query.predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.TreeProvider;
 import org.apache.sling.query.util.LazyList;
 
+import java.util.function.Predicate;
+
 public class IterableContainsPredicate<T> implements Predicate<T> {
 
 	private final Iterable<T> iterable;
@@ -35,7 +36,7 @@ public class IterableContainsPredicate<T
 	}
 
 	@Override
-	public boolean accepts(T element) {
+	public boolean test(T element) {
 		for (T t : iterable) {
 			if (provider.sameElement(t, element)) {
 				return true;

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/ParentPredicate.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/ParentPredicate.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/ParentPredicate.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/ParentPredicate.java Mon Sep 25 10:14:15 2017
@@ -19,9 +19,10 @@
 
 package org.apache.sling.query.predicate;
 
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.TreeProvider;
 
+import java.util.function.Predicate;
+
 public class ParentPredicate<T> implements Predicate<T> {
 
 	private final TreeProvider<T> provider;
@@ -31,7 +32,7 @@ public class ParentPredicate<T> implemen
 	}
 
 	@Override
-	public boolean accepts(T resource) {
+	public boolean test(T resource) {
 		return provider.listChildren(resource).hasNext();
 	}
 

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/RejectingPredicate.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/RejectingPredicate.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/RejectingPredicate.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/RejectingPredicate.java Mon Sep 25 10:14:15 2017
@@ -19,19 +19,14 @@
 
 package org.apache.sling.query.predicate;
 
-import org.apache.sling.query.api.Predicate;
+import java.util.function.Predicate;
 
 public class RejectingPredicate<T> implements Predicate<T> {
 
 	private final Predicate<T> predicate;
 
 	public RejectingPredicate() {
-		this(new Predicate<T>() {
-			@Override
-			public boolean accepts(T resource) {
-				return true;
-			}
-		});
+		this(resource -> true);
 	}
 
 	public RejectingPredicate(Predicate<T> predicate) {
@@ -39,7 +34,7 @@ public class RejectingPredicate<T> imple
 	}
 
 	@Override
-	public boolean accepts(T value) {
-		return !predicate.accepts(value);
+	public boolean test(T value) {
+		return !predicate.test(value);
 	}
 }

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/SelectorOperator.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/SelectorOperator.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/SelectorOperator.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/predicate/SelectorOperator.java Mon Sep 25 10:14:15 2017
@@ -65,7 +65,7 @@ public enum SelectorOperator {
 
 	private final String operator;
 
-	private SelectorOperator(String operator) {
+	SelectorOperator(String operator) {
 		this.operator = operator;
 	}
 

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePredicate.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePredicate.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePredicate.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePredicate.java Mon Sep 25 10:14:15 2017
@@ -21,13 +21,13 @@ package org.apache.sling.query.resource;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.function.Predicate;
 
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.sling.api.resource.Resource;
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.resource.jcr.JcrTypeResolver;
 import org.apache.sling.query.selector.parser.Attribute;
 import org.slf4j.Logger;
@@ -49,7 +49,7 @@ public class ResourcePredicate implement
 			JcrTypeResolver typeResolver) {
 		this.resourceType = resourceType;
 		this.resourceName = resourceName;
-		this.subPredicates = new ArrayList<Predicate<Resource>>();
+		this.subPredicates = new ArrayList<>();
 		for (Attribute a : attributes) {
 			subPredicates.add(new ResourcePropertyPredicate(a));
 		}
@@ -57,7 +57,7 @@ public class ResourcePredicate implement
 	}
 
 	@Override
-	public boolean accepts(Resource resource) {
+	public boolean test(Resource resource) {
 		if (StringUtils.isNotBlank(resourceName) && !resource.getName().equals(resourceName)) {
 			return false;
 		}
@@ -65,7 +65,7 @@ public class ResourcePredicate implement
 			return false;
 		}
 		for (Predicate<Resource> predicate : subPredicates) {
-			if (!predicate.accepts(resource)) {
+			if (!predicate.test(resource)) {
 				return false;
 			}
 		}

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePropertyPredicate.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePropertyPredicate.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePropertyPredicate.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourcePropertyPredicate.java Mon Sep 25 10:14:15 2017
@@ -20,10 +20,11 @@
 package org.apache.sling.query.resource;
 
 import org.apache.sling.api.resource.Resource;
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.predicate.SelectorOperator;
 import org.apache.sling.query.selector.parser.Attribute;
 
+import java.util.function.Predicate;
+
 public class ResourcePropertyPredicate implements Predicate<Resource> {
 	private final String key;
 
@@ -38,7 +39,7 @@ public class ResourcePropertyPredicate i
 	}
 
 	@Override
-	public boolean accepts(Resource resource) {
+	public boolean test(Resource resource) {
 		Resource property = resource.getChild(key);
 		if (property == null) {
 			return false;

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourceTreeProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourceTreeProvider.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourceTreeProvider.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/ResourceTreeProvider.java Mon Sep 25 10:14:15 2017
@@ -21,10 +21,10 @@ package org.apache.sling.query.resource;
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.function.Predicate;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.internal.TreeProvider;
 import org.apache.sling.query.resource.jcr.JcrQueryIterator;
 import org.apache.sling.query.resource.jcr.JcrTypeResolver;

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/JcrOperator.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/JcrOperator.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/JcrOperator.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/JcrOperator.java Mon Sep 25 10:14:15 2017
@@ -59,7 +59,7 @@ public enum JcrOperator {
 
 	private final String operator;
 
-	private JcrOperator(String operator) {
+	JcrOperator(String operator) {
 		this.operator = operator;
 	}
 

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java Mon Sep 25 10:14:15 2017
@@ -90,7 +90,7 @@ public class JcrQueryBuilder {
 	}
 
 	private static Formula prepareAlternativeConditions(List<SelectorSegment> segments) {
-		List<Term> list = new ArrayList<Term>();
+		List<Term> list = new ArrayList<>();
 		for (SelectorSegment segment : segments) {
 			Formula conditions = prepareSegmentConditions(segment.getType(), segment.getName(),
 					segment.getAttributes());
@@ -107,7 +107,7 @@ public class JcrQueryBuilder {
 
 	private static Formula prepareSegmentConditions(String resourceType, String resourceName,
 			List<Attribute> attributes) {
-		List<Term> conditions = new ArrayList<Term>();
+		List<Term> conditions = new ArrayList<>();
 		if (StringUtils.isNotBlank(resourceType) && !StringUtils.contains(resourceType, ':')) {
 			conditions.add(new Atomic(String.format("s.[sling:resourceType] = '%s'", resourceType)));
 		}

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/FunctionType.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/FunctionType.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/FunctionType.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/FunctionType.java Mon Sep 25 10:14:15 2017
@@ -19,7 +19,6 @@
 
 package org.apache.sling.query.selector;
 
-import org.apache.sling.query.api.Function;
 import org.apache.sling.query.api.SearchStrategy;
 import org.apache.sling.query.api.internal.TreeProvider;
 import org.apache.sling.query.function.EvenFunction;
@@ -31,11 +30,13 @@ import org.apache.sling.query.function.S
 import org.apache.sling.query.predicate.ParentPredicate;
 import org.apache.sling.query.predicate.RejectingPredicate;
 
+import java.util.function.Function;
+
 public enum FunctionType {
 	EQ {
 		@Override
 		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				TreeProvider<T> providerw) {
+				TreeProvider<T> provider) {
 			int index = Integer.parseInt(argument);
 			return new SliceFunction<T>(index, index);
 		}
@@ -71,7 +72,7 @@ public enum FunctionType {
 	HAS {
 		@Override
 		public <T> Function<?, ?> getFunction(String selector, SearchStrategy strategy,
-				TreeProvider<T> provider) {
+											  TreeProvider<T> provider) {
 			return new HasFunction<T>(selector, strategy, provider);
 		}
 	},

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/HierarchyOperator.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/HierarchyOperator.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/HierarchyOperator.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/HierarchyOperator.java Mon Sep 25 10:14:15 2017
@@ -19,7 +19,6 @@
 
 package org.apache.sling.query.selector;
 
-import org.apache.sling.query.api.Function;
 import org.apache.sling.query.api.SearchStrategy;
 import org.apache.sling.query.api.internal.TreeProvider;
 import org.apache.sling.query.function.ChildrenFunction;
@@ -29,6 +28,8 @@ import org.apache.sling.query.function.N
 import org.apache.sling.query.predicate.RejectingPredicate;
 import org.apache.sling.query.selector.parser.SelectorSegment;
 
+import java.util.function.Function;
+
 public enum HierarchyOperator {
 //@formatter:off
 	CHILD('>') {
@@ -70,7 +71,7 @@ public enum HierarchyOperator {
 	}
 
 	public abstract <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy,
-			TreeProvider<T> provider);
+												   TreeProvider<T> provider);
 
 	public static HierarchyOperator findByCharacter(char c) {
 		for (HierarchyOperator operator : values()) {

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/SelectorFunction.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/SelectorFunction.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/SelectorFunction.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/SelectorFunction.java Mon Sep 25 10:14:15 2017
@@ -22,9 +22,9 @@ package org.apache.sling.query.selector;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
-import org.apache.sling.query.api.Function;
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.SearchStrategy;
 import org.apache.sling.query.api.internal.IteratorToIteratorFunction;
 import org.apache.sling.query.api.internal.Option;
@@ -53,7 +53,7 @@ public class SelectorFunction<T> impleme
 		this.provider = provider;
 		this.strategy = strategy;
 		List<Selector> selectors = SelectorParser.parse(selector);
-		selectorFunctions = new ArrayList<IteratorToIteratorFunction<T>>();
+		selectorFunctions = new ArrayList<>();
 		for (Selector s : selectors) {
 			selectorFunctions.add(createSelectorFunction(s.getSegments()));
 		}
@@ -62,7 +62,7 @@ public class SelectorFunction<T> impleme
 	@Override
 	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
 		LazyList<Option<T>> list = new LazyList<Option<T>>(input);
-		List<Iterator<Option<T>>> iterators = new ArrayList<Iterator<Option<T>>>();
+		List<Iterator<Option<T>>> iterators = new ArrayList<>();
 		for (IteratorToIteratorFunction<T> function : selectorFunctions) {
 			iterators.add(new SuppIterator<T>(list, function));
 		}
@@ -70,13 +70,13 @@ public class SelectorFunction<T> impleme
 	}
 
 	@Override
-	public boolean accepts(T resource) {
+	public boolean test(T resource) {
 		Iterator<Option<T>> result = apply(IteratorUtils.singleElementIterator(Option.of(resource, 0)));
 		return new EmptyElementFilter<T>(result).hasNext();
 	}
 
 	private IteratorToIteratorFunction<T> createSelectorFunction(List<SelectorSegment> segments) {
-		List<Function<?, ?>> segmentFunctions = new ArrayList<Function<?, ?>>();
+		List<Function<?, ?>> segmentFunctions = new ArrayList<>();
 		for (SelectorSegment segment : segments) {
 			segmentFunctions.addAll(createSegmentFunction(segment));
 		}
@@ -84,7 +84,7 @@ public class SelectorFunction<T> impleme
 	}
 
 	private List<Function<?, ?>> createSegmentFunction(SelectorSegment segment) {
-		List<Function<?, ?>> functions = new ArrayList<Function<?, ?>>();
+		List<Function<?, ?>> functions = new ArrayList<>();
 		HierarchyOperator operator = HierarchyOperator.findByCharacter(segment.getHierarchyOperator());
 		functions.add(operator.getFunction(segment, strategy, provider));
 		Predicate<T> predicate = provider.getPredicate(segment.getType(), segment.getName(),

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/Selector.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/Selector.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/Selector.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/Selector.java Mon Sep 25 10:14:15 2017
@@ -31,7 +31,7 @@ public class Selector {
 	}
 
 	public Selector(List<SelectorSegment> segments) {
-		this.segments = new ArrayList<SelectorSegment>(segments);
+		this.segments = new ArrayList<>(segments);
 	}
 
 	public List<SelectorSegment> getSegments() {

Modified: sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/SelectorSegment.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/SelectorSegment.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/SelectorSegment.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/selector/parser/SelectorSegment.java Mon Sep 25 10:14:15 2017
@@ -39,8 +39,8 @@ public class SelectorSegment {
 	public SelectorSegment(ParserContext context, boolean firstSegment) {
 		this.type = context.getType();
 		this.name = context.getName();
-		this.attributes = new ArrayList<Attribute>(context.getAttributes());
-		this.modifiers = new ArrayList<Modifier>(context.getModifiers());
+		this.attributes = new ArrayList<>(context.getAttributes());
+		this.modifiers = new ArrayList<>(context.getModifiers());
 		if (firstSegment) {
 			hierarchyOperator = 0;
 		} else {

Modified: sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/FilterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/FilterTest.java?rev=1809597&r1=1809596&r2=1809597&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/FilterTest.java (original)
+++ sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/FilterTest.java Mon Sep 25 10:14:15 2017
@@ -24,10 +24,11 @@ import static org.apache.sling.query.Tes
 import static org.apache.sling.query.TestUtils.assertResourceSetEquals;
 
 import org.apache.sling.api.resource.Resource;
-import org.apache.sling.query.api.Predicate;
 import org.apache.sling.query.api.SearchStrategy;
 import org.junit.Test;
 
+import java.util.function.Predicate;
+
 public class FilterTest {
 
 	private Resource tree = TestUtils.getTree();
@@ -35,23 +36,13 @@ public class FilterTest {
 	@Test
 	public void testFilter() {
 		SlingQuery query = $(tree).searchStrategy(SearchStrategy.DFS).find()
-				.filter(new Predicate<Resource>() {
-					@Override
-					public boolean accepts(Resource resource) {
-						return "configParsys".equals(resource.getName());
-					}
-				});
+				.filter(resource -> "configParsys".equals(resource.getName()));
 		assertResourceSetEquals(query.iterator(), "configParsys");
 	}
 
 	@Test
 	public void testFilterOnEmptyCollection() {
-		SlingQuery query = $(tree).children("cq:Undefined").filter(new Predicate<Resource>() {
-			@Override
-			public boolean accepts(Resource resource) {
-				return true;
-			}
-		});
+		SlingQuery query = $(tree).children("cq:Undefined").filter(resource -> true);
 		assertEmptyIterator(query.iterator());
 	}
 }