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.StartingData;
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 java.time.LocalDateTime;
@ -44,8 +44,8 @@ class App {
final DataBus bus = DataBus.getInstance();
bus.subscribe(new StatusMember(1));
bus.subscribe(new StatusMember(2));
final CounterMember foo = new CounterMember("Foo");
final CounterMember bar = new CounterMember("Bar");
final MessageCollectorMember foo = new MessageCollectorMember("Foo");
final MessageCollectorMember bar = new MessageCollectorMember("Bar");
bus.subscribe(foo);
bus.publish(StartingData.of(LocalDateTime.now()));
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.data.MessageData;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
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)
*/
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;
public CounterMember(String name) {
private List<String> messages = new ArrayList<>();
public MessageCollectorMember(String name) {
this.name = name;
}
@ -53,5 +58,10 @@ public class CounterMember implements Member {
private void handleEvent(MessageData data) {
LOGGER.info(String.format("%s sees message %s", name, data.getMessage()));
messages.add(data.getMessage());
}
public List<String> getMessages() {
return Collections.unmodifiableList(messages);
}
}