@Test
public void testUpdateTransactionDetailInfo() {

    Single.fromCallable(new Callable<String>() {
        @Override
        public String call() throws Exception {
            return "0x2e95e3ce0a54951eb9a99152a6d5827872dfb4fd";
        }
    }).flatMap(new Function<String, SingleSource<String>>() {
        @Override
        public SingleSource<String> apply(String s) throws Exception {
            if (TextUtils.isEmpty(s)) {
                return Single.fromCallable(new Callable<String>() {
                    @Override
                    public String call() throws Exception {
                        return "0x2e95e3ce0a54951eb9a99152a6d5827872dfb4fd";
                    }
                });
            } else {
                return Single.just(s);
            }
        }
    }).subscribe(new Consumer<String>() {
        @Override
        public void accept(String s) throws Exception {
            System.out.println("====================" + s);
        }
    });
}