Browse Source

fix MqttTopicFilterFactory toFilter

pull/3735/head
ShvaykaD 6 years ago
committed by Andrew Shvayka
parent
commit
13a731ecb3
  1. 17
      common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/util/MqttTopicFilterFactory.java

17
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/util/MqttTopicFilterFactory.java

@ -33,16 +33,13 @@ public class MqttTopicFilterFactory {
throw new IllegalArgumentException("Topic filter can't be empty!"); throw new IllegalArgumentException("Topic filter can't be empty!");
} }
return filters.computeIfAbsent(topicFilter, filter -> { return filters.computeIfAbsent(topicFilter, filter -> {
if (filter.contains("+") || filter.contains("#")) { if (filter.equals("#")) {
String regex; return new AlwaysTrueTopicFilter();
if (filter.equals("#")) { } else if (filter.contains("+") || filter.contains("#")) {
return new AlwaysTrueTopicFilter(); String regex = filter
} else { .replace("\\", "\\\\")
regex = filter .replace("+", "[^/]+")
.replace("\\", "\\\\") .replace("/#", "($|/.*)");
.replace("+", "[^/]+")
.replace("/#", "($|/.*)");
}
log.debug("Converting [{}] to [{}]", filter, regex); log.debug("Converting [{}] to [{}]", filter, regex);
return new RegexTopicFilter(regex); return new RegexTopicFilter(regex);
} else { } else {

Loading…
Cancel
Save