Alfresco VersionHistory在重新部署后返回不同的错误版本

时间:2015-01-16 12:11:50

标签: java alfresco

有时,在Alfresco重启后,versionService.getVersionHistory不会返回上一个节点版本。

例如,我有四个节点版本。

VersionHistory versionHistory = versionService.getVersionHistory(actionedUponNodeRef);
List<Version> versions = (List<Version>) versionHistory.getAllVersions();
if (versions.size() > 1) {
    Version prevVersion = versions.get(1);
}

通常它的工作正常。 prevVersion有第三个节点版本,但有时,在Alfresco重新启动后,它会返回第二个节点版本,直到我再次重新部署Alfresco。

如何始终获取上一个节点版本?

1 个答案:

答案 0 :(得分:1)

我猜所有Casting的命令都搞砸了。 我检查了代码,原始版本是Type ArrayList,它有一个超类型的List。然后它作为集合发回,然后将其转换回List。

通常这不应该是一个问题。

在您的情况下,我将从ScriptNode.GetVersionHistory中复制代码,该代码在Alfresco&amp;共享以显示版本。 这是片段:

 public Scriptable getVersionHistory()
    {
        if (this.versions == null && getIsVersioned())
        {
            VersionHistory history = this.services.getVersionService().getVersionHistory(this.nodeRef);
            if (history != null)
            {
                Collection<Version> allVersions = history.getAllVersions();
                Object[] versions = new Object[allVersions.size()];
                int i = 0;
                for (Version version : allVersions)
                {
                    versions[i++] = new ScriptVersion(version, this.services, this.scope);
                }
                this.versions = Context.getCurrentContext().newArray(this.scope, versions);
            }
        }
        return this.versions;
    }