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 ab314bb Added String encoding support
ab314bb is described below
commit ab314bb515cc24a7a4546711cc539c8fed85a18b
Author: Jason E Bailey <[email protected]>
AuthorDate: Tue Jul 31 10:25:34 2018 -0400
Added String encoding support
---
.../sling/resource/filter/ResourceFilter.java | 18 ++++++++++-
.../resource/filter/ResourceFilterStream.java | 36 ++++++++++++++++++++--
2 files changed, 51 insertions(+), 3 deletions(-)
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 52f9a7d..a4b8045 100644
--- a/src/main/java/org/apache/sling/resource/filter/ResourceFilter.java
+++ b/src/main/java/org/apache/sling/resource/filter/ResourceFilter.java
@@ -40,7 +40,8 @@ public class ResourceFilter implements Predicate<Resource> {
* Creates a {@link Predicate<Resource>} using the input String as the
basis of
* the selection
*
- * @param matchDefinition Script used to define the matching requirements
for the Predicate
+ * @param matchDefinition
+ * Script used to define the matching requirements for the
Predicate
* @throws ParseException
*/
public ResourceFilter(String matchDefinition) throws ParseException {
@@ -48,6 +49,21 @@ public class ResourceFilter implements Predicate<Resource> {
this.parsedPredicate = rootNode.accept(getContext().getLogicVisitor());
}
+ /**
+ * Creates a {@link Predicate<Resource>} using the input String as the
basis of
+ * the selection
+ *
+ * @param matchDefinition
+ * Script used to define the matching requirements for the
Predicate
+ * @param charEncoding
+ * char encoding of the matchDefinition
+ * @throws ParseException
+ */
+ public ResourceFilter(String matchDefinition, String charEncoding) throws
ParseException {
+ Node rootNode = new FilterParser(new
ByteArrayInputStream(matchDefinition.getBytes()), charEncoding).parse();
+ this.parsedPredicate = rootNode.accept(getContext().getLogicVisitor());
+ }
+
@Override
public boolean test(Resource resource) {
return parsedPredicate.test(resource);
diff --git
a/src/main/java/org/apache/sling/resource/filter/ResourceFilterStream.java
b/src/main/java/org/apache/sling/resource/filter/ResourceFilterStream.java
index eafa4f1..0c06c7c 100644
--- a/src/main/java/org/apache/sling/resource/filter/ResourceFilterStream.java
+++ b/src/main/java/org/apache/sling/resource/filter/ResourceFilterStream.java
@@ -39,18 +39,50 @@ public class ResourceFilterStream extends ResourceStream {
public Stream<Resource> stream(String branchSelector) throws
ParseException {
return stream(new ResourceFilter(branchSelector));
}
-
+
+ /**
+ * Creates a Stream<Resource> using the branchSelector to create the
traversal
+ * predicate to select the appropriate child resources
+ *
+ * @param branchSelector
+ * resourceFilter script for traversal control
+ * @param charEncoding
+ * char encoding of the branch selector String
+ * @return ResourceStream
+ * @throws ParseException
+ */
+ public Stream<Resource> stream(String branchSelector, String charEncoding)
throws ParseException {
+ return stream(new ResourceFilter(branchSelector, charEncoding));
+ }
+
/**
* Provides a stream of the child resources of the base resource. The
predicate
* is a filter to determine which of the children are returned
*
* @param childSelector
* @return
- * @throws ParseException
+ * @throws ParseException
*/
public Stream<Resource> listChildren(String childSelector) throws
ParseException {
return
StreamSupport.stream(Spliterators.spliteratorUnknownSize(resource.listChildren(),
Spliterator.ORDERED | Spliterator.IMMUTABLE),
false).filter(new ResourceFilter(childSelector));
}
+ /**
+ * Provides a stream of the child resources of the base resource. The
predicate
+ * is a filter to determine which of the children are returned
+ *
+ * @param childSelector
+ * @param charEncoding
+ * char encoding of the branch selector String
+ * @return
+ * @throws ParseException
+ */
+ public Stream<Resource> listChildren(String childSelector, String
charEncoding) throws ParseException {
+ return StreamSupport
+
.stream(Spliterators.spliteratorUnknownSize(resource.listChildren(),
+ Spliterator.ORDERED | Spliterator.IMMUTABLE), false)
+ .filter(new ResourceFilter(childSelector, charEncoding));
+ }
+
}
\ No newline at end of file