summaryrefslogtreecommitdiff
path: root/same/src/main/java/com/orbekk/same/Same.java
diff options
context:
space:
mode:
Diffstat (limited to 'same/src/main/java/com/orbekk/same/Same.java')
-rw-r--r--same/src/main/java/com/orbekk/same/Same.java32
1 files changed, 31 insertions, 1 deletions
diff --git a/same/src/main/java/com/orbekk/same/Same.java b/same/src/main/java/com/orbekk/same/Same.java
index b70c7aa..d69061f 100644
--- a/same/src/main/java/com/orbekk/same/Same.java
+++ b/same/src/main/java/com/orbekk/same/Same.java
@@ -1,5 +1,6 @@
package com.orbekk.same;
+import java.util.ArrayList;
import java.util.List;
import org.codehaus.jackson.type.TypeReference;
@@ -9,8 +10,27 @@ import org.slf4j.LoggerFactory;
public class Same implements SameInterface {
private Logger logger = LoggerFactory.getLogger(getClass());
private ClientServiceImpl client;
+ private StateChangedProxy stateChangedProxy = new StateChangedProxy();
- public Same(ClientServiceImpl client) {
+ private class StateChangedProxy implements StateChangedListener {
+ public List<StateChangedListener> listeners =
+ new ArrayList<StateChangedListener>();
+
+ @Override
+ public void stateChanged(String id, String data) {
+ for (StateChangedListener listener : listeners) {
+ listener.stateChanged(id, data);
+ }
+ }
+ }
+
+ public static Same createSame(ClientServiceImpl client) {
+ Same same = new Same(client);
+ client.setStateChangedListener(same.stateChangedProxy);
+ return same;
+ }
+
+ Same(ClientServiceImpl client) {
this.client = client;
}
@@ -39,4 +59,14 @@ public class Same implements SameInterface {
throw new RuntimeException("Not implemented.");
}
+ @Override
+ public void addStateChangedListener(StateChangedListener listener) {
+ stateChangedProxy.listeners.add(listener);
+ }
+
+ @Override
+ public void removeStateChangedListener(StateChangedListener listener) {
+ stateChangedProxy.listeners.remove(listener);
+ }
+
}