diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgContextProvider.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgContextProvider.java similarity index 74% rename from scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgContextProvider.java rename to scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgContextProvider.java index 4b0979da8d..c86588fb27 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgContextProvider.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgContextProvider.java @@ -30,12 +30,17 @@ */ + package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import com.google.inject.Inject; import com.google.inject.Provider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * * @author Sebastian Sdorra @@ -43,6 +48,14 @@ import com.google.inject.Provider; public class HgContextProvider implements Provider { + /** + * the logger for HgContextProvider + */ + private static final Logger logger = + LoggerFactory.getLogger(HgContextProvider.class); + + //~--- get methods ---------------------------------------------------------- + /** * Method description * @@ -52,6 +65,20 @@ public class HgContextProvider implements Provider @Override public HgContext get() { - return new HgContext(); + HgContext ctx = context; + + if (ctx == null) + { + ctx = new HgContext(); + logger.trace("context is null, we are probably out of request scope"); + } + + return ctx; } + + //~--- fields --------------------------------------------------------------- + + /** Field description */ + @Inject(optional = true) + private HgContext context; } diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgServletModule.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgServletModule.java index f5e03dd525..792bafe80b 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgServletModule.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgServletModule.java @@ -40,6 +40,7 @@ import com.google.inject.servlet.ServletModule; import sonia.scm.installer.HgPackageReader; import sonia.scm.plugin.ext.Extension; import sonia.scm.repository.HgContext; +import sonia.scm.repository.HgContextProvider; import sonia.scm.repository.HgHookManager; import sonia.scm.web.filter.BasicAuthenticationFilter; @@ -66,7 +67,7 @@ public class HgServletModule extends ServletModule @Override protected void configureServlets() { - bind(HgContext.class); + bind(HgContext.class).toProvider(HgContextProvider.class); bind(HgHookManager.class); bind(HgPackageReader.class);