Fix SSE topic filters (#2986)

Signed-off-by: Jan N. Klug <github@klug.nrw>
This commit is contained in:
J-N-K
2022-06-16 21:17:25 +02:00
committed by GitHub
parent 84d5d38606
commit cdf876c17e
2 changed files with 7 additions and 3 deletions
@@ -85,7 +85,7 @@ public class SseUtil {
} else {
StringTokenizer tokenizer = new StringTokenizer(topicFilter, ",");
while (tokenizer.hasMoreElements()) {
String regex = tokenizer.nextToken().trim().replace("*", ".*") + ".*";
String regex = tokenizer.nextToken().trim().replace("*", ".*") + "$";
filters.add(regex);
}
}
@@ -60,7 +60,7 @@ public class SseUtilTest {
@Test
public void testFilterMatchers() {
List<String> regexes = SseUtil
.convertToRegex("openhab/*/test/test/test/test, openhab/test/*/test/test/test, openhab,qivicon");
.convertToRegex("openhab/*/test/test/test/test, openhab/test/*/test/test/test, openhab/*,qivicon/*");
assertThat("openhab/test/test/test/test/test".matches(regexes.get(0)), is(true));
assertThat("openhab/asdf/test/test/test/test".matches(regexes.get(0)), is(true));
@@ -81,7 +81,7 @@ public class SseUtilTest {
@Test
public void testMoreFilterMatchers() {
List<String> regexes = SseUtil.convertToRegex(", *, openhab/items/*/added, openhab/items");
List<String> regexes = SseUtil.convertToRegex(", *, openhab/items/*/added, openhab/items/*/*");
assertThat("openhab/test/test/test/test/test".matches(regexes.get(0)), is(true));
assertThat("openhab/asdf/test/test/test/test".matches(regexes.get(0)), is(true));
@@ -112,5 +112,9 @@ public class SseUtilTest {
regexes = SseUtil.convertToRegex("*added");
assertThat("openhab/items/anyitem/added".matches(regexes.get(0)), is(true));
assertThat("openhab/items/anyitem/removed".matches(regexes.get(0)), is(false));
regexes = SseUtil.convertToRegex("openhab/items/*/state");
assertThat("openhab/items/anyitem/state".matches(regexes.get(0)), is(true));
assertThat("openhab/items/anyitem/statechanged".matches(regexes.get(0)), is(false));
}
}