package nl.tno.sensorstorm.gracefullshutdown;
import java.io.Serializable;
import java.util.List;
import nl.tno.sensorstorm.api.annotation.MetaParticleHandlerDeclaration;
import nl.tno.sensorstorm.api.particles.MetaParticle;
import nl.tno.sensorstorm.api.particles.Particle;
import nl.tno.sensorstorm.api.processing.MetaParticleHandler;
import nl.tno.sensorstorm.api.processing.Operation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Handler to process the gracefullShutdown meat particle. It will inform all
* registered operations. Registration goes via the @OperationDeclaration
* annotation, field metaParticleHandlers.
*
* @author waaijbdvd
*
*/
@MetaParticleHandlerDeclaration(metaParticle = GracefullShutdownParticle.class)
public class GracefulShutdownParticleHandler implements MetaParticleHandler,
Serializable {
protected Logger logger = LoggerFactory
.getLogger(GracefulShutdownParticleHandler.class);
private static final long serialVersionUID = 424494087672718473L;
private GracefullShutdownInterface graceFullShutdownOperation;
@Override
public void init(Operation operation) {
if (operation instanceof GracefullShutdownInterface) {
graceFullShutdownOperation = (GracefullShutdownInterface) operation;
} else {
logger.error("Operation "
+ operation.getClass().getName()
+ " can not be connected to the gracefullShutdown. It does not implements the GracefullShutdownInterface");
}
}
@Override
public List<Particle> handleMetaParticle(MetaParticle metaParticle) {
if (metaParticle instanceof GracefullShutdownParticle) {
graceFullShutdownOperation.gracefullShutdown();
}
return null;
}
}