Невозможно обновить совместную работу, используя обновление API совместной работы в box-java-sdk-v2

#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. Объединено и исправлено в проекте