2013-03-13 3 views
1

My open-source app загружает файлы в папку Alfresco (по CMIS).
Алгоритм очень прост: содержаниеCmisInvalidArgumentException при загрузке частной рабочей копии из Alfresco через CMIS

  1. Список папку с Folder.getChildren()
  2. Скачать каждый с Document.getContentStream()

Он отлично работает для папок, содержащих Working Copy файла за исключением того, в этом случае Альфреско говорит:

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 возможно м eans «Частная рабочая копия», что является особым случаем в протоколе CMIS. Рабочие копии создаются, когда пользователь Alfresco Share нажимает «Редактировать офлайн» на документе (также вы можете проверить/проверить).

Является ли мой алгоритм испорчен? Или это может быть ошибка в Alfresco/OpenCMIS?

+0

Можете ли вы не просто отфильтровать рабочие копии и выполнять свою работу только через главный узел? – Gagravarr

+0

@Gagravarr: Я думал об этом, но мне нужно скачать все, потому что эти файлы также могут понадобиться, я полагаю. Это также вызывает любопытство: тот факт, что загрузка разрешена клиентской библиотекой, по-видимому, подразумевает, что загрузка этих файлов также должна работать. –

ответ

1

Я не уверен в деталях, так как вы не вставляете сюда код, вызывающий исключение, и вы не указываете, какую версию химии вы используете. Во всяком случае, если я запускаю следующий код заводной внутри CMIS workbench v0.8.0 успешно напечатать все файлы содержимого:

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.

+0

+1 Спасибо за расследование! Мой код на самом деле общедоступен, но я постараюсь сократить его до быстро хватающего фрагмента. Надеюсь, это поможет мне найти ошибку в моем коде. –

Смежные вопросы