@Override
    protected void handleActionRequestInternal(ActionRequest request, ActionResponse response) throws Exception {
        final String entryIndex = StringUtils.defaultIfEmpty(request.getParameter("entryIndex"), null);
        
        //Get the BookmarkSet from the store
        final BookmarkSet bs = this.bookmarkSetRequestResolver.getBookmarkSet(request, false);
        if (bs == null) {
            throw new IllegalArgumentException("No BookmarkSet exists for request='" + request + "'");
        }
        
        final IdPathInfo targetEntryPathInfo = FolderUtils.getEntryInfo(bs, entryIndex);
        if (targetEntryPathInfo != null && targetEntryPathInfo.getTarget() != null) {
            final Folder parentFolder = targetEntryPathInfo.getParent();
            if (parentFolder != null) {
                final Map<Long, Entry> children = parentFolder.getChildren();
                final Entry target = targetEntryPathInfo.getTarget();
                children.remove(target.getId());
    
                //Persist the changes to the BookmarkSet 
                this.bookmarkStore.storeBookmarkSet(bs);
            }
            else {
                //Deleting the root bookmark
                this.bookmarkStore.removeBookmarkSet(bs.getOwner(), bs.getName());
            }
        }
        else {
            this.logger.warn("No IdPathInfo found for BaseFolder='" + bs + "' and idPath='" + entryIndex + "'");
        }
        
        //Go back to view bookmarks
        response.setRenderParameter("action", "viewBookmarks");
    }