RoutingResult { RoutingResult(RoutingResultType type, @Nullable String path, @Nullable String query, Map<String, String> pathParams, int score, @Nullable MediaType negotiatedResponseMediaType) { assert type != RoutingResultType.NOT_MATCHED || path == null && query == null && pathParams.isEmpty(); this.type = type; this.path = path; this.query = query; this.pathParams = ImmutableMap.copyOf(pathParams); this.score = score; this.negotiatedResponseMediaType = negotiatedResponseMediaType; } RoutingResult(RoutingResultType type, @Nullable String path, @Nullable String query,
                  Map<String, String> pathParams, int score, @Nullable MediaType negotiatedResponseMediaType); static RoutingResult empty(); static RoutingResultBuilder builder(); RoutingResultType type(); boolean isPresent(); String path(); String decodedPath(); @Nullable String query(); Map<String, String> pathParams(); int score(); boolean hasHighestScore(); boolean hasLowestScore(); @Nullable MediaType negotiatedResponseMediaType(); @Override String toString();  }
@Test void routingResult() throws URISyntaxException { final RoutingResultBuilder builder = RoutingResult.builder(); final RoutingResult routingResult = builder.path("/foo") .query("bar=baz") .rawParam("qux", "quux") .negotiatedResponseMediaType(MediaType.JSON_UTF_8) .build(); assertThat(routingResult.isPresent()).isTrue(); assertThat(routingResult.path()).isEqualTo("/foo"); assertThat(routingResult.query()).isEqualTo("bar=baz"); assertThat(routingResult.pathParams()).containsOnly(new SimpleEntry<>("qux", "quux")); assertThat(routingResult.negotiatedResponseMediaType()).isSameAs(MediaType.JSON_UTF_8); }