package nl.ipo.cds.executor.config;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import nl.idgis.commons.jobexecutor.JobExecutor;
import nl.ipo.cds.executor.JobExecuterMBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jmx.export.MBeanExporter;
import org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource;
import org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler;
import org.springframework.jmx.export.metadata.JmxAttributeSource;
import org.springframework.jmx.support.RegistrationPolicy;
@Configuration
public class Jmx {
@Configuration
public static class MBeans {
@Bean
@Inject
public JobExecuterMBean jobExecuterMBean (final JobExecutor jobExecutor) {
final JobExecuterMBean mbean = new JobExecuterMBean (jobExecutor);
return mbean;
}
@Bean
@Inject
public MetadataMBeanInfoAssembler assembler (final JmxAttributeSource attributeSource) {
final MetadataMBeanInfoAssembler assembler = new MetadataMBeanInfoAssembler ();
assembler.setAttributeSource (attributeSource);
return assembler;
}
@Bean
public AnnotationJmxAttributeSource jmxAttributeSource () {
return new AnnotationJmxAttributeSource ();
}
}
@Bean
@Inject
public MBeanExporter exporter (final JobExecuterMBean jobExecuterMBean, final MetadataMBeanInfoAssembler assembler) {
final MBeanExporter exporter = new MBeanExporter ();
final Map<String, Object> beans = new HashMap<String, Object> ();
beans.put ("nl.ipo.cds.etl:type=JobExecuter", jobExecuterMBean);
exporter.setBeans (beans);
exporter.setAssembler (assembler);
exporter.setRegistrationPolicy(RegistrationPolicy.REPLACE_EXISTING);
return exporter;
}
}