From 17508ebeabecad3a65386e589dbc59d68e046697 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sun, 31 Oct 2010 13:20:53 +0100 Subject: [PATCH] improve plugin loading --- .../main/java/sonia/scm/ScmServletModule.java | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java b/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java index 6f67bc3e76..659aceef8f 100644 --- a/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java +++ b/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java @@ -31,6 +31,7 @@ import sonia.scm.util.Util; import sonia.scm.web.plugin.SCMPlugin; import sonia.scm.web.plugin.SCMPluginManager; import sonia.scm.web.plugin.ScmWebPluginContext; +import sonia.scm.web.plugin.SecurityConfig; import sonia.scm.web.security.Authenticator; import sonia.scm.web.security.BasicSecurityContext; import sonia.scm.web.security.SecurityContext; @@ -43,8 +44,6 @@ import com.sun.jersey.api.core.ResourceConfig; import com.sun.jersey.guice.spi.container.servlet.GuiceContainer; import com.sun.jersey.spi.container.servlet.ServletContainer; -import java.io.IOException; - import java.util.Collection; import java.util.HashMap; import java.util.LinkedHashSet; @@ -122,8 +121,9 @@ public class ScmServletModule extends ServletModule SCMContextProvider context = SCMContext.getContext(); bind(SCMContextProvider.class).toInstance(context); - bind(EncryptionHandler.class).to(MessageDigestEncryptionHandler.class); - bind(Authenticator.class).to(XmlAuthenticator.class); + + // bind(EncryptionHandler.class).to(MessageDigestEncryptionHandler.class); + // bind(Authenticator.class).to(XmlAuthenticator.class); bind(SecurityContext.class).to(BasicSecurityContext.class); loadPlugins(pluginManager); bind(CacheManager.class).to(EhCacheManager.class); @@ -203,6 +203,9 @@ public class ScmServletModule extends ServletModule Multibinder.newSetBinder(binder(), RepositoryHandler.class); Set> handlerSet = new LinkedHashSet>(); + Class encryptionHandler = + MessageDigestEncryptionHandler.class; + Class authenticator = XmlAuthenticator.class; for (SCMPlugin plugin : pluginSet) { @@ -213,8 +216,31 @@ public class ScmServletModule extends ServletModule { handlerSet.addAll(handlers); } + + SecurityConfig securityConfig = plugin.getSecurityConfig(); + + if (securityConfig != null) + { + Class enc = + securityConfig.getEncryptionHandler(); + + if (enc != null) + { + encryptionHandler = enc; + } + + Class auth = + securityConfig.getAuthenticator(); + + if (auth != null) + { + authenticator = auth; + } + } } + bind(EncryptionHandler.class).to(encryptionHandler); + bind(Authenticator.class).to(authenticator); bindRepositoryHandlers(repositoryHandlerBinder, handlerSet); } }