X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.server%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fservices%2FEventPublisherAspect.java;h=2f4923c4644c4743980ca00a241094b7fb53a330;hb=5fcacdb600e4c9e765cb93b46132932662832c1b;hp=ea0ce12c3614d02b5987ff70d89a5fdf54995b0d;hpb=87efa1cdb79eeaf3f203cc9bf4f3d9f8d0a299f8;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/EventPublisherAspect.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/EventPublisherAspect.java index ea0ce12c3..2f4923c46 100644 --- a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/EventPublisherAspect.java +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/EventPublisherAspect.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.argeo.slc.services; import java.util.Iterator; @@ -5,9 +21,11 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.slc.core.runtime.AbstractAgent; +import org.argeo.slc.msg.MsgConstants; import org.argeo.slc.msg.event.SlcEvent; import org.argeo.slc.msg.event.SlcEventPublisher; +import org.argeo.slc.msg.process.SlcExecutionStatusRequest; +import org.argeo.slc.process.SlcExecution; import org.argeo.slc.runtime.SlcAgentDescriptor; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; @@ -15,29 +33,55 @@ import org.aspectj.lang.annotation.Aspect; @Aspect public class EventPublisherAspect { + public final static String EVT_AGENT_REGISTERED = "agentRegistered"; + public final static String EVT_AGENT_UNREGISTERED = "agentUnregistered"; + public final static String EVT_NEW_SLC_EXECUTION = "newSlcExecution"; + public final static String EVT_UPDATE_SLC_EXECUTION_STATUS = "updateSlcExecutionStatus"; + private final static Log log = LogFactory .getLog(EventPublisherAspect.class); private List eventPublishers; - @After("execution(void org.argeo.slc.services.runtime.AgentService.register(..))") + @After("execution(void org.argeo.slc.services.AgentService.register(..))") public void registerAgent(JoinPoint jp) throws Throwable { SlcAgentDescriptor agentDescriptor = (SlcAgentDescriptor) jp.getArgs()[0]; - SlcEvent event = new SlcEvent("agentRegistered"); - event.getHeaders().put(AbstractAgent.PROPERTY_SLC_AGENT_ID, + SlcEvent event = new SlcEvent(EVT_AGENT_REGISTERED); + event.getHeaders().put(MsgConstants.PROPERTY_SLC_AGENT_ID, agentDescriptor.getUuid()); publishEvent(event); } - @After("execution(void org.argeo.slc.services.runtime.AgentService.unregister(..))") + @After("execution(void org.argeo.slc.services.AgentService.unregister(..))") public void unregisterAgent(JoinPoint jp) throws Throwable { SlcAgentDescriptor agentDescriptor = (SlcAgentDescriptor) jp.getArgs()[0]; - SlcEvent event = new SlcEvent("agentUnregistered"); - event.getHeaders().put(AbstractAgent.PROPERTY_SLC_AGENT_ID, + SlcEvent event = new SlcEvent(EVT_AGENT_UNREGISTERED); + event.getHeaders().put(MsgConstants.PROPERTY_SLC_AGENT_ID, agentDescriptor.getUuid()); publishEvent(event); } + @After("execution(void org.argeo.slc.services.SlcExecutionService.newExecution(..))") + public void newSlcExecution(JoinPoint jp) throws Throwable { + SlcExecution slcExecution = (SlcExecution) jp.getArgs()[0]; + SlcEvent event = new SlcEvent(EVT_NEW_SLC_EXECUTION); + event.getHeaders().put(MsgConstants.PROPERTY_SLC_EXECUTION_ID, + slcExecution.getUuid()); + publishEvent(event); + } + + @After("execution(void org.argeo.slc.services.SlcExecutionService.updateStatus(..))") + public void updateSlcExecutionStatus(JoinPoint jp) throws Throwable { + SlcExecutionStatusRequest msg = (SlcExecutionStatusRequest) jp + .getArgs()[0]; + SlcEvent event = new SlcEvent(EVT_UPDATE_SLC_EXECUTION_STATUS); + event.getHeaders().put(MsgConstants.PROPERTY_SLC_EXECUTION_ID, + msg.getSlcExecutionUuid()); + event.getHeaders().put(MsgConstants.PROPERTY_SLC_EXECUTION_STATUS, + msg.getNewStatus()); + publishEvent(event); + } + public void setEventPublishers(List eventPublishers) { this.eventPublishers = eventPublishers; }