文档锁定返回非预期值

时间:2016-09-20 09:08:26

标签: java xpages

我有一个函数,我想检查用户是否可以设置文档锁定。如果是这样,我知道用户可以编辑文档。

public boolean canWriteDocument(String docId, String userName) {
    boolean canWrite = false;
    Session session = null;
    session = getCurrentSession();
    try {
        Database db = session.getDatabase("", this.activeDb);

        if (db.isDocumentLockingEnabled()) {
            //Document locking is enabled

            Document doc = db.getDocumentByUNID(docId);
            if (doc.lock(userName)) {
                canWrite = true;
                System.out.println("document can be locked by user");
                doc.unlock();
            } else {
                System.out.println("document can NOT be locked by user");
            }
        } else {
            //Document locking is NOT enabled
        }

    } catch (NotesException e) {
        // fail silently
        System.out.println("failure docLock");
        //e.printStackTrace();
    }
    return canWrite;
}

我按照以下方式调用该函数: canWriteDocument(" 99DE330A432849AFC125803400313C73"," CN = John Doe / O = quintessens")

但是必定有错误,因为当用户(具有ACL作者访问级别)未在类型作者的字段中列出时,它返回true。

当我将ACL访问级别降低到Reader时,返回的值仍然为true。

任何人都可以解释为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

可能是数据库访问级别在服务器中缓存。尝试重新启动服务器(如果它是开发环境)或使用之前从未在ACL中的全新用户进行测试。

如果Database.queryAccess()也不正确,那将确认缓存是个问题。

(检查访问权限的两种方式可能会在不同的情况下工作,因此如果queryAccess()返回正确的值,则可能并不明确表示数据库锁定选项应该。)