]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ee/src/org/argeo/cms/websocket/server/EventEndpoint.java
Clarify system roles
[lgpl/argeo-commons.git] / org.argeo.cms.ee / src / org / argeo / cms / websocket / server / EventEndpoint.java
1 package org.argeo.cms.websocket.server;
2
3 import java.io.IOException;
4 import java.util.Map;
5
6 import javax.websocket.OnClose;
7 import javax.websocket.OnOpen;
8 import javax.websocket.RemoteEndpoint;
9 import javax.websocket.Session;
10 import javax.websocket.server.PathParam;
11 import javax.websocket.server.ServerEndpoint;
12
13 import org.argeo.api.cms.CmsEventBus;
14 import org.argeo.api.cms.CmsEventSubscriber;
15 import org.osgi.framework.BundleContext;
16 import org.osgi.framework.FrameworkUtil;
17
18 @ServerEndpoint(value = "/event/{topic}", configurator = CmsWebSocketConfigurator.class)
19 public class EventEndpoint implements CmsEventSubscriber {
20 private BundleContext bc = FrameworkUtil.getBundle(TestEndpoint.class).getBundleContext();
21
22 private RemoteEndpoint.Basic remote;
23 private CmsEventBus cmsEventBus;
24
25 // private String topic = "cms";
26
27 @OnOpen
28 public void onOpen(Session session, @PathParam("topic") String topic) {
29 if (bc != null) {
30 cmsEventBus = bc.getService(bc.getServiceReference(CmsEventBus.class));
31 cmsEventBus.addEventSubscriber(topic, this);
32 }
33 remote = session.getBasicRemote();
34
35 }
36
37 @OnClose
38 public void onClose(@PathParam("topic") String topic) {
39 cmsEventBus.removeEventSubscriber(topic, this);
40 }
41
42 @Override
43 public void onEvent(String topic, Map<String, Object> properties) {
44 try {
45 remote.sendText(topic + ": " + properties);
46 } catch (IOException e) {
47 throw new IllegalStateException(e);
48 }
49 }
50 }