001    package railo.runtime.monitor;
002    
003    import java.io.IOException;
004    
005    import railo.commons.io.SystemUtil;
006    import railo.runtime.config.ConfigServer;
007    import railo.runtime.config.ConfigWebFactory;
008    import railo.runtime.config.ConfigWebFactory.MonitorTemp;
009    
010    public class ActionMonitorFatory {
011            public static ActionMonitorCollector getActionMonitorCollector() {
012                    if(SystemUtil.getLoaderVersion()>4) return new ActionMonitorCollectorImpl();
013                    return new ActionMonitorCollectorRefImpl();
014            }
015    
016            public static ActionMonitorCollector getActionMonitorCollector(ConfigServer cs, ConfigWebFactory.MonitorTemp[] temps) throws IOException {
017                    // try to load with interface
018                    try{
019                            ActionMonitorCollector collector = new ActionMonitorCollectorImpl();
020                            addMonitors(collector,cs,temps);
021                            return collector;
022                    }
023                    catch(Throwable t){t.printStackTrace();
024                            ActionMonitorCollector collector = new ActionMonitorCollectorRefImpl();
025                            addMonitors(collector,cs,temps);
026                            return collector;
027                    }
028            }
029    
030            private static void addMonitors(ActionMonitorCollector collector, ConfigServer cs, MonitorTemp[] temps) throws IOException {
031                    MonitorTemp temp;
032                    for(int i=0;i<temps.length;i++){
033                            temp=temps[i];
034                            collector.addMonitor(cs, temp.obj, temp.name, temp.log);
035                    }
036            }
037    }