If you look at the target use cases
https://sling.apache.org/documentation/bundles/sling-query/vs-jcr.html

Almost everything that is listed as use "JCR-Query" is what I use the resource 
locator for.  So, as far as I'm aware, they are complimentary . 

I also took a different approach to the API. The resource locator was built 
around the Stream API and predicates. You don't even need to use the 
ResourceLocator object

Example
aChildResource("jcr:content").has(property("sling:resourceType").isNot("sas/components/page/folder")))
 

creates a java.util.function.Predicate<Resource> object that could be used any 
where you need to filter a stream of resources, like a stream() from a 
Collection. The filter language creates a  Predicate<Resource> object as well.

I haven't checked sling-query yet but my filter language does a lot of heavy 
lifting for you. Handles arrays, conversions between types etc.

>From a performance perspective,  I experienced faster results from the 
>ResourceLocator then using a JCR2-SQL query. 


- Jason

On Thu, Jan 25, 2018, at 4:19 PM, Stefan Seifert wrote:
> hallo jason.
> 
> this looks a bit like sling-query [1], although the syntax is a bit different.
> how do you compare those two approaches?
> 
> stefan
> 
> [1] https://sling.apache.org/documentation/bundles/sling-query.html
> 
> 
> >-----Original Message-----
> >From: Jason E Bailey [mailto:j...@apache.org]
> >Sent: Thursday, January 25, 2018 6:35 PM
> >To: dev@sling.apache.org
> >Subject: Gauging interest on Yet Another Way to Find Resources
> >
> >Another one of my side projects
> >
> >https://github.com/JEBailey/sling-resourcelocator
> >
> >I think there's enough difference between other ways of finding
> >resources that there's  value to bringing it in.  But I like feedback,
> >since I'm a bit prejudiced.
> >It works by creating a Java8 Stream of resource objects starting from a
> >resource that you provide and iterating through descendants based on
> >provided criteria.
> >1. Handles limits, ranges, and depth
> >2. Control traversal path by setting conditions on which child resource
> >   can be included3. Can define complex acceptance criteria for resources
> >based on
> >   properties4. Definable via fluid api or a filtering language
> >5. filtering language is extensible using custom functions
> >
> >And because it uses resources it's resource provider agnostic.
> >
> >- Jason
> >
> 

Reply via email to