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
.core
.runtime
.AbstractAgent
;
9 import org
.argeo
.slc
.msg
.event
.SlcEvent
;
10 import org
.argeo
.slc
.msg
.event
.SlcEventPublisher
;
11 import org
.argeo
.slc
.runtime
.SlcAgentDescriptor
;
12 import org
.aspectj
.lang
.JoinPoint
;
13 import org
.aspectj
.lang
.annotation
.After
;
14 import org
.aspectj
.lang
.annotation
.Aspect
;
17 public class EventPublisherAspect
{
18 private final static Log log
= LogFactory
19 .getLog(EventPublisherAspect
.class);
21 private List
<SlcEventPublisher
> eventPublishers
;
23 @After("execution(void org.argeo.slc.services.runtime.AgentService.register(..))")
24 public void registerAgent(JoinPoint jp
) throws Throwable
{
25 SlcAgentDescriptor agentDescriptor
= (SlcAgentDescriptor
) jp
.getArgs()[0];
26 SlcEvent event
= new SlcEvent("agentRegistered");
27 event
.getHeaders().put(AbstractAgent
.PROPERTY_SLC_AGENT_ID
,
28 agentDescriptor
.getUuid());
32 @After("execution(void org.argeo.slc.services.runtime.AgentService.unregister(..))")
33 public void unregisterAgent(JoinPoint jp
) throws Throwable
{
34 SlcAgentDescriptor agentDescriptor
= (SlcAgentDescriptor
) jp
.getArgs()[0];
35 SlcEvent event
= new SlcEvent("agentUnregistered");
36 event
.getHeaders().put(AbstractAgent
.PROPERTY_SLC_AGENT_ID
,
37 agentDescriptor
.getUuid());
41 public void setEventPublishers(List
<SlcEventPublisher
> eventPublishers
) {
42 this.eventPublishers
= eventPublishers
;
45 protected void publishEvent(SlcEvent event
) {
47 for (Iterator
<SlcEventPublisher
> it
= eventPublishers
.iterator(); it
49 SlcEventPublisher eventPublisher
= it
.next();
50 if (log
.isTraceEnabled())
51 log
.debug("Publish event: "
52 + event
.getHeaders().get(SlcEvent
.EVENT_TYPE
) + " to "
54 eventPublisher
.publish(event
);