in src/main/java/org/apache/sling/mongodb/impl/MongoDBResourceProvider.java [440:486]
public Iterator<Resource> findResources(final ResourceResolver resolver, String query, String language) {
if ( !language.equals( "mongodb") || query == null || query.length() == 0 || query.indexOf( ".find(" ) <= 0 )
{
return null;
}
Iterator<Resource> returnValue = null;
final String collectionName = query.substring( 0, query.indexOf( ".find(" ) );
DBCollection col = this.getCollection( collectionName );
if ( col != null )
{
String criteria = query.trim().substring( query.indexOf( ".find(" ) + 6, query.length() - 1 );
DBObject dbObject = (DBObject) JSON.parse( criteria );
final DBCursor cur = col.find( dbObject );
final String rootPath = context.getRootWithSlash();
return new Iterator<Resource>() {
public boolean hasNext() {
return cur.hasNext();
}
public Resource next() {
final DBObject obj = cur.next();
final String objPath = obj.get(getPROP_PATH()).toString();
final int lastSlash = objPath.lastIndexOf('/');
final String name;
if (lastSlash == -1) {
name = objPath;
} else {
name = objPath.substring(lastSlash + 1);
}
return new MongoDBResource(resolver,
rootPath + collectionName + "/" + name,
collectionName,
obj,
MongoDBResourceProvider.this);
}
public void remove() {
throw new UnsupportedOperationException("remove");
}
};
}
return returnValue;
}