当前位置: 首页 > 知识库问答 >
问题:

如何为上传的内容设置任意版本号?

姬正文
2023-03-14

我正在开发代表Surf WebScript的内容上传器。也许说updater更正确,因为内容已经存在于存储库中,但可能没有cm: versionable方面。我需要更新此内容并设置正确的版本号(例如,任意)。

我注意到第一次上传总是得到数字1.0

例如,假设内容模型没有cm:versionable特性。我可以通过这种方式添加它,并指定我需要的版本号(1.1):

if(!nodeService.hasAspect(nodeRef, QNAME_ASPECT_VERSIONABLE)) {
    Map<String, String> map = new HashMap<String, String>() {
        {
            put(QNAME_VERSION_LABEL, INITIAL_UPLOADED_VERSION); // 1.1
            put(QNAME_AUTO_VERSION, false);
        }
    };
    nodeService.addAspect(nodeRef, QNAME_ASPECT_VERSIONABLE, map);
    // SKIPPED

我使用的常量:

final String NS_ALF_CONTENT_MODEL  = "http://www.alfresco.org/model/content/1.0";
final String ASPECT_CM_VERSIONABLE = "versionable";
final String PROP_VERSION_LABEL    = "versionLabel";
final String PROP_AUTO_VERSION     = "autoVersion";
final String INITIAL_UPLOADED_VERSION = "1.1";

final QName QNAME_ASPECT_VERSIONABLE = QName.createQName(NS_ALF_CONTENT_MODEL, ASPECT_CM_VERSIONABLE);
final QName QNAME_VERSION_LABEL = QName.createQName(NS_ALF_CONTENT_MODEL, PROP_VERSION_LABEL);  
final QName QNAME_AUTO_VERSION = QName.createQName(NS_ALF_CONTENT_MODEL, PROP_AUTO_VERSION);

当我调试这个解决方案时,我可以看到我得到了我需要的版本。

然而,当我在节点浏览器中查看节点属性时,我看到cm:versionLabel==1.0

根据我使用的逻辑,所有下一次上传都会得到正确的数字。

为什么第一次上传的版本总是有1.0号,我如何改变这种行为?...

我的情况下的事务级别:


共有1个答案

澹台华翰
2023-03-14

是的,帕特里克的建议是有效的(斯洛思罗普的建议我没有检查)。我刚刚设置了initialVersion=false

Map<String, String> map = new HashMap<String, String>() {
    {
        put(QNAME_VERSION_LABEL, INITIAL_UPLOADED_VERSION); // 1.1
        put(QNAME_AUTO_VERSION, false);
        put(QNAME_INITIAL_VERSION, false);
    }
};

nodeService.addAspect(nodeRef, QNAME_ASPECT_CM_VERSIONABLE, map);

现在一切都好了。

感谢@Gagravarr的帮助。

 类似资料:
  • 问题内容: 如何设置Flutter应用程序的版本名称和版本代码,而不必进入Android和iOS设置? 在我的pubspec.yaml中 但我看不到内部编号的地方。 问题答案: 您可以在 pubspec.yaml 中的同一位置更新版本名称和版本代码号。只需将它们与标志分开即可。例如: 这表示 版本名称是 版本代码是 在新项目的文档中对此进行了描述(但是,如果您正在处理旧项目,则可能已将其删除):

  • 我正在尝试编写一个配置文件语法并让ANTLR4来处理它。我对ANTLR很陌生(这是我第一个使用它的项目)。 在很大程度上,我理解大多数配置文件语法需要做什么(或者至少我认为我需要做什么),但我将要阅读的文件将在大括号内包含任意C代码。以下是一个示例: 类似于: 可能有很多这样的人。我似乎无法让它理解我只想忽略(不跳过)源代码。以下是我迄今为止的语法: 问题是,我在C\U BLOCK lexer规则

  • 我遵循每一个步骤来设置新的版本。 我已经有了,为了更新,我下载了 ....现在当我运行Android Studio时,它说: 错误:配置根项目“empty”时出现问题。 未能解析配置“:classpath”的所有依赖项。找不到com.android.tools.build:gradle:4.1。在以下位置搜索:文件:/c:/程序文件/android/android Studio1/gradle/m

  • 问题内容: 如何在HttpClient上更改受支持的TLS版本? 我正在做: 但是当我检查创建的套接字时,它仍然说支持的协议是TLSv1.0,TLSv1.1和TLSv1.2。 实际上,我只希望它针对此特定HttpClient停止使用TLSv1.2。 问题答案: 解决方案是: 不过,这需要org.apache.httpcomponents.httpclient4.3.x。

  • 在我的机器上,我安装了两个Java版本:(我手动安装的1.6和1.7)。我需要他们两个为不同的项目。但对于Maven,我需要1.7,但我的Maven使用的是1.6 Java版本。

  • 我想在Hostgator共享主机上部署我的Laravel 3项目。Laravel 3所需的最小php是php56。Hostgator中默认的php是php54,低于所需的版本。 我按照这个指令在HG中找到了php56,然后我找到了它。然后我编辑了~/.bashrc。 现在,当我检查php版本时,它清楚地表明它是 PHP 5.6.30(cli)(内置: Mar27 2017 11:42:52)Cop