added # filter topic handling
This commit is contained in:
parent
74d4f84a7d
commit
4babb07fd6
@ -34,10 +34,15 @@ public class MqttTopicFilterFactory {
|
||||
}
|
||||
return filters.computeIfAbsent(topicFilter, filter -> {
|
||||
if (filter.contains("+") || filter.contains("#")) {
|
||||
String regex = filter
|
||||
String regex;
|
||||
if (filter.equals("#")) {
|
||||
regex = filter.replace("#", "^(?!/).+");
|
||||
} else {
|
||||
regex = filter
|
||||
.replace("\\", "\\\\")
|
||||
.replace("+", "[^/]+")
|
||||
.replace("/#", "($|/.*)");
|
||||
}
|
||||
log.debug("Converting [{}] to [{}]", filter, regex);
|
||||
return new RegexTopicFilter(regex);
|
||||
} else {
|
||||
|
||||
@ -20,7 +20,6 @@ import org.junit.runner.RunWith;
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
|
||||
import javax.script.ScriptException;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
@ -32,6 +31,9 @@ public class MqttTopicFilterFactoryTest {
|
||||
private static String TEST_STR_2 = "Sensor/Temperature";
|
||||
private static String TEST_STR_3 = "Sensor/Temperature2/House/48";
|
||||
|
||||
private static String TEST_STR_4 = String.format("%s%n%s", "/Sensor/Temperature", "/House/48");
|
||||
private static String TEST_STR_5 = "/" + TEST_STR_1;
|
||||
|
||||
@Test
|
||||
public void metadataCanBeUpdated() throws ScriptException {
|
||||
MqttTopicFilter filter = MqttTopicFilterFactory.toFilter("Sensor/Temperature/House/+");
|
||||
@ -51,6 +53,13 @@ public class MqttTopicFilterFactoryTest {
|
||||
assertTrue(filter.filter(TEST_STR_1));
|
||||
assertTrue(filter.filter(TEST_STR_2));
|
||||
assertFalse(filter.filter(TEST_STR_3));
|
||||
|
||||
filter = MqttTopicFilterFactory.toFilter("#");
|
||||
assertTrue(filter.filter(TEST_STR_1));
|
||||
assertTrue(filter.filter(TEST_STR_2));
|
||||
assertTrue(filter.filter(TEST_STR_3));
|
||||
assertFalse(filter.filter(TEST_STR_4));
|
||||
assertFalse(filter.filter(TEST_STR_5));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user