summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java
diff options
context:
space:
mode:
authorfmoga <fmoga@13f79535-47bb-0310-9956-ffa450edef68>2011-05-25 23:29:02 +0000
committerfmoga <fmoga@13f79535-47bb-0310-9956-ffa450edef68>2011-05-25 23:29:02 +0000
commitefc177d4d56556854e507cea9d269ecb9e4dd36e (patch)
treef814126ac4345690b35416051c1445fe73ced2ae /sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java
parent5ecd0afe087b41d09f4733489b0b07712be3cb9e (diff)
Add chat sample for binding.comet
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1127726 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java')
-rw-r--r--sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/ChatService.java15
-rw-r--r--sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/ChatServiceImpl.java36
2 files changed, 51 insertions, 0 deletions
diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/ChatService.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/ChatService.java
new file mode 100644
index 0000000000..4c35e1c5e3
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/ChatService.java
@@ -0,0 +1,15 @@
+package org.apache.tuscany.sca.sample.comet;
+
+import org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback;
+import org.oasisopen.sca.annotation.Callback;
+import org.oasisopen.sca.annotation.Remotable;
+
+@Callback(CometCallback.class)
+@Remotable
+public interface ChatService {
+
+ void register();
+
+ void postMessage(String user, String message);
+
+}
diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/ChatServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/ChatServiceImpl.java
new file mode 100644
index 0000000000..b58de00035
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/ChatServiceImpl.java
@@ -0,0 +1,36 @@
+package org.apache.tuscany.sca.sample.comet;
+
+import java.util.ArrayList;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback;
+import org.apache.tuscany.sca.binding.comet.runtime.callback.Status;
+import org.oasisopen.sca.ComponentContext;
+import org.oasisopen.sca.annotation.Context;
+import org.oasisopen.sca.annotation.Scope;
+import org.oasisopen.sca.annotation.Service;
+
+@Service(ChatService.class)
+@Scope("COMPOSITE")
+public class ChatServiceImpl implements ChatService {
+
+ @Context
+ protected ComponentContext context;
+
+ private CopyOnWriteArrayList<CometCallback> clients = new CopyOnWriteArrayList<CometCallback>();
+
+ @Override
+ public void postMessage(String user, String message) {
+ for (CometCallback callback : new ArrayList<CometCallback>(clients)) {
+ Status status = callback.sendMessage(user + ": " + message);
+ if (status == Status.CLIENT_DISCONNECTED) {
+ clients.remove(callback);
+ }
+ }
+ }
+
+ @Override
+ public void register() {
+ clients.add(context.getRequestContext().<CometCallback> getCallback());
+ }
+}