From 2cb3e668db698534ce607459bffef00f839b33d7 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sun, 9 Mar 2014 14:48:43 +0100 Subject: [PATCH] fix mercurial out of scope exception on startup --- .../sonia/scm/repository/HgHookManager.java | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java index bd3e065bd4..6107e33d05 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java @@ -35,8 +35,11 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import com.google.common.base.Objects; import com.google.inject.Inject; +import com.google.inject.OutOfScopeException; import com.google.inject.Provider; +import com.google.inject.ProvisionException; import com.google.inject.Singleton; import org.slf4j.Logger; @@ -151,7 +154,7 @@ public class HgHookManager implements ConfigChangedListener if (url == null) { - HttpServletRequest request = httpServletRequestProvider.get(); + HttpServletRequest request = getHttpServletRequest(); if (request != null) { @@ -159,10 +162,10 @@ public class HgHookManager implements ConfigChangedListener } else { - logger.warn( - "created hook url {} without request, in some cases this could cause problems", - hookUrl); url = createConfiguredUrl(); + logger.warn( + "created url {} without request, in some cases this could cause problems", + url); } } @@ -268,8 +271,14 @@ public class HgHookManager implements ConfigChangedListener */ private String createConfiguredUrl() { + //J- return HttpUtil.getUriWithoutEndSeperator( - configuration.getBaseUrl()).concat("/hook/hg/"); + Objects.firstNonNull( + configuration.getBaseUrl(), + "http://localhost:8080/scm" + ) + ).concat("/hook/hg/"); + //J+ } /** @@ -308,6 +317,32 @@ public class HgHookManager implements ConfigChangedListener //~--- get methods ---------------------------------------------------------- + /** + * Method description + * + * + * @return + */ + private HttpServletRequest getHttpServletRequest() + { + HttpServletRequest request = null; + + try + { + request = httpServletRequestProvider.get(); + } + catch (ProvisionException ex) + { + logger.debug("http servlet request is not available"); + } + catch (OutOfScopeException ex) + { + logger.debug("http servlet request is not available"); + } + + return request; + } + /** * Method description *