package
org.globus.progtutorial.services.core.core_sd.impl;
import org.codehaus.aspectwerkz.xmldef.advice.AroundAdvice;
import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
import org.codehaus.aspectwerkz.joinpoint.MethodJoinPoint;
import java.io.*;
import org.globus.progtutorial.stubs.MathService_sd_notif.MathPortType;
import
org.globus.progtutorial.stubs.MathService_sd_notif.servicedata.MathDataType;
import org.globus.ogsa.NotificationProvider;
import javax.xml.namespace.QName;
import org.globus.ogsa.GridServiceBase;
import org.globus.ogsa.ServiceData;
public class NotifyAdvice extends AroundAdvice {
private GridServiceBase base;
private ServiceData mathDataSDE;
public NotifyAdvice() {
super();
}
public Object execute(final JoinPoint joinPoint) throws
Throwable {
MethodJoinPoint jp = (MethodJoinPoint)joinPoint;
final Object result =
joinPoint.proceed();
if(jp.getMethodName().compareTo("preCreate")==0){
base = (GridServiceBase)(jp.getParameters()[0]);
QName qname =
(base.getServiceDataSet()).checkMatching(new QName("", "MathData"));
mathDataSDE =
(base.getServiceDataSet()).get(qname);
}
else{
mathDataSDE.notifyChange();
}
return result;
}
}