This is an automated email from the ASF dual-hosted git repository.
jeb pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resource-filter.git
The following commit(s) were added to refs/heads/master by this push:
new 0af0c48 updated documentation
0af0c48 is described below
commit 0af0c4843a62776b3af0a4c07c4415288ff2382d
Author: JE Bailey <[email protected]>
AuthorDate: Mon Jul 2 13:41:48 2018 -0400
updated documentation
---
README.md | 17 ++++++++++-------
.../apache/sling/resource/filter/ResourceFilter.java | 4 ++++
.../apache/sling/resource/filter/ResourceStream.java | 7 +++++++
.../impl/predicates/ComparisonPredicateFactory.java | 3 +++
.../filter/impl/predicates/ComparisonPredicates.java | 14 ++++++++------
.../sling/resource/filter/impl/predicates/Null.java | 7 +------
6 files changed, 33 insertions(+), 19 deletions(-)
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.FilterParser;
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 @@ public class ResourceStream {
}, 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.api.resource.Resource;
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 @@ import org.apache.sling.api.resource.Resource;
*/
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 @@ public class ComparisonPredicates {
* @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 @@ public class ComparisonPredicates {
* @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 @@ public class ComparisonPredicates {
*/
@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 @@ public class ComparisonPredicates {
*/
@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 @@ public class ComparisonPredicates {
*/
@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 @@ public class ComparisonPredicates {
* @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