1 package org
.argeo
.slc
.services
;
3 import java
.util
.Iterator
;
6 import org
.apache
.commons
.logging
.Log
;
7 import org
.apache
.commons
.logging
.LogFactory
;
8 import org
.argeo
.slc
.msg
.MsgConstants
;
9 import org
.argeo
.slc
.msg
.event
.SlcEvent
;
10 import org
.argeo
.slc
.msg
.event
.SlcEventPublisher
;
11 import org
.argeo
.slc
.msg
.process
.SlcExecutionStatusRequest
;
12 import org
.argeo
.slc
.process
.SlcExecution
;
13 import org
.argeo
.slc
.runtime
.SlcAgentDescriptor
;
14 import org
.aspectj
.lang
.JoinPoint
;
15 import org
.aspectj
.lang
.annotation
.After
;
16 import org
.aspectj
.lang
.annotation
.Aspect
;
19 public class EventPublisherAspect
{
20 public final static String EVT_AGENT_REGISTERED
= "agentRegistered";
21 public final static String EVT_AGENT_UNREGISTERED
= "agentUnregistered";
22 public final static String EVT_NEW_SLC_EXECUTION
= "newSlcExecution";
23 public final static String EVT_UPDATE_SLC_EXECUTION_STATUS
= "updateSlcExecutionStatus";
25 private final static Log log
= LogFactory
26 .getLog(EventPublisherAspect
.class);
28 private List
<SlcEventPublisher
> eventPublishers
;
30 @After("execution(void org.argeo.slc.services.AgentService.register(..))")
31 public void registerAgent(JoinPoint jp
) throws Throwable
{
32 SlcAgentDescriptor agentDescriptor
= (SlcAgentDescriptor
) jp
.getArgs()[0];
33 SlcEvent event
= new SlcEvent(EVT_AGENT_REGISTERED
);
34 event
.getHeaders().put(MsgConstants
.PROPERTY_SLC_AGENT_ID
,
35 agentDescriptor
.getUuid());
39 @After("execution(void org.argeo.slc.services.AgentService.unregister(..))")
40 public void unregisterAgent(JoinPoint jp
) throws Throwable
{
41 SlcAgentDescriptor agentDescriptor
= (SlcAgentDescriptor
) jp
.getArgs()[0];
42 SlcEvent event
= new SlcEvent(EVT_AGENT_UNREGISTERED
);
43 event
.getHeaders().put(MsgConstants
.PROPERTY_SLC_AGENT_ID
,
44 agentDescriptor
.getUuid());
48 @After("execution(void org.argeo.slc.services.SlcExecutionService.newExecution(..))")
49 public void newSlcExecution(JoinPoint jp
) throws Throwable
{
50 SlcExecution slcExecution
= (SlcExecution
) jp
.getArgs()[0];
51 SlcEvent event
= new SlcEvent(EVT_NEW_SLC_EXECUTION
);
52 event
.getHeaders().put(MsgConstants
.PROPERTY_SLC_EXECUTION_ID
,
53 slcExecution
.getUuid());
57 @After("execution(void org.argeo.slc.services.SlcExecutionService.updateStatus(..))")
58 public void updateSlcExecutionStatus(JoinPoint jp
) throws Throwable
{
59 SlcExecutionStatusRequest msg
= (SlcExecutionStatusRequest
) jp
61 SlcEvent event
= new SlcEvent(EVT_UPDATE_SLC_EXECUTION_STATUS
);
62 event
.getHeaders().put(MsgConstants
.PROPERTY_SLC_EXECUTION_ID
,
63 msg
.getSlcExecutionUuid());
64 event
.getHeaders().put(MsgConstants
.PROPERTY_SLC_EXECUTION_STATUS
,
69 public void setEventPublishers(List
<SlcEventPublisher
> eventPublishers
) {
70 this.eventPublishers
= eventPublishers
;
73 protected void publishEvent(SlcEvent event
) {
75 for (Iterator
<SlcEventPublisher
> it
= eventPublishers
.iterator(); it
77 SlcEventPublisher eventPublisher
= it
.next();
78 if (log
.isTraceEnabled())
79 log
.debug("Publish event: "
80 + event
.getHeaders().get(SlcEvent
.EVENT_TYPE
) + " to "
82 eventPublisher
.publish(event
);