本文整理了Java中io.vavr.control.Try.mapTry()
方法的一些代码示例,展示了Try.mapTry()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Try.mapTry()
方法的具体详情如下:
包路径:io.vavr.control.Try
类名称:Try
方法名:mapTry
[英]Runs the given checked function if this is a Try.Success, passing the result of the current expression to it. If this expression is a Try.Failure then it'll return a new Try.Failure of type R with the original exception.
The main use case is chaining checked functions using method references:
Try.of(() -> 0)
.map(x -> 1 / x); // division by zero
[中]如果这是一次尝试,则运行给定的checked函数。成功,将当前表达式的结果传递给它。如果这个表达是一种尝试。如果失败,它将返回一次新的尝试。R型故障,原始异常。
主要用例是使用方法引用链接已检查的函数:
Try.of(() -> 0)
.map(x -> 1 / x); // division by zero
代码示例来源:origin: vavr-io/vavr
/**
* Shortcut for {@code mapTry(mapper::apply)}, see {@link #mapTry(CheckedFunction1)}.
*
* @param <U> The new component type
* @param mapper A checked function
* @return a {@code Try}
* @throws NullPointerException if {@code mapper} is null
*/
@Override
default <U> Try<U> map(Function<? super T, ? extends U> mapper) {
Objects.requireNonNull(mapper, "mapper is null");
return mapTry(mapper::apply);
}
代码示例来源:origin: vavr-io/vavr
default <U> Future<U> mapTry(CheckedFunction1<? super T, ? extends U> mapper) {
Objects.requireNonNull(mapper, "mapper is null");
return transformValue(t -> t.mapTry(mapper));
}
代码示例来源:origin: vavr-io/vavr
default <U> Future<U> flatMapTry(CheckedFunction1<? super T, ? extends Future<? extends U>> mapper) {
Objects.requireNonNull(mapper, "mapper is null");
return run(executor(), complete ->
onComplete(result -> result.mapTry(mapper)
.onSuccess(future -> future.onComplete(complete::with))
.onFailure(x -> complete.with(Try.failure(x)))
)
);
}
代码示例来源:origin: resilience4j/resilience4j
@Test
public void decorateCheckedFunction() throws Throwable {
CheckedFunction1<Integer, String> function = mock(CheckedFunction1.class);
CheckedFunction1<Integer, String> decorated = RateLimiter.decorateCheckedFunction(limit, function);
when(limit.getPermission(config.getTimeoutDuration()))
.thenReturn(false);
Try<String> decoratedFunctionResult = Try.success(1).mapTry(decorated);
then(decoratedFunctionResult.isFailure()).isTrue();
then(decoratedFunctionResult.getCause()).isInstanceOf(RequestNotPermitted.class);
verify(function, never()).apply(any());
when(limit.getPermission(config.getTimeoutDuration()))
.thenReturn(true);
Try secondFunctionResult = Try.success(1).mapTry(decorated);
then(secondFunctionResult.isSuccess()).isTrue();
verify(function, times(1)).apply(1);
}
代码示例来源:origin: resilience4j/resilience4j
@Test
public void decorateFutureSupplier() throws Throwable {
when(timeLimiter.getTimeLimiterConfig()).thenReturn(shortConfig);
Future<Integer> future = EXECUTOR_SERVICE.submit(() -> {
Thread.sleep(SLEEP_DURATION.toMillis());
return 1;
}
);
Supplier<Future<Integer>> supplier = () -> future;
Callable<Integer> decorated = TimeLimiter.decorateFutureSupplier(timeLimiter, supplier);
Try decoratedResult = Try.success(decorated).mapTry(Callable::call);
then(decoratedResult.isFailure()).isTrue();
then(decoratedResult.getCause()).isInstanceOf(TimeoutException.class);
then(future.isCancelled()).isTrue();
when(timeLimiter.getTimeLimiterConfig())
.thenReturn(longConfig);
Future<Integer> secondFuture = EXECUTOR_SERVICE.submit(() -> {
Thread.sleep(SLEEP_DURATION.toMillis());
return 1;
}
);
supplier = () -> secondFuture;
decorated = TimeLimiter.decorateFutureSupplier(timeLimiter, supplier);
Try secondResult = Try.success(decorated).mapTry(Callable::call);
then(secondResult.isSuccess()).isTrue();
}
代码示例来源:origin: resilience4j/resilience4j
@Test
public void shouldChainDecoratedFunctions() throws ExecutionException, InterruptedException {
// tag::shouldChainDecoratedFunctions[]
// Given
CircuitBreaker circuitBreaker = CircuitBreaker.ofDefaults("testName");
CircuitBreaker anotherCircuitBreaker = CircuitBreaker.ofDefaults("anotherTestName");
// When I create a Supplier and a Function which are decorated by different CircuitBreakers
CheckedFunction0<String> decoratedSupplier = CircuitBreaker
.decorateCheckedSupplier(circuitBreaker, () -> "Hello");
CheckedFunction1<String, String> decoratedFunction = CircuitBreaker
.decorateCheckedFunction(anotherCircuitBreaker, (input) -> input + " world");
// and I chain a function with map
Try<String> result = Try.of(decoratedSupplier)
.mapTry(decoratedFunction::apply);
// Then
assertThat(result.isSuccess()).isTrue();
assertThat(result.get()).isEqualTo("Hello world");
// end::shouldChainDecoratedFunctions[]
CircuitBreaker.Metrics metrics = circuitBreaker.getMetrics();
assertThat(metrics.getNumberOfBufferedCalls()).isEqualTo(1);
assertThat(metrics.getNumberOfFailedCalls()).isEqualTo(0);
metrics = anotherCircuitBreaker.getMetrics();
assertThat(metrics.getNumberOfBufferedCalls()).isEqualTo(1);
assertThat(metrics.getNumberOfFailedCalls()).isEqualTo(0);
}
代码示例来源:origin: resilience4j/resilience4j
@Test
public void shouldChainDecoratedFunctions() throws ExecutionException, InterruptedException {
// tag::shouldChainDecoratedFunctions[]
// Given
Bulkhead bulkhead = Bulkhead.of("test", config);
Bulkhead anotherBulkhead = Bulkhead.of("testAnother", config);
// When I create a Supplier and a Function which are decorated by different Bulkheads
CheckedFunction0<String> decoratedSupplier
= Bulkhead.decorateCheckedSupplier(bulkhead, () -> "Hello");
CheckedFunction1<String, String> decoratedFunction
= Bulkhead.decorateCheckedFunction(anotherBulkhead, (input) -> input + " world");
// and I chain a function with map
Try<String> result = Try.of(decoratedSupplier)
.mapTry(decoratedFunction::apply);
// Then
assertThat(result.isSuccess()).isTrue();
assertThat(result.get()).isEqualTo("Hello world");
assertThat(bulkhead.getMetrics().getAvailableConcurrentCalls()).isEqualTo(1);
assertThat(anotherBulkhead.getMetrics().getAvailableConcurrentCalls()).isEqualTo(1);
// end::shouldChainDecoratedFunctions[]
}
代码示例来源:origin: io.vavr/vavr
/**
* Shortcut for {@code mapTry(mapper::apply)}, see {@link #mapTry(CheckedFunction1)}.
*
* @param <U> The new component type
* @param mapper A checked function
* @return a {@code Try}
* @throws NullPointerException if {@code mapper} is null
*/
@Override
default <U> Try<U> map(Function<? super T, ? extends U> mapper) {
Objects.requireNonNull(mapper, "mapper is null");
return mapTry(mapper::apply);
}
代码示例来源:origin: io.vavr/vavr
default <U> Future<U> mapTry(CheckedFunction1<? super T, ? extends U> mapper) {
Objects.requireNonNull(mapper, "mapper is null");
return transformValue(t -> t.mapTry(mapper));
}
代码示例来源:origin: Tristan971/Lyrebird
public <T> Try<T> doWithCurrentTwitter(final CheckedFunction1<Twitter, T> action) {
return getCurrentTwitter().mapTry(action);
}
代码示例来源:origin: Tristan971/Lyrebird
/**
* @return the updated screen name of the current user
*/
private String getCurrentScreenName() {
return sessionManager.getCurrentTwitter()
.mapTry(Twitter::getScreenName)
.getOrElseThrow(err -> new IllegalStateException("Current user unavailable!", err));
}
代码示例来源:origin: Tristan971/Lyrebird
/**
* @return the Twitter {@link User} associated with this Session.
*/
public Try<User> getTwitterUser() {
final long self = accessToken.getUserId();
return Try.of(twitterHandler::getTwitter).mapTry(twitter -> twitter.showUser(self));
}
代码示例来源:origin: Tristan971/Lyrebird
@Override
public void refresh() {
if (!sessionManager.isLoggedInProperty().getValue()) {
LOG.debug("Logged out, not refreshing direct messages.");
return;
}
CompletableFuture.runAsync(() -> {
LOG.debug("Requesting last direct messages.");
sessionManager.getCurrentTwitter()
.mapTry(twitter -> twitter.getDirectMessages(20))
.onSuccess(this::addDirectMessages)
.onFailure(err -> LOG.error("Could not load direct messages successfully!", err));
});
}
代码示例来源:origin: Tristan971/Lyrebird
/**
* Asynchronously loads the last tweets available
*/
public void refresh() {
CompletableFuture.runAsync(() -> {
if (sessionManager.getCurrentTwitter().getOrElse((Twitter) null) == null) {
return;
}
getLocalLogger().debug("Requesting last tweets in timeline.");
sessionManager.getCurrentTwitter()
.mapTry(this::initialLoad)
.onSuccess(this::addTweets)
.onFailure(err -> getLocalLogger().error("Could not refresh!", err))
.andThen(() -> isFirstCall.set(false));
});
}
代码示例来源:origin: Tristan971/Lyrebird
/**
* Asynchronously requests loading of tweets prior to the given status.
*
* @param loadUntilThisStatus the status whose prior tweets are requested
*/
public void loadMoreTweets(final long loadUntilThisStatus) {
CompletableFuture.runAsync(() -> {
getLocalLogger().debug("Requesting more tweets.");
final Paging requestPaging = new Paging();
requestPaging.setMaxId(loadUntilThisStatus);
sessionManager.getCurrentTwitter()
.mapTry(twitter -> backfillLoad(twitter, requestPaging))
.onSuccess(this::addTweets);
getLocalLogger().debug("Finished loading more tweets.");
});
}
代码示例来源:origin: io.vavr/vavr
default <U> Future<U> flatMapTry(CheckedFunction1<? super T, ? extends Future<? extends U>> mapper) {
Objects.requireNonNull(mapper, "mapper is null");
return run(executor(), complete ->
onComplete(result -> result.mapTry(mapper)
.onSuccess(future -> future.onComplete(complete::with))
.onFailure(x -> complete.with(Try.failure(x)))
)
);
}
代码示例来源:origin: Tristan971/Lyrebird
/**
* @return The {@link Relationship} between the current user in the direction of the {@link #targetUserProp}.
*/
private Relationship getRelationship() {
return sessionManager.doWithCurrentTwitter(
twitter -> sessionManager.currentSessionProperty()
.getValue()
.getTwitterUser()
.mapTry(us -> twitter.showFriendship(
us.getId(),
targetUserProp.getValue().getId()
)).get()
).getOrElseThrow((Function<? super Throwable, IllegalStateException>) IllegalStateException::new);
}
内容来源于网络,如有侵权,请联系作者删除!