/** Unlock the VFS lock only */
  @Override
  public boolean unlock(VFSItem item, Identity identity, Roles roles) {
    if (item instanceof MetaTagged) {
      MetaInfoFileImpl info = (MetaInfoFileImpl) ((MetaTagged) item).getMetaInfo();
      if (info == null) return false;

      info.setLockedBy(null);
      info.setLockedDate(null);
      info.setLocked(false);
      info.write();

      boolean unlocked = false;
      File file = extractFile(item);
      if (file != null && fileLocks.containsKey(file)) {
        LockInfo lock = fileLocks.get(file);
        if (lock.isWebDAVLock()) {
          lock.setVfsLock(false);
        } else {
          if (lock.getWebPath() != null) {
            // LOCK resourceLocks.remove(lock.getWebPath());
          }
          fileLocks.remove(file);
          unlocked = true;
        }
      } else {
        unlocked = true;
      }
      return unlocked;
    }
    return false;
  }
  @Override
  public boolean lock(VFSItem item, Identity identity, Roles roles) {
    if (item instanceof MetaTagged) {
      MetaInfoFileImpl info = (MetaInfoFileImpl) ((MetaTagged) item).getMetaInfo();
      info.setLockedBy(identity.getKey());
      info.setLockedDate(new Date());
      info.setLocked(true);
      info.write();

      File file = extractFile(item);
      if (file != null && fileLocks.containsKey(file)) {
        LockInfo lock = fileLocks.get(file);
        if (lock != null) {
          lock.setVfsLock(true);
        }
      }

      return true;
    }
    return false;
  }