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());
        }
 }


Reply via email to