package pl.net.bluesoft.rnd.pt.ext.emailcapture;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import pl.net.bluesoft.rnd.processtool.ProcessToolContext;
import pl.net.bluesoft.rnd.processtool.ProcessToolContextCallback;
import pl.net.bluesoft.rnd.processtool.plugins.ProcessToolRegistry;
import pl.net.bluesoft.rnd.pt.ext.emailcapture.model.EmailCheckerConfiguration;
import pl.net.bluesoft.rnd.pt.ext.emailcapture.model.EmailCheckerRuleConfiguration;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author tlipski@bluesoft.net.pl
*/
public class Activator implements BundleActivator {
boolean run = true;
private final Logger logger = Logger.getLogger(Activator.class.getName());
@Override
public void start(final BundleContext context) throws Exception {
final ProcessToolRegistry toolRegistry = getRegistry(context);
toolRegistry.registerModelExtension(EmailCheckerConfiguration.class);
toolRegistry.registerModelExtension(EmailCheckerRuleConfiguration.class);
toolRegistry.commitModelExtensions();
new Thread(new Runnable() {
@Override
public void run() {
run = true;
while (run) {
try {
Thread.sleep(10000);
try {
toolRegistry.withProcessToolContext(new ProcessToolContextCallback() {
@Override
public void withContext(ProcessToolContext ctx) {
ProcessToolContext.Util.setThreadProcessToolContext(ctx);
try {
new EmailChecker(ctx).run();
}
finally {
ProcessToolContext.Util.removeThreadProcessToolContext();
}
}
});
}
catch (Exception e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
} catch (InterruptedException e) {
logger.log(Level.INFO, e.getMessage(), e);
}
}
}
}).start();
}
@Override
public void stop(BundleContext context) throws Exception {
run = false;
}
private ProcessToolRegistry getRegistry(BundleContext context) {
ServiceReference ref = context.getServiceReference(ProcessToolRegistry.class.getName());
return (ProcessToolRegistry) context.getService(ref);
}
}