Counter doesn't count anything. Added ability to collect the messages

from the MessageData that it receives.
This commit is contained in:
Paul Campbell 2017-04-01 19:04:28 +01:00
parent b7a6a018e0
commit 8b0c14cae0
2 changed files with 17 additions and 7 deletions

View File

@ -26,7 +26,7 @@ package com.iluwatar.databus;
import com.iluwatar.databus.data.MessageData; import com.iluwatar.databus.data.MessageData;
import com.iluwatar.databus.data.StartingData; import com.iluwatar.databus.data.StartingData;
import com.iluwatar.databus.data.StoppingData; import com.iluwatar.databus.data.StoppingData;
import com.iluwatar.databus.members.CounterMember; import com.iluwatar.databus.members.MessageCollectorMember;
import com.iluwatar.databus.members.StatusMember; import com.iluwatar.databus.members.StatusMember;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -44,8 +44,8 @@ class App {
final DataBus bus = DataBus.getInstance(); final DataBus bus = DataBus.getInstance();
bus.subscribe(new StatusMember(1)); bus.subscribe(new StatusMember(1));
bus.subscribe(new StatusMember(2)); bus.subscribe(new StatusMember(2));
final CounterMember foo = new CounterMember("Foo"); final MessageCollectorMember foo = new MessageCollectorMember("Foo");
final CounterMember bar = new CounterMember("Bar"); final MessageCollectorMember bar = new MessageCollectorMember("Bar");
bus.subscribe(foo); bus.subscribe(foo);
bus.publish(StartingData.of(LocalDateTime.now())); bus.publish(StartingData.of(LocalDateTime.now()));
bus.publish(MessageData.of("Only Foo should see this")); bus.publish(MessageData.of("Only Foo should see this"));

View File

@ -27,20 +27,25 @@ import com.iluwatar.databus.DataType;
import com.iluwatar.databus.Member; import com.iluwatar.databus.Member;
import com.iluwatar.databus.data.MessageData; import com.iluwatar.databus.data.MessageData;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
/** /**
* Receiver of Data-Bus events. * Receiver of Data-Bus events that collects the messages from each {@link MessageData}.
* *
* @author Paul Campbell (pcampbell@kemitix.net) * @author Paul Campbell (pcampbell@kemitix.net)
*/ */
public class CounterMember implements Member { public class MessageCollectorMember implements Member {
private static final Logger LOGGER = Logger.getLogger(CounterMember.class.getName()); private static final Logger LOGGER = Logger.getLogger(MessageCollectorMember.class.getName());
private final String name; private final String name;
public CounterMember(String name) { private List<String> messages = new ArrayList<>();
public MessageCollectorMember(String name) {
this.name = name; this.name = name;
} }
@ -53,5 +58,10 @@ public class CounterMember implements Member {
private void handleEvent(MessageData data) { private void handleEvent(MessageData data) {
LOGGER.info(String.format("%s sees message %s", name, data.getMessage())); LOGGER.info(String.format("%s sees message %s", name, data.getMessage()));
messages.add(data.getMessage());
}
public List<String> getMessages() {
return Collections.unmodifiableList(messages);
} }
} }