reactor.core.publisher.Mono.filterWhen()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(5.7k)|赞(0)|评价(0)|浏览(728)

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

Mono.filterWhen介绍

[英]If this Mono is valued, test the value asynchronously using a generated Publisher test. The value from the Mono is replayed if the first item emitted by the test is true. It is dropped if the test is either empty or its first emitted value is false.

Note that only the first value of the test publisher is considered, and unless it is a Mono, test will be cancelled after receiving that first value.
[中]如果此Mono有值,请使用生成的发布者测试异步测试该值。如果测试发出的第一项为真,则会重放Mono的值。如果测试为空或其第一个发出的值为false,则会删除它。
请注意,只考虑测试发布者的第一个值,除非它是Mono,否则在收到第一个值后,测试将被取消。

代码示例

代码示例来源:origin: spring-projects/spring-framework

private Mono<Resource> resolveVersionedResource(@Nullable ServerWebExchange exchange,
    String requestPath, List<? extends Resource> locations, ResourceResolverChain chain) {
  VersionStrategy versionStrategy = getStrategyForPath(requestPath);
  if (versionStrategy == null) {
    return Mono.empty();
  }
  String candidate = versionStrategy.extractVersion(requestPath);
  if (StringUtils.isEmpty(candidate)) {
    return Mono.empty();
  }
  String simplePath = versionStrategy.removeVersion(requestPath, candidate);
  return chain.resolveResource(exchange, simplePath, locations)
      .filterWhen(resource -> versionStrategy.getResourceVersion(resource)
          .map(actual -> {
            if (candidate.equals(actual)) {
              return true;
            }
            else {
              if (logger.isTraceEnabled()) {
                String logPrefix = exchange != null ? exchange.getLogPrefix() : "";
                logger.trace(logPrefix + "Found resource for \"" + requestPath +
                    "\", but version [" + candidate + "] does not match");
              }
              return false;
            }
          }))
      .map(resource -> new FileNameVersionedResource(resource, candidate));
}

代码示例来源:origin: reactor/reactor-core

@Test
public void allEmptyFused() {
  StepVerifier.create(Mono.just(2)
              .filterWhen(v -> Mono.empty()))
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void normalSyncFusedFiltered() {
  StepVerifier.create(Mono.just(1)
              .filterWhen(v -> Mono.just(v % 2 == 0)))
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void emptyBackpressured() {
  StepVerifier.create(Mono.<Integer>empty()
      .filterWhen(v -> Mono.just(true)), 0L)
      .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void empty() {
  StepVerifier.create(Mono.<Integer>empty()
              .filterWhen(v -> Mono.just(true)))
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void innerMonoNotCancelled() {
  AtomicInteger cancelCount = new AtomicInteger();
  StepVerifier.create(Mono.just(3)
              .filterWhen(v -> Mono.just(true)
                         .doOnCancel(cancelCount::incrementAndGet)))
        .expectNext(3)
        .verifyComplete();
  assertThat(cancelCount.get()).isEqualTo(0);
}

代码示例来源:origin: reactor/reactor-core

@Test
public void errorBackpressured() {
  StepVerifier.create(Mono.<Integer>error(new IllegalStateException())
      .filterWhen(v -> Mono.just(true)), 0L)
      .verifyError(IllegalStateException.class);
}

代码示例来源:origin: reactor/reactor-core

@Test
public void allEmpty() {
  StepVerifier.create(Mono.just(2)
              .filterWhen(v -> Mono.<Boolean>empty().hide()))
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void innerFluxCancelled() {
  AtomicInteger cancelCount = new AtomicInteger();
  StepVerifier.create(Mono.just(1)
              .filterWhen(v -> Flux.just(true, false, false)
                         .doOnCancel(cancelCount::incrementAndGet)))
        .expectNext(1)
        .verifyComplete();
  assertThat(cancelCount.get()).isEqualTo(1);
}

代码示例来源:origin: reactor/reactor-core

@Test
public void cancel() {
  final EmitterProcessor<Boolean> pp = EmitterProcessor.create();
  StepVerifier.create(Mono.just(1)
              .filterWhen(v -> pp))
        .thenCancel();
  assertThat(pp.hasDownstreams()).isFalse();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void normalSyncFiltered() {
  StepVerifier.create(Mono.just(1)
              .filterWhen(v -> Mono.just(v % 2 == 0).hide()))
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void normalSyncFusedNotFiltered() {
  StepVerifier.create(Mono.just(2)
              .filterWhen(v -> Mono.just(v % 2 == 0)))
        .expectNext(2)
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void error() {
  StepVerifier.create(Mono.<Integer>error(new IllegalStateException())
      .filterWhen(v -> Mono.just(true)))
      .verifyError(IllegalStateException.class);
}

代码示例来源:origin: reactor/reactor-core

@Test
public void backpressureExactlyOne() {
  StepVerifier.create(Mono.just(1)
              .filterWhen(v -> Mono.just(true)), 1L)
        .expectNext(1)
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void predicateErrorFused() {
  StepVerifier.create(Mono.just(1)
              .filterWhen(v -> Mono.fromCallable(() -> { throw new IllegalStateException(); })))
        .verifyError(IllegalStateException.class);
}

代码示例来源:origin: reactor/reactor-core

@Test
public void normalFiltered() {
  StepVerifier.withVirtualTime(() -> Mono.just(1)
                      .filterWhen(v -> Mono.just(v % 2 == 0)
                                .delayElement(Duration.ofMillis(100))))
        .expectSubscription()
        .expectNoEvent(Duration.ofMillis(100))
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void innerFluxOnlyConsidersFirstValue() {
  StepVerifier.create(Mono.just(1)
              .filterWhen(v -> Flux.just(false, true, true)))
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void predicateError() {
  StepVerifier.create(Mono.just(1)
              .filterWhen(v -> Mono.<Boolean>error(new IllegalStateException()).hide()))
        .verifyError(IllegalStateException.class);
}

代码示例来源:origin: reactor/reactor-core

@Test
public void normalNotFiltered() {
  StepVerifier.withVirtualTime(() -> Mono.just(2)
                      .filterWhen(v -> Mono.just(v % 2 == 0)
                                .delayElement(Duration.ofMillis(100))))
        .expectSubscription()
        .expectNoEvent(Duration.ofMillis(100))
        .expectNext(2)
        .verifyComplete();
}

代码示例来源:origin: reactor/reactor-core

@Test
public void normalSyncNotFiltered() {
  StepVerifier.create(Mono.just(2)
              .filterWhen(v -> Mono.just(v % 2 == 0).hide()))
        .expectNext(2)
        .verifyComplete();
}

相关文章

微信公众号

最新文章

更多

Mono类方法