Browse Source

added AlwaysTrueTopicFilter

pull/3735/head
ShvaykaD 6 years ago
committed by Andrew Shvayka
parent
commit
7482d73a9b
  1. 27
      common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/util/AlwaysTrueTopicFilter.java
  2. 2
      common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/util/MqttTopicFilterFactory.java
  3. 13
      common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/util/MqttTopicFilterFactoryTest.java

27
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/util/AlwaysTrueTopicFilter.java

@ -0,0 +1,27 @@
/**
* Copyright © 2016-2020 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.transport.mqtt.util;
import lombok.Data;
@Data
public class AlwaysTrueTopicFilter implements MqttTopicFilter {
@Override
public boolean filter(String topic) {
return true;
}
}

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

@ -36,7 +36,7 @@ public class MqttTopicFilterFactory {
if (filter.contains("+") || filter.contains("#")) {
String regex;
if (filter.equals("#")) {
regex = filter.replace("#", "\\S+");
return new AlwaysTrueTopicFilter();
} else {
regex = filter
.replace("\\", "\\\\")

13
common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/util/MqttTopicFilterFactoryTest.java

@ -31,9 +31,8 @@ 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 = "/Sensor/Temperature2/House/48";
private static String TEST_STR_5 = String.format("%s%n%s", "/Sensor/Temperature", "/House/48");
private static String TEST_STR_6 = "";
private static String TEST_STR_7 = " ";
private static String TEST_STR_5 = "Sensor/ Temperature";
private static String TEST_STR_6 = "/";
@Test
public void metadataCanBeUpdated() throws ScriptException {
@ -60,9 +59,11 @@ public class MqttTopicFilterFactoryTest {
assertTrue(filter.filter(TEST_STR_2));
assertTrue(filter.filter(TEST_STR_3));
assertTrue(filter.filter(TEST_STR_4));
assertFalse(filter.filter(TEST_STR_5));
assertFalse(filter.filter(TEST_STR_6));
assertFalse(filter.filter(TEST_STR_7));
assertTrue(filter.filter(TEST_STR_5));
assertTrue(filter.filter(TEST_STR_6));
filter = MqttTopicFilterFactory.toFilter("Sensor/Temperature#");
assertFalse(filter.filter(TEST_STR_2));
}
}

Loading…
Cancel
Save