added modules to overrides

This commit is contained in:
Sebastian Sdorra
2012-03-18 15:56:19 +01:00
parent 15d420ff4a
commit e30f895b02
3 changed files with 79 additions and 5 deletions

View File

@@ -33,6 +33,10 @@ package sonia.scm;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.google.inject.Module;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -172,6 +176,8 @@ public class ClassOverrides implements Iterable<ClassOverride>
logger.warn("could not append ClassOverride, because it is not valid");
}
}
getModuleClasses().addAll(overrides.getModuleClasses());
}
/**
@@ -188,6 +194,54 @@ public class ClassOverrides implements Iterable<ClassOverride>
//~--- get methods ----------------------------------------------------------
/**
* Method description
*
*
* @return
*/
public List<Class<? extends Module>> getModuleClasses()
{
if (moduleClasses == null)
{
moduleClasses = new ArrayList<Class<? extends Module>>();
}
return moduleClasses;
}
/**
* Method description
*
*
* @return
*/
public List<? extends Module> getModules()
{
return Lists.transform(moduleClasses,
new Function<Class<? extends Module>, Module>()
{
@Override
public Module apply(Class<? extends Module> moduleClass)
{
Module module = null;
try
{
module = moduleClass.newInstance();
}
catch (Exception ex)
{
logger.error(
"could not create module instance of ".concat(
moduleClass.getName()), ex);
}
return module;
}
});
}
/**
* Method description
*
@@ -230,6 +284,18 @@ public class ClassOverrides implements Iterable<ClassOverride>
//~--- set methods ----------------------------------------------------------
/**
* Method description
*
*
*
* @param moduleClasses
*/
public void setModuleClasses(List<Class<? extends Module>> moduleClasses)
{
this.moduleClasses = moduleClasses;
}
/**
* Method description
*
@@ -243,6 +309,10 @@ public class ClassOverrides implements Iterable<ClassOverride>
//~--- fields ---------------------------------------------------------------
/** Field description */
@XmlElement(name = "module")
private List<Class<? extends Module>> moduleClasses;
/** Field description */
@XmlElement(name = "override")
private List<ClassOverride> overrides;

View File

@@ -134,11 +134,13 @@ public class ScmContextListener extends GuiceServletContextListener
pluginLoader.processExtensions(bindExtProcessor);
ClassOverrides overrides = ClassOverrides.findOverrides();
ScmServletModule main = new ScmServletModule(pluginLoader,
bindExtProcessor);
List<Module> moduleList =
new ArrayList<Module>(bindExtProcessor.getModuleSet());
bindExtProcessor, overrides);
List<Module> moduleList = new ArrayList<Module>();
moduleList.addAll(bindExtProcessor.getModuleSet());
moduleList.addAll(overrides.getModules());
moduleList.add(0, main);
injector = Guice.createInjector(moduleList);

View File

@@ -193,13 +193,15 @@ public class ScmServletModule extends ServletModule
*
* @param pluginLoader
* @param bindExtProcessor
* @param overrides
*/
ScmServletModule(PluginLoader pluginLoader,
BindingExtensionProcessor bindExtProcessor)
BindingExtensionProcessor bindExtProcessor,
ClassOverrides overrides)
{
this.pluginLoader = pluginLoader;
this.bindExtProcessor = bindExtProcessor;
this.overrides = ClassOverrides.findOverrides();
this.overrides = overrides;
}
//~--- methods --------------------------------------------------------------