package railo.runtime.monitor;
import java.io.IOException;
import railo.commons.io.SystemUtil;
import railo.runtime.config.ConfigServer;
import railo.runtime.config.ConfigWebFactory;
import railo.runtime.config.ConfigWebFactory.MonitorTemp;
public class ActionMonitorFatory {
public static ActionMonitorCollector getActionMonitorCollector() {
if(SystemUtil.getLoaderVersion()>4) return new ActionMonitorCollectorImpl();
return new ActionMonitorCollectorRefImpl();
}
public static ActionMonitorCollector getActionMonitorCollector(ConfigServer cs, ConfigWebFactory.MonitorTemp[] temps) throws IOException {
// try to load with interface
try{
ActionMonitorCollector collector = new ActionMonitorCollectorImpl();
addMonitors(collector,cs,temps);
return collector;
}
catch(Throwable t){t.printStackTrace();
ActionMonitorCollector collector = new ActionMonitorCollectorRefImpl();
addMonitors(collector,cs,temps);
return collector;
}
}
private static void addMonitors(ActionMonitorCollector collector, ConfigServer cs, MonitorTemp[] temps) throws IOException {
MonitorTemp temp;
for(int i=0;i<temps.length;i++){
temp=temps[i];
collector.addMonitor(cs, temp.obj, temp.name, temp.log);
}
}
}