import mir.log.LoggerWrapper;
import mir.producer.Producer;
import mir.producer.ProducerFactory;
+import mir.producer.ProductionContext;
import mir.util.GeneratorFormatAdapters;
import mir.util.StringRoutines;
private String factoryName;
private String verb;
private Producer producer;
+ private ProductionContext productionContext;
public ProducerJob(String aFactory, String aVerb) {
factoryName = aFactory;
}
public void abort() {
- if (producer!=null) {
- producer.abort();
+ if (producer!=null && productionContext!=null) {
+ producer.abort(productionContext);
}
}
public boolean run() {
- ProducerFactory factory;
+ final ProducerFactory factory;
long startTime;
long endTime;
boolean result = false;
- Map startingMap = new HashMap();
+ final Map startingMap = new HashMap();
Map mirMap = new HashMap();
mirMap.put("producer", factoryName);
mirMap.put("verb", verb);
synchronized(factory) {
producer = factory.makeProducer(verb, startingMap);
}
+
if (producer!=null) {
- result = producer.produce(logger);
+ try {
+ MirGlobal.localizer().producers().beforeProducerTask(factoryName, verb);
+ }
+ catch (Throwable t) {
+ logger.warn("Misbehaving beforeProducerTask",t );
+ }
+
+ productionContext = new ProductionContext() {
+ public ProducerFactory getFactory() {
+ return factory;
+ }
+
+ public Producer getProducer() {
+ return producer;
+ }
+
+ public String getVerb() {
+ return verb;
+ }
+
+ public LoggerWrapper getLogger() {
+ return logger;
+ }
+
+ public Map getValueSet() {
+ return startingMap;
+ }
+ };
+ result = producer.execute(productionContext);
+ try {
+ MirGlobal.localizer().producers().afterProducerTask(factoryName, verb);
+ }
+ catch (Throwable t) {
+ logger.warn("Misbehaving afterProducerTask", t);
+ }
}
}
}