io.reactivex.Single.flatMapMaybe()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(9.0k)|赞(0)|评价(0)|浏览(114)

本文整理了Java中io.reactivex.Single.flatMapMaybe()方法的一些代码示例,展示了Single.flatMapMaybe()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Single.flatMapMaybe()方法的具体详情如下:
包路径:io.reactivex.Single
类名称:Single
方法名:flatMapMaybe

Single.flatMapMaybe介绍

[英]Returns a Maybe that is based on applying a specified function to the item emitted by the source Single, where that function returns a MaybeSource.

Scheduler: flatMapMaybe does not operate by default on a particular Scheduler.
[中]返回一个MaybeSource,该函数基于将指定函数应用于源Single发出的项,其中该函数返回一个MaybeSource。
调度器:FlatMap默认情况下可能不会在特定的调度器上运行。

代码示例

代码示例来源:origin: ReactiveX/RxJava

@Override
  public MaybeSource<Integer> apply(Single<Integer> v) throws Exception {
    return v.flatMapMaybe(new Function<Integer, MaybeSource<Integer>>() {
      @Override
      public MaybeSource<Integer> apply(Integer v) throws Exception {
        return Maybe.just(1);
      }
    });
  }
});

代码示例来源:origin: ReactiveX/RxJava

@Test(expected = NullPointerException.class)
public void flatMapMaybeNull() {
  Single.just(1)
    .flatMapMaybe(null);
}

代码示例来源:origin: ReactiveX/RxJava

@Test
public void flatMapMaybeError() {
  RuntimeException exception = new RuntimeException("test");
  Single.error(exception).flatMapMaybe(new Function<Object, MaybeSource<Object>>() {
    @Override public MaybeSource<Object> apply(final Object integer) throws Exception {
      return Maybe.just(new Object());
    }
  })
    .test()
    .assertError(exception);
}

代码示例来源:origin: ReactiveX/RxJava

@Test
public void dispose() {
  TestHelper.checkDisposed(Single.just(1).flatMapMaybe(new Function<Integer, MaybeSource<Integer>>() {
    @Override
    public MaybeSource<Integer> apply(Integer v) throws Exception {
      return Maybe.just(1);
    }
  }));
}

代码示例来源:origin: ReactiveX/RxJava

@Test
  public void mapsToEmpty() {
    Single.just(1).flatMapMaybe(new Function<Integer, MaybeSource<Integer>>() {
      @Override
      public MaybeSource<Integer> apply(Integer v) throws Exception {
        return Maybe.empty();
      }
    })
    .test()
    .assertResult();
  }
}

代码示例来源:origin: ReactiveX/RxJava

@Test
public void mapsToError() {
  Single.just(1).flatMapMaybe(new Function<Integer, MaybeSource<Integer>>() {
    @Override
    public MaybeSource<Integer> apply(Integer v) throws Exception {
      return Maybe.error(new TestException());
    }
  })
  .test()
  .assertFailure(TestException.class);
}

代码示例来源:origin: ReactiveX/RxJava

@Test
public void flatMapMaybeValueDifferentType() {
  Single.just(1).flatMapMaybe(new Function<Integer, MaybeSource<String>>() {
    @Override public MaybeSource<String> apply(final Integer integer) throws Exception {
      if (integer == 1) {
        return Maybe.just("2");
      }
      return Maybe.just("1");
    }
  })
    .test()
    .assertResult("2");
}

代码示例来源:origin: ReactiveX/RxJava

@Test
public void flatMapMaybeValue() {
  Single.just(1).flatMapMaybe(new Function<Integer, MaybeSource<Integer>>() {
    @Override public MaybeSource<Integer> apply(final Integer integer) throws Exception {
      if (integer == 1) {
        return Maybe.just(2);
      }
      return Maybe.just(1);
    }
  })
    .test()
    .assertResult(2);
}

代码示例来源:origin: ReactiveX/RxJava

@Test
public void flatMapMaybeValueErrorThrown() {
  Single.just(1).flatMapMaybe(new Function<Integer, MaybeSource<Integer>>() {
    @Override public MaybeSource<Integer> apply(final Integer integer) throws Exception {
      throw new RuntimeException("something went terribly wrong!");
    }
  })
    .test()
    .assertNoValues()
    .assertError(RuntimeException.class)
    .assertErrorMessage("something went terribly wrong!");
}

代码示例来源:origin: ReactiveX/RxJava

@Test
public void singleMaybe() throws Exception {
  List<Throwable> errors = TestHelper.trackPluginErrors();
  try {
    TestObserver<Integer> to = Single.just(1)
    .subscribeOn(Schedulers.io())
    .flatMapMaybe(new Function<Integer, Maybe<Integer>>() {
      @Override
      public Maybe<Integer> apply(Integer v) throws Exception {
        sleep();
        return Maybe.<Integer>error(new TestException());
      }
    })
    .test();
    cb.await();
    beforeCancelSleep(to);
    to.cancel();
    Thread.sleep(SLEEP_AFTER_CANCEL);
    to.assertEmpty();
    assertTrue(errors.toString(), errors.isEmpty());
  } finally {
    RxJavaPlugins.reset();
  }
}

代码示例来源:origin: ReactiveX/RxJava

@Test
public void flatMapMaybeValueNull() {
  Single.just(1).flatMapMaybe(new Function<Integer, MaybeSource<Integer>>() {
    @Override public MaybeSource<Integer> apply(final Integer integer) throws Exception {
      return null;
    }
  })
    .test()
    .assertNoValues()
    .assertError(NullPointerException.class)
    .assertErrorMessage("The mapper returned a null MaybeSource");
}

