diff --git a/scm-plugins/scm-hg-plugin/pom.xml b/scm-plugins/scm-hg-plugin/pom.xml
index 779dbaa80a..d6d79a87cb 100644
--- a/scm-plugins/scm-hg-plugin/pom.xml
+++ b/scm-plugins/scm-hg-plugin/pom.xml
@@ -28,7 +28,15 @@
com.aragost.javahg
javahg
- 0.7
+ 0.8-SNAPSHOT
+
+
+
+
+
+ com.google.guava
+ guava
+ ${guava.version}
@@ -39,7 +47,7 @@
2.0.0-SNAPSHOT
test
-
+
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java
index 63c82cbbf8..7b451e8194 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java
@@ -50,7 +50,6 @@ import sonia.scm.web.HgUtil;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
@@ -126,7 +125,6 @@ public class AbstractHgHandler
* @param handler
* @param context
* @param repository
- * @param repositoryDirectory
*/
protected AbstractHgHandler(HgRepositoryHandler handler, HgContext context,
Repository repository)
@@ -304,7 +302,6 @@ public class AbstractHgHandler
Process p = createScriptProcess(script, extraEnv);
T result = null;
InputStream input = null;
- OutputStream output = null;
try
{
@@ -322,8 +319,7 @@ public class AbstractHgHandler
}
finally
{
- Closeables.closeQuietly(input);
- Closeables.closeQuietly(output);
+ Closeables.close(input, true);
}
return result;
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgWindowsPackageFix.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgWindowsPackageFix.java
index 795f3eca0f..7e695d42cc 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgWindowsPackageFix.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgWindowsPackageFix.java
@@ -37,13 +37,13 @@ package sonia.scm.repository;
import com.google.common.base.Charsets;
import com.google.common.base.Throwables;
-import com.google.common.io.Closeables;
import com.google.common.io.Files;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.SCMContextProvider;
+import sonia.scm.util.IOUtil;
import sonia.scm.web.HgUtil;
//~--- JDK imports ------------------------------------------------------------
@@ -59,16 +59,10 @@ import java.io.IOException;
*/
public final class HgWindowsPackageFix
{
-
- /** Field description */
- private static final String PYTHONPATH_WRONG = "set PYTHONPATH=%~dp0..\\lib;%PYTHONHOME%\\Lib";
-
- /** Field description */
- private static final String PYTHONPATH_FIXED = "set PYTHONPATH=%~dp0..\\lib;%PYTHONHOME%\\Lib;%PYTHONPATH%";
/** Field description */
static final String MODIFY_MARK_01 = ".setbinary";
-
+
/** Field description */
static final String MODIFY_MARK_02 = ".setpythonpath";
@@ -78,6 +72,14 @@ public final class HgWindowsPackageFix
/** Field description */
private static final String HG_PY = "hg.py";
+ /** Field description */
+ private static final String PYTHONPATH_FIXED =
+ "set PYTHONPATH=%~dp0..\\lib;%PYTHONHOME%\\Lib;%PYTHONPATH%";
+
+ /** Field description */
+ private static final String PYTHONPATH_WRONG =
+ "set PYTHONPATH=%~dp0..\\lib;%PYTHONHOME%\\Lib";
+
/**
* the logger for HgUtil
*/
@@ -111,6 +113,7 @@ public final class HgWindowsPackageFix
if (hg.startsWith(basePath) && hg.endsWith(HG_BAT))
{
File file = new File(hg);
+
fixHgBat(file);
file = new File(file.getParentFile(), HG_PY);
@@ -123,48 +126,50 @@ public final class HgWindowsPackageFix
"could not fix hg.py, because the configuration is not valid");
}
}
-
+
/**
* Visible for testing
*
* @param hgBat
*/
- static void fixHgBat(File hgBat){
+ static void fixHgBat(File hgBat)
+ {
if (hgBat.exists())
{
File binDirectory = hgBat.getParentFile();
File modifyMark = new File(binDirectory, MODIFY_MARK_02);
+
if (!modifyMark.exists())
{
- try
+ try
{
String content = Files.toString(hgBat, Charsets.UTF_8);
+
if (!content.contains(PYTHONPATH_FIXED))
{
content = content.replace(PYTHONPATH_WRONG, PYTHONPATH_FIXED);
Files.write(content, hgBat, Charsets.UTF_8);
}
+
createModifyMark(modifyMark);
- }
+ }
catch (IOException ex)
{
logger.error("could not read content of {}", hgBat);
+
throw Throwables.propagate(ex);
}
- }
- else
+ }
+ else
{
logger.debug("hg.bat allready fixed");
}
- }
- else
+ }
+ else
{
logger.warn("could not find hg.bat at {}", hgBat);
}
}
-
-
-
/**
* Visible for testing
@@ -252,7 +257,7 @@ public final class HgWindowsPackageFix
}
finally
{
- Closeables.closeQuietly(reader);
+ IOUtil.close(reader);
}
return setBinaryAvailable;
@@ -327,8 +332,8 @@ public final class HgWindowsPackageFix
}
finally
{
- Closeables.closeQuietly(reader);
- Closeables.closeQuietly(writer);
+ IOUtil.close(reader);
+ IOUtil.close(writer);
}
}
}
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCatCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCatCommand.java
index a45a0825aa..76438c1f1e 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCatCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCatCommand.java
@@ -97,7 +97,7 @@ public class HgCatCommand extends AbstractCommand implements CatCommand
}
finally
{
- Closeables.closeQuietly(input);
+ Closeables.close(input, true);
}
}
}
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java
index 3b08be2bba..dcdcdeec2f 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java
@@ -117,7 +117,7 @@ public class HgDiffCommand extends AbstractCommand implements DiffCommand
}
finally
{
- Closeables.closeQuietly(inputStream);
+ Closeables.close(inputStream, true);
}
}
}
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java
index 80b10f7ffc..4295bf45e4 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java
@@ -112,7 +112,7 @@ public class HgRepositoryServiceProvider extends RepositoryServiceProvider
@Override
public void close() throws IOException
{
- Closeables.closeQuietly(context);
+ Closeables.close(context, true);
}
//~--- get methods ----------------------------------------------------------
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgIncomingOutgoingChangesetCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgIncomingOutgoingChangesetCommand.java
index ebba92bbde..3a0755cbcd 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgIncomingOutgoingChangesetCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgIncomingOutgoingChangesetCommand.java
@@ -30,6 +30,7 @@
*/
+
package sonia.scm.repository.spi.javahg;
//~--- non-JDK imports --------------------------------------------------------
@@ -37,10 +38,9 @@ package sonia.scm.repository.spi.javahg;
import com.aragost.javahg.Repository;
import com.aragost.javahg.internals.HgInputStream;
-import com.google.common.io.Closeables;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.HgConfig;
+import sonia.scm.util.IOUtil;
//~--- JDK imports ------------------------------------------------------------
@@ -91,7 +91,7 @@ public abstract class HgIncomingOutgoingChangesetCommand
}
finally
{
- Closeables.closeQuietly(stream);
+ IOUtil.close(stream);
}
return changesets;
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgHookCallbackServlet.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgHookCallbackServlet.java
index ff4c9863c0..abbf09380a 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgHookCallbackServlet.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgHookCallbackServlet.java
@@ -491,7 +491,7 @@ public class HgHookCallbackServlet extends HttpServlet
}
finally
{
- Closeables.closeQuietly(writer);
+ Closeables.close(writer, true);
}
}
}
@@ -538,14 +538,14 @@ public class HgHookCallbackServlet extends HttpServlet
//~--- fields ---------------------------------------------------------------
/** Field description */
- private Provider contextProvider;
+ private final Provider contextProvider;
/** Field description */
- private HgRepositoryHandler handler;
+ private final HgRepositoryHandler handler;
/** Field description */
- private HookEventFacade hookEventFacade;
+ private final HookEventFacade hookEventFacade;
/** Field description */
- private HgHookManager hookManager;
+ private final HgHookManager hookManager;
}
diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgWindowsPackageFixTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgWindowsPackageFixTest.java
index 66ce155d36..727da2191f 100644
--- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgWindowsPackageFixTest.java
+++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgWindowsPackageFixTest.java
@@ -121,7 +121,7 @@ public class HgWindowsPackageFixTest
}
finally
{
- Closeables.closeQuietly(fos);
+ Closeables.close(fos, true);
}
return file;