1 package org
.argeo
.slc
.web
.mvc
;
3 import java
.io
.Serializable
;
4 import java
.util
.ArrayList
;
6 import java
.util
.Vector
;
8 import org
.apache
.commons
.logging
.Log
;
9 import org
.apache
.commons
.logging
.LogFactory
;
10 import org
.argeo
.slc
.msg
.event
.SlcEventListenerDescriptor
;
11 import org
.argeo
.slc
.msg
.event
.SlcEventListenerRegister
;
12 import org
.springframework
.web
.context
.request
.RequestContextHolder
;
14 public class WebSlcEventListenerRegister
implements SlcEventListenerRegister
,
16 private final static Log log
= LogFactory
17 .getLog(WebSlcEventListenerRegister
.class);
18 public final static String ATTR_EVENT_LISTENER
= "slcEventListener";
20 static final long serialVersionUID
= 1l;
22 //private String clientId = UUID.randomUUID().toString();
25 private List
<SlcEventListenerDescriptor
> descriptors
= new Vector
<SlcEventListenerDescriptor
>();
27 public synchronized void addEventListenerDescriptor(
28 SlcEventListenerDescriptor eventListenerDescriptor
) {
29 if (descriptors
.contains(eventListenerDescriptor
))
30 descriptors
.remove(eventListenerDescriptor
);
31 descriptors
.add(eventListenerDescriptor
);
34 public synchronized void removeEventListenerDescriptor(
35 SlcEventListenerDescriptor eventListenerDescriptor
) {
36 descriptors
.remove(eventListenerDescriptor
);
39 public synchronized List
<SlcEventListenerDescriptor
> getDescriptorsCopy() {
40 return new ArrayList
<SlcEventListenerDescriptor
>(descriptors
);
43 // public SlcEvent listen(SlcEventListener eventListener, Long timeout) {
44 // return eventListener.listen(clientId, getDescriptorsCopy(), timeout);
47 // public void init() {
48 // clientId = getSessionId();
51 // if (log.isDebugEnabled())
52 // log.debug("Initialized web event listener " + clientId);
55 // public void close() {
57 // if (log.isDebugEnabled())
58 // log.debug("Closed web event listener " + clientId);
61 // protected void checkClientId() {
62 // String sessionId = getSessionId();
63 // if (clientId == null || !clientId.equals(sessionId))
64 // throw new SlcException("Client id " + clientId
65 // + " not consistent with web session id " + sessionId);
68 // protected String getSessionId() {
69 // return RequestContextHolder.currentRequestAttributes().getSessionId();
72 public String
getId() {
73 return RequestContextHolder
.currentRequestAttributes().getSessionId();