Added tests suite used by Roger Light to check SubscriptionStore.matchTopics

This commit is contained in:
andrea
2013-11-06 13:37:23 +01:00
parent 2c18ee92c7
commit 49d1b2c948
2 changed files with 33 additions and 2 deletions
@@ -218,14 +218,19 @@ public class SubscriptionsStore {
/**
* Verify if the 2 topics matching respecting the rules of MQTT Appendix A
*/
//TODO reimplement with iterators or with queues
public static boolean matchTopics(String msgTopic, String subscriptionTopic) {
try {
List<Token> msgTokens = SubscriptionsStore.splitTopic(msgTopic);
List<Token> subscriptionTokens = SubscriptionsStore.splitTopic(subscriptionTopic);
int i = 0;
Token subToken = null;
for (; i< subscriptionTokens.size(); i++) {
Token subToken = subscriptionTokens.get(i);
subToken = subscriptionTokens.get(i);
if (subToken != Token.MULTI && subToken != Token.SINGLE) {
if (i >= msgTokens.size()) {
return false;
}
Token msgToken = msgTokens.get(i);
if (!msgToken.equals(subToken)) {
return false;
@@ -239,6 +244,10 @@ public class SubscriptionsStore {
}
}
}
//if last token was a SINGLE then treat it as an empty
if (subToken == Token.SINGLE && (i - msgTokens.size() == 1)) {
i--;
}
return i == msgTokens.size();
} catch (ParseException ex) {
LOG.error(null, ex);