从Alfresco通过CMIS下载私人工作副本时出现CmisInvalidArgumentException

时间:2013-03-13 06:11:29

标签: alfresco cmis opencmis

我的open-source app会下载Alfresco文件夹的文件(按CMIS)。
算法很简单:

  1. 使用Folder.getChildren()
  2. 列出文件夹的内容
  3. 使用Document.getContentStream()
  4. 下载每个

    除了包含Working Copy文件的文件夹外,它工作正常,在这种情况下Alfresco说:

    org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException: Stream id is invalid: workspace://SpacesStore/8b9a58ba-652f-4a18-8d26-aba06df98d25;pwc
        at org.alfresco.opencmis.CMISConnector.getContentStream(CMISConnector.java:1199)
        at org.alfresco.opencmis.AlfrescoCmisServiceImpl.getContentStream(AlfrescoCmisServiceImpl.java:1795)
        at sun.reflect.GeneratedMethodAccessor700.invoke(Unknown Source)
    

    ;pwc可能意味着"私人工作副本",这是CMIS协议中的一个特例。当Alfresco Share用户点击"离线编辑"时,会创建工作副本。在文件上(也就是退房/登记)。

    我的算法有缺陷吗?或者它可能是Alfresco / OpenCMIS中的错误?

1 个答案:

答案 0 :(得分:1)

我不确定细节,因为你没有粘贴触发异常的代码,你没有提到你正在使用的化学版本。无论如何,如果我在CMIS workbench v0.8.0中运行以下groovy代码,它会成功打印所有文件内容:

def obj = session.getObjectByPath("/cc");
def children = obj.getChildren();
for (doc in children) {
  def s = doc.getContentStream();
  def i = s.getStream();
  println(i.text);
}

上面使用的cc文件夹是我在Alfresco CMIS instance创建的文件夹,我在其中放置了一个文件并将其签出以创建PWC。我假设您的代码存在一些问题,因为上面的代码使用了相同的API。

相关问题