2015-05-06 7 views
0

Я создаю клиент для замены некоторого контента на социальном веб-сайте соединений, который у нас есть. Я написал java-клиент, следуя образцу кода из репозитория Github: https://github.com/OpenNTF/SocialSDK/tree/master/sdk/com.ibm.sbt.core.test/src/test/java/com/ibm/sbt/services/client/connections/filesОшибка контекста SBT при использовании вызова Fileservice.updatefile

А также используя этот учебник в качестве ссылки для создания конечных точек, а затем передачи его на другую службу.

Чтобы быть ясным, я размещаю контент в сообществе, поэтому я использую CommunityService для загрузки контента и FileService для обновления файлов сообщества.

Этот метод отлично работает: fileservice.updateCommunityFile (iStream, fileId, title, communityLibraryId, params) Это создает несколько версий на сервере, чего я не хочу.

Однако я хочу использовать этот - fileservice.updateFile (InputStream, файл Params) Если я использую один из приведенных выше в моем коде это вызывает ошибку ниже:

Error updating the file 
com.ibm.sbt.services.client.connections.files.FileServiceException: Error updating the file 
    at com.ibm.sbt.services.client.connections.files.FileService.updateFile(FileService.java:2686) 
    at sbt.sample.standalone.java.StandaloneDemo.ReplacePhoto(StandaloneDemo.java:332) 
    at sbt.sample.standalone.java.StandaloneDemo.main(StandaloneDemo.java:239) 
Caused by: java.lang.IllegalStateException: SBT context is not initialized for the request 
    at com.ibm.commons.runtime.Context.get(Context.java:57) 
    at com.ibm.sbt.services.endpoints.BasicEndpoint.authenticate(BasicEndpoint.java:151) 
    at com.ibm.sbt.services.client.ClientService.forceAuthentication(ClientService.java:296) 
    at com.ibm.sbt.services.client.ClientService.processResponse(ClientService.java:1154) 
    at com.ibm.sbt.services.client.ClientService._xhr(ClientService.java:1072) 
    at com.ibm.sbt.services.client.ClientService.execRequest(ClientService.java:1037) 
    at com.ibm.sbt.services.client.ClientService.xhr(ClientService.java:1003) 
    at com.ibm.sbt.services.client.ClientService.put(ClientService.java:937) 
    at com.ibm.sbt.services.client.ClientService.put(ClientService.java:933) 
    at com.ibm.sbt.services.client.base.BaseService.updateData(BaseService.java:439) 
    at com.ibm.sbt.services.client.connections.files.FileService.updateFile(FileService.java:2683) 

Примечание: Пользователь который я использую в программе, является администратором сообщества, где размещается контент. Кроме того, есть ли способ, который я могу указать в sbtsdk api, чтобы заменить файл другим, не создавая другие версии?

Я нашел это похожим - Liferay Portal & IBM SBT SDK: SBT context is not initialized for the request Но я не понимаю, было ли у него какое-либо разрешение.

Спасибо.

ответ

1

Прежде всего, трудно понять, почему вы видите, что «контекст SBT не инициализирован для запроса», потому что вы можете запускать один API-интерфейс для работы с файлами, а не другой.

Оба fileservice.updateCommunityFile(iStream, fileId, title, communityLibraryId, params) и fileservice.updateFile(inputStream, file, params) создают новые версии. Они не заменяют последнюю версию. Существует параметр с этим API, который контролирует, создавать ли новую версию или нет.

Это то, что вам нужно сделать:

использовать параметр createVersion со значением «ложным». как это:

Map<String, String> paramsMap = new HashMap<String, String>(); 
paramsMap.put("createVersion", "false"); 

Теперь используйте этот paramsMap в updateCommunityFile API, как это:

fileservice.updateCommunityFile(iStream, fileId, title, communityLibraryId, paramsMap) 
+0

Спасибо за ваш ответ. Это решает мою проблему отсутствия нескольких файлов в сообществе. Тем не менее, я не уверен, почему я получаю контекст, не инициализированный для некоторых других методов обработки файлов. Я принял ваш ответ, так как сейчас решает мою проблему. – Pitsteeler

+0

Откуда вы знаете параметр «createVersion»? Это где-то задокументировано? Я хотел бы найти документацию для этого и других параметров, которые могут быть доступны. Благодаря! –

+0

вот документация: http://www.10.lotus.com/ldd/appdevwiki.nsf/xpAPIViewer.xsp?lookupName=API+Reference#action=openDocument&res_title=Updating_a_file_ic50&content=apicontent –