diff options
author | fmoga <fmoga@13f79535-47bb-0310-9956-ffa450edef68> | 2011-05-25 23:29:02 +0000 |
---|---|---|
committer | fmoga <fmoga@13f79535-47bb-0310-9956-ffa450edef68> | 2011-05-25 23:29:02 +0000 |
commit | efc177d4d56556854e507cea9d269ecb9e4dd36e (patch) | |
tree | f814126ac4345690b35416051c1445fe73ced2ae /sca-java-2.x/contrib/samples/learning-more/binding-comet/chat-webapp/src/main/java | |
parent | 5ecd0afe087b41d09f4733489b0b07712be3cb9e (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')
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()); + } +} |