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



我的开源应用程序下载了一个Alfresco文件夹的文件(由CMIS)。
算法很简单:

  1. 用folder . getchildren()列出文件夹内容
  2. 使用Document.getContentStream()下载

它可以正常工作,除了包含文件的工作副本的文件夹,在这种情况下,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可能是指"Private Working Copy",这是CMIS协议中的一个特例。当Alfresco Share用户在文档上点击"离线编辑"(即签出/签入)时,创建工作副本。

我的算法有缺陷吗?或者它可能是Alfresco/OpenCMIS中的一个bug ?

我不确定细节,因为您没有在这里粘贴触发异常的代码,也没有提到您使用的是哪个化学版本。无论如何,如果我在CMIS工作台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实例中创建的文件夹,我在其中放置了一个文件并将其签出以创建PWC。我假设你的代码有一些问题,因为上面的代码使用了相同的API。

相关内容

  • 没有找到相关文章