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

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

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

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

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

1 Ответ

0 голосов
/ 25 марта 2019

Я нашел это решение. Я создаю абстрактный класс 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();
}

Уродливо, но работает.

...