updated documentation
diff --git a/README.md b/README.md
index 8c09685..284a5c2 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,8 @@
-# Resource Stream Support
+# Resource Filter
+Consists of a utility to do a controlled traversal of a Resource sub-tree as well as a dedicated scripting language to create a boolean Predicate object that be used as part of Java Collections or with native Java Streams.
+
+
+## Resource Stream
* `ResourceStream` utility to provide a `Stream<Resource>` which traverses the subtree of a resource
* Script support for creation of a complex `Predicate<Resource>` for use with Collections and Streams
@@ -6,16 +10,15 @@
Example of a stream using the filter script
```java
-new ResourceStream(resource)
- .setBranchSelector("[jcr:primaryType] == 'cq:Page'")
- .stream()
- .filter(new ResourceFilter("[jcr:content/sling:resourceType] != 'apps/components/page/folder'"))
- .collect(Collections.toList());
+ new ResourceStreamFilter(resource)
+ .stream("[jcr:primaryType] == 'cq:Page'")
+ .filter(new ResourceFilter("[jcr:content/sling:resourceType] != 'apps/components/page/folder'"))
+ .collect(Collections.toList());
```
-## ResourceFilter Script
+## ResourceFilter Scripting
### Operators
diff --git a/src/main/java/org/apache/sling/resource/filter/ResourceFilter.java b/src/main/java/org/apache/sling/resource/filter/ResourceFilter.java
index a752032..d7fd5c3 100644
--- a/src/main/java/org/apache/sling/resource/filter/ResourceFilter.java
+++ b/src/main/java/org/apache/sling/resource/filter/ResourceFilter.java
@@ -25,6 +25,10 @@
import org.apache.sling.resource.filter.impl.ParseException;
import org.apache.sling.resource.filter.impl.node.Node;
+/**
+ * Creates a {@link Predicate} of type {@link Resource} to identify matching Resource objects
+ *
+ */
public class ResourceFilter implements Predicate<Resource> {
private Predicate<Resource> parsedPredicate;
diff --git a/src/main/java/org/apache/sling/resource/filter/ResourceStream.java b/src/main/java/org/apache/sling/resource/filter/ResourceStream.java
index db4d78a..64b3930 100644
--- a/src/main/java/org/apache/sling/resource/filter/ResourceStream.java
+++ b/src/main/java/org/apache/sling/resource/filter/ResourceStream.java
@@ -98,6 +98,13 @@
}, Spliterator.ORDERED | Spliterator.IMMUTABLE), false);
}
+ /**
+ * Provides a stream of the child resource of the base resource. The predicate
+ * is a filter to determine which of the children are returned
+ *
+ * @param childSelector
+ * @return
+ */
public Stream<Resource> listChildren(Predicate<Resource> childSelector) {
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(resource.listChildren(),
Spliterator.ORDERED | Spliterator.IMMUTABLE), false).filter(childSelector);
diff --git a/src/main/java/org/apache/sling/resource/filter/impl/predicates/ComparisonPredicateFactory.java b/src/main/java/org/apache/sling/resource/filter/impl/predicates/ComparisonPredicateFactory.java
index 222f86f..d16b947 100644
--- a/src/main/java/org/apache/sling/resource/filter/impl/predicates/ComparisonPredicateFactory.java
+++ b/src/main/java/org/apache/sling/resource/filter/impl/predicates/ComparisonPredicateFactory.java
@@ -20,6 +20,9 @@
import org.apache.sling.resource.filter.impl.FilterParserConstants;
public class ComparisonPredicateFactory {
+
+ private ComparisonPredicateFactory() {
+ }
public static Predicate<Resource> toPredicate(int kind, Function<Resource, Object> leftValue,
Function<Resource, Object> rightValue) {
diff --git a/src/main/java/org/apache/sling/resource/filter/impl/predicates/ComparisonPredicates.java b/src/main/java/org/apache/sling/resource/filter/impl/predicates/ComparisonPredicates.java
index afbb88e..0ab09eb 100644
--- a/src/main/java/org/apache/sling/resource/filter/impl/predicates/ComparisonPredicates.java
+++ b/src/main/java/org/apache/sling/resource/filter/impl/predicates/ComparisonPredicates.java
@@ -33,6 +33,8 @@
*/
public class ComparisonPredicates {
+ private static final String STATEMENT_MAY_NOT_BE_NULL = "statement may not be null";
+
/**
* Values are converted to Strings.
*
@@ -43,7 +45,7 @@
* @return true if right hand String is equal to left hand String
*/
public static Predicate<Resource> is(Function<Resource, Object> lhs, Function<Resource, Object> rhs) {
- Objects.requireNonNull(rhs, "statement may not be null");
+ Objects.requireNonNull(rhs, STATEMENT_MAY_NOT_BE_NULL);
return resource -> {
CharSequence lhValue = ComparisonPredicates.getString(lhs.apply(resource));
CharSequence rhValue = ComparisonPredicates.getString(rhs.apply(resource));
@@ -65,7 +67,7 @@
* @return true if right hand String is equal to left hand String
*/
public static Predicate<Resource> isNot(Function<Resource, Object> lhs, Function<Resource, Object> rhs) {
- Objects.requireNonNull(rhs, "statement may not be null");
+ Objects.requireNonNull(rhs, STATEMENT_MAY_NOT_BE_NULL);
return resource -> {
CharSequence lhValue = ComparisonPredicates.getString(lhs.apply(resource));
CharSequence rhValue = ComparisonPredicates.getString(rhs.apply(resource));
@@ -112,7 +114,7 @@
*/
@SuppressWarnings("unchecked")
public static Predicate<Resource> gt(Function<Resource, Object> lhs, Function<Resource, Object> rhs) {
- Objects.requireNonNull(rhs, "statement may not be null");
+ Objects.requireNonNull(rhs, STATEMENT_MAY_NOT_BE_NULL);
return resource -> {
Number lhValue = ComparisonPredicates.getNumber(lhs.apply(resource));
Number rhValue = ComparisonPredicates.getNumber(rhs.apply(resource));
@@ -141,7 +143,7 @@
*/
@SuppressWarnings("unchecked")
public static Predicate<Resource> gte(Function<Resource, Object> lhs, Function<Resource, Object> rhs) {
- Objects.requireNonNull(rhs, "statement may not be null");
+ Objects.requireNonNull(rhs, STATEMENT_MAY_NOT_BE_NULL);
return resource -> {
Number lhValue = ComparisonPredicates.getNumber(lhs.apply(resource));
Number rhValue = ComparisonPredicates.getNumber(rhs.apply(resource));
@@ -198,7 +200,7 @@
*/
@SuppressWarnings("unchecked")
public static Predicate<Resource> lte(Function<Resource, Object> lhs, Function<Resource, Object> rhs) {
- Objects.requireNonNull(rhs, "statement may not be null");
+ Objects.requireNonNull(rhs, STATEMENT_MAY_NOT_BE_NULL);
return resource -> {
Number lhValue = ComparisonPredicates.getNumber(lhs.apply(resource));
Number rhValue = ComparisonPredicates.getNumber(rhs.apply(resource));
@@ -224,7 +226,7 @@
* @return true if left hand values are a subset of right hand values
*/
public static Predicate<Resource> contains(Function<Resource, Object> lhs, Function<Resource, Object> rhs) {
- Objects.requireNonNull(rhs, "statement may not be null");
+ Objects.requireNonNull(rhs, STATEMENT_MAY_NOT_BE_NULL);
return resource -> {
String[] lhValues = adaptToArray(lhs.apply(resource));
String[] rhValues = adaptToArray(rhs.apply(resource));
diff --git a/src/main/java/org/apache/sling/resource/filter/impl/predicates/Null.java b/src/main/java/org/apache/sling/resource/filter/impl/predicates/Null.java
index 066501c..4cd60d6 100644
--- a/src/main/java/org/apache/sling/resource/filter/impl/predicates/Null.java
+++ b/src/main/java/org/apache/sling/resource/filter/impl/predicates/Null.java
@@ -14,16 +14,11 @@
package org.apache.sling.resource.filter.impl.predicates;
/**
- *
- * @author jabail
+ * Utility class to represent a Null value while evaluating predicates
*
*/
public class Null extends Number implements CharSequence {
- /**
- * The version identifier for this Serializable class. Increment only if the
- * <i>serialized</i> form of the class changes.
- */
private static final long serialVersionUID = 1L;
@Override