代码示例来源:origin: io.gravitee.am.gateway.handlers/gravitee-am-gateway-handler

@Override
public Single<Token> grant(TokenRequest tokenRequest, Client client) {
  return parseRequest(tokenRequest, client)
      .flatMapMaybe(tokenRequest1 -> resolveResourceOwner(tokenRequest1, client))
      .map(user -> Optional.of(user))
      .defaultIfEmpty(Optional.empty())
      .flatMapSingle(user -> handleRequest(tokenRequest, client, user.isPresent() ? user.get() : null));
}

代码示例来源:origin: gravitee-io/graviteeio-access-management

@Override
public Single<Token> grant(TokenRequest tokenRequest, Client client) {
  return parseRequest(tokenRequest, client)
      .flatMapMaybe(tokenRequest1 -> resolveResourceOwner(tokenRequest1, client))
      .map(user -> Optional.of(user))
      .defaultIfEmpty(Optional.empty())
      .flatMapSingle(user -> handleRequest(tokenRequest, client, user.isPresent() ? user.get() : null));
}

代码示例来源:origin: com.microsoft.azure/azure-storage-blob

/**
 * Retrieves statistics related to replication for the Blob service. It is only available on the secondary location endpoint when read-access geo-redundant replication is enabled for the storage account.
 *
 * @param context The context to associate with this operation.
 * @param timeout The timeout parameter is expressed in seconds. For more information, see &lt;a href="https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/setting-timeouts-for-blob-service-operations"&gt;Setting Timeouts for Blob Service Operations.&lt;/a&gt;.
 * @param requestId Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled.
 * @throws IllegalArgumentException thrown if parameters fail the validation.
 * @return a Single which performs the network request upon subscription.
 */
public Maybe<StorageServiceStats> getStatisticsAsync(Context context, Integer timeout, String requestId) {
  return getStatisticsWithRestResponseAsync(context, timeout, requestId)
    .flatMapMaybe((ServiceGetStatisticsResponse res) -> res.body() == null ? Maybe.empty() : Maybe.just(res.body()));
}

代码示例来源:origin: io.gravitee.am.gateway.handlers/gravitee-am-gateway-handler

@Override
public Maybe<Token> getAccessToken(String token, Client client) {
  return jwtService.decodeAndVerify(token, client)
      .onErrorResumeNext(ex -> {
        if (ex instanceof JwtException) {
          return Single.error(new InvalidTokenException(ex.getMessage(), ex));
        }
        return Single.error(ex);
      })
      .flatMapMaybe(jwt -> accessTokenRepository.findByToken(jwt.getJti()).map(accessToken -> convertAccessToken(jwt)));
}

代码示例来源:origin: gravitee-io/graviteeio-access-management

@Override
public Maybe<Token> getRefreshToken(String refreshToken, Client client) {
  return jwtService.decodeAndVerify(refreshToken, client)
      .onErrorResumeNext(ex -> {
        if (ex instanceof JwtException) {
          return Single.error(new InvalidTokenException(ex.getMessage(), ex));
        }
        return Single.error(ex);
      })
      .flatMapMaybe(jwt -> refreshTokenRepository.findByToken(jwt.getJti()).map(refreshToken1 -> convertRefreshToken(jwt)));
}

代码示例来源:origin: io.gravitee.am.gateway.handlers/gravitee-am-gateway-handler

@Override
public Maybe<Token> getRefreshToken(String refreshToken, Client client) {
  return jwtService.decodeAndVerify(refreshToken, client)
      .onErrorResumeNext(ex -> {
        if (ex instanceof JwtException) {
          return Single.error(new InvalidTokenException(ex.getMessage(), ex));
        }
        return Single.error(ex);
      })
      .flatMapMaybe(jwt -> refreshTokenRepository.findByToken(jwt.getJti()).map(refreshToken1 -> convertRefreshToken(jwt)));
}

代码示例来源:origin: gravitee-io/graviteeio-access-management

@Override
public Maybe<Token> getAccessToken(String token, Client client) {
  return jwtService.decodeAndVerify(token, client)
      .onErrorResumeNext(ex -> {
        if (ex instanceof JwtException) {
          return Single.error(new InvalidTokenException(ex.getMessage(), ex));
        }
        return Single.error(ex);
      })
      .flatMapMaybe(jwt -> accessTokenRepository.findByToken(jwt.getJti()).map(accessToken -> convertAccessToken(jwt)));
}

代码示例来源:origin: io.gravitee.am.gateway.handlers/gravitee-am-gateway-handler

@Override
public Maybe<Token> introspect(String token) {
  // any client can introspect a token, we first need to decode the token to get the client's certificate to verify the token
  return jwtService.decode(token)
      .flatMapMaybe(jwt -> clientSyncService.findByDomainAndClientId(jwt.getDomain(), jwt.getAud()))
      .switchIfEmpty(Maybe.error(new InvalidTokenException("Invalid or unknown client for this token")))
      .flatMap(client -> getAccessToken(token, client));
}

代码示例来源:origin: gravitee-io/graviteeio-access-management

@Override
public Maybe<Token> introspect(String token) {
  // any client can introspect a token, we first need to decode the token to get the client's certificate to verify the token
  return jwtService.decode(token)
      .flatMapMaybe(jwt -> clientSyncService.findByDomainAndClientId(jwt.getDomain(), jwt.getAud()))
      .switchIfEmpty(Maybe.error(new InvalidTokenException("Invalid or unknown client for this token")))
      .flatMap(client -> getAccessToken(token, client));
}

相关文章

微信公众号

最新文章

更多