Как изменить конечную точку базового URL для прокси errai jaxrs?

#gwt #jax-rs #errai

#gwt #jax-rs #ошибка

Вопрос:

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

но я нашел только этот метод

  RestClient.create(MyService.class, otherServiceBaseUrl,
            myCallback,               
            200).doStaf() ;
  

Есть предложения по более элегантному способу настройки базового URL для всех сервисов в моем классе MyService?

Ответ №1:

Я нашел это решение. Я создаю абстрактный класс DinamicCaller.

    public abstract class DinamicCaller<T> {


    public T call() {
        T call = getCaller().call();
        ((AbstractJaxrsProxy) call).setBaseUrl(getBaseUrl());
        return call;
    }

    public T call(RemoteCallback<?> callback) {
        T call = getCaller().call(callback);
        ((AbstractJaxrsProxy) call).setBaseUrl(getBaseUrl());

        return call;
    }

    public T call(RemoteCallback<?> callback, ErrorCallback<?> errorCallback) {

        T call = getCaller().call(callback, errorCallback);
        ((AbstractJaxrsProxy) call).setBaseUrl(getBaseUrl());

        return call;

    }

    protected abstract Caller<T> getCaller();


    protected abstract String getBaseUrl();
}
  

Я создаю конкретный класс

 public class CallerCORSNegoziService extends DinamicCaller<CORSNegoziService> {

    @Inject
    NegozioManager negozioManager;
    @Inject
    Caller<CORSNegoziService> caller;


    @Override
    protected Caller<CORSNegoziService> getCaller() {
        return caller;
    }

    @Override
    protected String getBaseUrl() {
        return negozioManager.getNegozio().getUrl();
    }
}
  

В моем классе я внедряю конкретный класс

 @Inject
CallerCORSNegoziService service;
  

И я использую его

 @UiHandler("testButton")
public void testButtonClick(ClickEvent event) {
      service.call(testCallback, testCallback).findAllNegozi();
}
  

Некрасиво, но работает.