如何在方法注解中获取 Maybe 对象的结果或错误

问题描述 投票:0回答:1

我正在尝试为返回 RxJava

Maybe<?>
对象的方法创建注释。 因此,在
MethodInterceptor
方法中的
intercept
类中,我尝试访问从 Maybe 对象获取的错误,拦截方法如下:

public class myInterceptor implements MethodInterceptor<Object, Object> {
    @Override
    public Object intercept(MethodInvocationContext<Object, Object> context) {
            Object result = context.proceed(this);

            if (result instanceof Maybe) {
                Flowable.fromCallable(() -> ((Maybe<?>) result).doOnError(this::logError)).subscribeOn(Schedulers.io());
            }
            return result;
    }
}

这里

this::logError
从来没有被调用过,我的方法写好了

public Maybe<Optional<?>> getInfos(String url) {
    return httpClient.exchange(
                    HttpRequest.GET(url)
                            .contentType(MediaType.APPLICATION_JSON),
                    String.class).firstElement().map(response -> {
                         /* Do something*/
                    }).doOnError(throwable -> {
                         throw new ApiException("Get Infos API message : " + throwable.getMessage(); 
                    });
            });      

}
java rx-java reactive-programming micronaut
1个回答
0
投票

你的代码没有任何意义。我想您想增加方法调用的 Maybe 结果,对吗?

首先,通过 fromCallable 捕获它是行不通的,你只需传递 Maybe 而不用它做任何事情。其次,您根本不返回增强序列。

所以,试试这个:

public class myInterceptor implements MethodInterceptor<Object, Object> {
    @Override
    public Object intercept(MethodInvocationContext<Object, Object> context) {
            Object result = context.proceed(this);

            if (result instanceof Maybe) {
                return ((Maybe<?>) result)
                       .doOnError(this::logError)
                       .subscribeOn(Schedulers.io());
            }
            return result;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.