/sources/solrmeter/src/main/java/com/plugtree/solrmeter/SolrMeterMain.java
http://solrmeter.googlecode.com/ · Java · 117 lines · 85 code · 12 blank · 20 comment · 7 complexity · 86fabb60851c913b23c9532f73844e97 MD5 · raw file
- /**
- * Copyright Plugtree LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.plugtree.solrmeter;
-
- import com.google.inject.Guice;
- import com.google.inject.Injector;
- import com.google.inject.Module;
- import com.plugtree.solrmeter.controller.StatisticsRepository;
- import com.plugtree.solrmeter.runMode.SolrMeterRunMode;
- import com.plugtree.solrmeter.model.*;
- import com.plugtree.solrmeter.view.*;
- import com.plugtree.stressTestScope.StressTestScopeModule;
- import org.apache.log4j.Logger;
-
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
-
- /**
- *
- * @author tflobbe
- *
- */
- public class SolrMeterMain {
-
- public static ConsoleFrame mainFrame;
-
- private static Injector injector;
- private static SolrMeterRunMode runMode;
-
- public static void main(String[] args) throws Exception {
- addPlugins(new ExpectedParameter(args, "statisticsLocation", "./plugins").getValue());
- createInjector();
- runMode = injector.getInstance(SolrMeterRunMode.class);
- runMode.main(injector);
- mainFrame = runMode.getMainFrame();
- }
-
- private static void addPlugins(String statisticsPath) {
- try {
- Logger.getLogger("boot").info("Adding plugins from " + statisticsPath);
- File pluginsDir = new File(statisticsPath);
- if(!pluginsDir.exists() || pluginsDir.list().length == 0) {
- Logger.getLogger("boot").warn("No plugins directory found. No pluggin added");
- return;
- }
- for(String jarName:pluginsDir.list()) {
- if(jarName.endsWith(".jar")) {
- Logger.getLogger("boot").info("Adding file " + jarName + " to classpath.");
- ClassPathHacker.addFile(new File(pluginsDir, jarName));
- }
- }
- SolrMeterConfiguration.setTransientProperty(StatisticsRepository.PLUGIN_STATISTICS_CONF_FILE_PROPERTY, statisticsPath + "/statistics-config.xml");
- } catch (IOException e) {
- Logger.getLogger("boot").error("Error while adding plugins to classpath", e);
- throw new RuntimeException(e);
- }
- }
-
- private static void createInjector() {
- List<Module> modules = new ArrayList<Module>();
- modules.add(createModule("guice.statisticsModule"));
- modules.add(createModule("guice.modelModule"));
- if (SolrMeterConfiguration.isHeadless()) {
- modules.add(createModule("guice.headlessModule"));
- }
- else {
- modules.add(createModule("guice.standalonePresentationModule"));
- }
- modules.add(createModule("guice.solrMeterRunModeModule"));
- modules.add(new StressTestScopeModule());
- injector = Guice.createInjector(modules);
- }
-
- private static Module createModule(String moduleKey) {
- String moduleClassName = SolrMeterConfiguration.getProperty(moduleKey);
- Logger.getLogger(SolrMeterMain.class).info("Using module: " + moduleClassName);
- Class<?> moduleClass;
- try {
- moduleClass = Class.forName(moduleClassName);
- } catch (ClassNotFoundException e) {
- Logger.getLogger(SolrMeterMain.class).error("Module for name " + moduleClassName + " can't be found! Make sure it is in classpath.", e);
- throw new RuntimeException("Could not start application, module for name " + moduleClassName + " was not found.", e);
- }
- Module moduleInstance;
- try {
- moduleInstance = (Module) moduleClass.newInstance();
- } catch (Exception e) {
- Logger.getLogger(SolrMeterMain.class).error("Module for name " + moduleClassName + " could not be instantiated.", e);
- throw new RuntimeException("Module for name " + moduleClassName + " could not be instantiated.", e);
- }
- return moduleInstance;
- }
-
- public static void restartApplication() {
- runMode.restartApplication();
- }
-
- public static SolrMeterRunMode getRunMode() {
- return runMode;
- }
-
- }