1 package org
.argeo
.slc
.web
.mvc
;
3 import org
.apache
.commons
.logging
.Log
;
4 import org
.apache
.commons
.logging
.LogFactory
;
5 import org
.argeo
.slc
.msg
.ExecutionAnswer
;
6 import org
.argeo
.slc
.msg
.event
.SlcEvent
;
7 import org
.argeo
.slc
.msg
.event
.SlcEventListener
;
8 import org
.argeo
.slc
.msg
.event
.SlcEventListenerDescriptor
;
9 import org
.argeo
.slc
.msg
.event
.SlcEventListenerRegister
;
10 import org
.springframework
.stereotype
.Controller
;
11 import org
.springframework
.ui
.Model
;
12 import org
.springframework
.web
.bind
.annotation
.RequestMapping
;
13 import org
.springframework
.web
.bind
.annotation
.RequestParam
;
16 public class EventController
{
18 private final static Log log
= LogFactory
.getLog(EventController
.class);
20 public final static String KEY_ANSWER
= "__answer";
21 private Long defaultTimeout
= 10000l;
24 private SlcEventListenerRegister eventListenerRegister
;
25 private SlcEventListener eventListener
= null;
27 public EventController() {
28 if (log
.isDebugEnabled())
29 log
.debug("In EventController Constructor");
34 @RequestMapping("/addEventListener.service")
35 public String
addEventListener(
36 @RequestParam(SlcEvent
.EVENT_TYPE
) String eventType
,
37 @RequestParam(value
=SlcEvent
.EVENT_FILTER
, required
=false) String eventFilter
, Model model
) {
40 .addEventListenerDescriptor(new SlcEventListenerDescriptor(
41 eventType
, eventFilter
));
42 if (log
.isTraceEnabled())
43 log
.trace("Registered listener on register "
44 + eventListenerRegister
.getId() + " for type " + eventType
45 + ", filter=" + eventFilter
);
46 model
.addAttribute(KEY_ANSWER
, ExecutionAnswer
47 .ok("Execution completed properly"));
52 @RequestMapping("/removeEventListener.service")
53 public String
removeEventListener(
54 @RequestParam(SlcEvent
.EVENT_TYPE
) String eventType
,
55 @RequestParam(value
=SlcEvent
.EVENT_FILTER
, required
=false) String eventFilter
, Model model
) {
58 .removeEventListenerDescriptor(new SlcEventListenerDescriptor(
59 eventType
, eventFilter
));
60 if (log
.isTraceEnabled())
61 log
.trace("Removed listener from register "
62 + eventListenerRegister
.getId() + " for type " + eventType
63 + ", filter=" + eventFilter
);
64 model
.addAttribute(KEY_ANSWER
, ExecutionAnswer
65 .ok("Execution completed properly"));
69 @RequestMapping("/pollEvent.service")
70 public String
pollEvent(@RequestParam("timeout") String timeoutStr
,
73 if (timeoutStr
!= null)
74 timeout
= Long
.parseLong(timeoutStr
);
76 timeout
= defaultTimeout
;
78 SlcEvent event
= eventListener
.listen(eventListenerRegister
.getId(),
79 eventListenerRegister
.getDescriptorsCopy(), timeout
);
81 model
.addAttribute("event", event
);
82 if (log
.isTraceEnabled())
83 log
.debug("Received event: "
84 + event
.getHeaders().get(SlcEvent
.EVENT_TYPE
));
86 model
.addAttribute(KEY_ANSWER
, ExecutionAnswer
87 .ok("Execution completed properly"));
91 public void setEventListenerRegister(
92 SlcEventListenerRegister eventListenerRegister
) {
93 this.eventListenerRegister
= eventListenerRegister
;
96 public void setDefaultTimeout(Long defaultTimeout
) {
97 this.defaultTimeout
= defaultTimeout
;
100 public void setEventListener(SlcEventListener eventListener
) {
101 this.eventListener
= eventListener
;