From fd7db966ff282ecd293d8946bab5955e2d028777 Mon Sep 17 00:00:00 2001 From: "R. Tyler Croy" Date: Wed, 2 Sep 2015 09:30:17 -0700 Subject: [PATCH] Use the appropriate pattern when doing a multipass with wildcards Fixes #12 --- .../groovy/offtopic/OfftopicClient.groovy | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/groovy/offtopic/OfftopicClient.groovy b/src/main/groovy/offtopic/OfftopicClient.groovy index 2766263..00a658c 100644 --- a/src/main/groovy/offtopic/OfftopicClient.groovy +++ b/src/main/groovy/offtopic/OfftopicClient.groovy @@ -8,24 +8,24 @@ import groovy.util.logging.Slf4j */ @Slf4j class OfftopicClient { - public int clientId = 0 + int clientId = 0 - private Closure messageCallback = null - private String topicsPattern = null - private ArrayList subscribers = null - private Configuration config = null + private Closure messageCallback + private String topicsPattern + private List subscribers + private Configuration config - public OfftopicClient(Configuration configuration) { + OfftopicClient(Configuration configuration) { this.clientId = new Random().nextInt() this.config = configuration this.subscribers = new ArrayList() - } + } - public ArrayList getSubscribers() { + List getSubscribers() { return this.subscribers } - public void createSubscribersFor(String topicsPattern) { + void createSubscribersFor(String topicsPattern) { topicsFrom(topicsPattern).each { topic -> if (topic.length() == 0) { return @@ -39,11 +39,11 @@ class OfftopicClient { } } - public void setOnMessageCallback(Closure c) { + void setOnMessageCallback(Closure c) { this.messageCallback = c } - public void startSubscribers() { + void startSubscribers() { this.subscribers.each { subscriber -> Thread runner = new Thread({ subscriber.connect() @@ -55,20 +55,21 @@ class OfftopicClient { } } - public void shutdown() { + void shutdown() { this.subscribers.each { subscriber -> subscriber.shutdown() } } - public ArrayList topicsFrom(String topicsPattern) { - ArrayList topics = new ArrayList() + List topicsFrom(String topicsPattern) { + List topics = [] topicsPattern.split("\\+").each { topic -> if (topic.length() == 0) { return } if (topic.indexOf('*') >= 0) { - topics.addAll(lookupTopicsFor(topicsPattern)) + /* in this case our `topic` is actually a topic pattern */ + topics.addAll(lookupTopicsFor(topic)) } else { topics.add(topic) @@ -77,8 +78,8 @@ class OfftopicClient { return topics } - private ArrayList lookupTopicsFor(String topicPattern) { - ArrayList topics = new ArrayList() + private List lookupTopicsFor(String topicPattern) { + List topics = [] KafkaService.fetchTopics().each { topic -> if (topic =~ topicPattern) { topics.add(topic)