#box-api
#box-api
Вопрос:
Я пытаюсь интегрировать Box с Kerika, используя box-java-sdk-v2. Библиотека добавляется в проект как зависимость maven (net.box:boxjavalibv2).
Все работает нормально, за исключением API совместной работы по обновлению. Вызов API из проекта выглядит следующим образом:
BoxCollabRequestObject requestObject = BoxCollabRequestObject.updateCollaborationObject(permission);
return client().getCollaborationsManager().
updateCollaboration(collaborationId, requestObject);
Я много искал в Google, чтобы найти решение этой проблемы. Но я ничего не получил. Итак, я зарегистрировал проблему в box-java-sdk-v2 issues на GitLab.
Потратив еще некоторое время через день, a обнаружил, что проблема связана с самой библиотекой Java. С Box API нет никаких проблем. Я пришел к этому выводу, обратившись к REST API непосредственно из Advanced REST Client вместо библиотеки Java, и это сработало.
Итак, в качестве обходного пути (до тех пор, пока ошибка в Java SDK не будет официально исправлена и выпущена), я обновил свой код следующим образом:
// As client library update function is not working properly so I have written custom code to deal with it.
BoxCollabRequestObject requestObject = BoxCollabRequestObject.updateCollabObjects(permission);
BoxCollaborationsManagerImpl boxCollaborationsManager = (BoxCollaborationsManagerImpl)client().getCollaborationsManager();
BoxUpdateCollaborationRequest request = new BoxUpdateCollaborationRequest(boxCollaborationsManager.getConfig(), boxCollaborationsManager.getJSONParser(), collaborationId, requestObject);
return (BoxCollaboration) boxCollaborationsManager.getResponseAndParseAndTryCast(request, BoxResourceType.COLLABORATION, boxCollaborationsManager.getJSONParser());
и BoxUpdateCollaborationRequest
класс в приведенном выше коде создан самостоятельно. Это выглядит следующим образом:
public class BoxUpdateCollaborationRequest extends DefaultBoxRequest
{
private static final String URI = "/collaborations/%s";
public BoxUpdateCollaborationRequest(IBoxConfig config, IBoxJSONParser parser, String id, BoxCollabRequestObject requestObject) throws BoxRestException
{
super(config, parser, getUri(id), RestMethod.PUT, requestObject);
}
public static String getUri(final String id) {
return String.format(URI, id);
}
}
Я заметил, что реальная проблема в их первоначальной реализации — это просто константа. Это должно быть
private static final String URI = "/collaborations/%s";
Вместо
private static final String URI = "/collaboration/%s";
Я отправляю эту проблему здесь, чтобы помочь другим, у кого такая же проблема, и ищу решение Stack Overflow.
Комментарии:
1. Спасибо за поиск и поиск причины ошибки @chirag. Если вы хотите, вы также можете отправить свое изменение в виде запроса на извлечение в проекте github. Затем вы получаете полные очки славы за свой вклад.
2. Конечно, я хотел бы внести свой вклад в проект. Я сделаю это в следующий раз. Прямо сейчас моя ошибка исправлена и включена в новую версию
3. Объединено и исправлено в проекте