public void delete()

in src/main/java/org/apache/sling/mongodb/impl/MongoDBResourceProvider.java [128:169]


    public void delete(final ResourceResolver resolver, final String path)
            throws PersistenceException {
        final String[] info = this.extractResourceInfo(path);
        if ( info != null ) {
            boolean deletedResource = false;
            if ( !deletedResources.contains(path) ) {
                final Resource rsrc = this.getResource(resolver, path, info);
                if ( rsrc instanceof MongoDBResource ) {
                    this.deletedResources.add(path);
                    this.changedResources.remove(path);

                    final DBCollection col = this.getCollection(info[0]);
                    final String pattern = "^" + Pattern.quote(info[1]) + "/";

                    final DBObject query = QueryBuilder.start(getPROP_PATH()).regex(Pattern.compile(pattern)).get();
                    final DBCursor cur = col.find(query);
                    while ( cur.hasNext() ) {
                        final DBObject dbObj = cur.next();
                        final String childPath = info[0] + '/' + dbObj.get(getPROP_PATH());
                        this.deletedResources.add(childPath);
                        this.changedResources.remove(childPath);
                    }
                    deletedResource = true;
                }
            } else {
                deletedResource = true;
            }
            if ( deletedResource ) {
                final String prefix = path + "/";
                final Iterator<Map.Entry<String, MongoDBResource>> i = this.changedResources.entrySet().iterator();
                while ( i.hasNext() ) {
                    final Map.Entry<String, MongoDBResource> entry = i.next();
                    if ( entry.getKey().startsWith(prefix) ) {
                        i.remove();
                    }
                }
                return;
            }

        }
        throw new PersistenceException("Unable to delete resource at {}" + path, null, path, null);
    }