diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/MetadataEncoder.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/MetadataEncoder.java index 9ff1e052740..7075e312260 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/MetadataEncoder.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/MetadataEncoder.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,7 +51,7 @@ import org.springframework.util.ObjectUtils; final class MetadataEncoder { /** For route variable replacement. */ - private static final Pattern VARS_PATTERN = Pattern.compile("\\{([^/]+?)}"); + private static final Pattern VARS_PATTERN = Pattern.compile("\\{(.+?)}"); private static final Object NO_VALUE = new Object(); @@ -113,6 +113,7 @@ final class MetadataEncoder { matcher.appendReplacement(sb, value); index++; } + matcher.appendTail(sb); return sb.toString(); } diff --git a/spring-messaging/src/test/java/org/springframework/messaging/rsocket/MetadataEncoderTests.java b/spring-messaging/src/test/java/org/springframework/messaging/rsocket/MetadataEncoderTests.java index 6a8e84a32f1..3cb7928e5eb 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/rsocket/MetadataEncoderTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/rsocket/MetadataEncoderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -131,11 +131,11 @@ public class MetadataEncoderTests { public void routeWithVars() { DataBuffer buffer = new MetadataEncoder(MimeTypeUtils.TEXT_PLAIN, this.strategies) - .route("a.{b}.{c}", "BBB", "C.C.C") + .route("a.{b}.{c}.d", "BBB", "C.C.C") .encode() .block(); - assertThat(dumpString(buffer)).isEqualTo("a.BBB.C%2EC%2EC"); + assertThat(dumpString(buffer)).isEqualTo("a.BBB.C%2EC%2EC.d"); } @Test