From abd1d02b208a34f89b2e065f9e3de3934fd9f157 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sun, 12 Feb 2012 16:59:29 +0100 Subject: [PATCH] use new python scritps --- .../scm/repository/AbstractHgHandler.java | 65 +++++++++---------- .../sonia/scm/repository/HgBlameViewer.java | 5 +- .../scm/repository/HgChangesetViewer.java | 10 ++- .../scm/repository/HgRepositoryBrowser.java | 8 +-- 4 files changed, 39 insertions(+), 49 deletions(-) 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 71c59312c4..1e3a9702ae 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 @@ -38,6 +38,7 @@ package sonia.scm.repository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import sonia.scm.SCMContext; import sonia.scm.util.IOUtil; import sonia.scm.util.Util; import sonia.scm.web.HgUtil; @@ -91,7 +92,7 @@ public class AbstractHgHandler public static final String ENV_PYTHONIOENCODING = "PYTHONIOENCODING"; /** Field description */ - public static final String ENV_PYTHON_PATH = "SCM_PYTHON_PATH"; + public static final String ENV_PYTHONPATH = "PYTHONPATH"; /** Field description */ public static final String ENV_REPOSITORY_PATH = "SCM_REPOSITORY_PATH"; @@ -232,29 +233,20 @@ public class AbstractHgHandler * Method description * * + * @param script * @param extraEnv * * @return * * @throws IOException */ - protected Process createPythonProcess(Map extraEnv) + protected Process createScriptProcess(HgPythonScript script, + Map extraEnv) throws IOException { - return createProcess(extraEnv, handler.getConfig().getPythonBinary()); - } - - /** - * Method description - * - * - * @return - * - * @throws IOException - */ - protected Process createPythonProcess() throws IOException - { - return createPythonProcess(new HashMap()); + return createProcess( + extraEnv, handler.getConfig().getPythonBinary(), + script.getFile(SCMContext.getContext()).getAbsolutePath()); } /** @@ -297,7 +289,7 @@ public class AbstractHgHandler * * * @param resultType - * @param scriptResource + * @param script * @param * * @return @@ -306,10 +298,10 @@ public class AbstractHgHandler * @throws RepositoryException */ protected T getResultFromScript(Class resultType, - String scriptResource) + HgPythonScript script) throws IOException, RepositoryException { - return getResultFromScript(resultType, scriptResource, + return getResultFromScript(resultType, script, new HashMap()); } @@ -318,7 +310,7 @@ public class AbstractHgHandler * * * @param resultType - * @param scriptResource + * @param script * @param extraEnv * @param * @@ -328,11 +320,10 @@ public class AbstractHgHandler * @throws RepositoryException */ protected T getResultFromScript(Class resultType, - String scriptResource, Map extraEnv) + HgPythonScript script, Map extraEnv) throws IOException, RepositoryException { - return getResultFromScript(resultType, scriptResource, jaxbContext, - extraEnv); + return getResultFromScript(resultType, script, jaxbContext, extraEnv); } /** @@ -340,7 +331,7 @@ public class AbstractHgHandler * * * @param resultType - * @param scriptResource + * @param script * @param jaxbContext * @param extraEnv * @param @@ -351,22 +342,17 @@ public class AbstractHgHandler * @throws RepositoryException */ protected T getResultFromScript(Class resultType, - String scriptResource, JAXBContext jaxbContext, + HgPythonScript script, JAXBContext jaxbContext, Map extraEnv) throws IOException, RepositoryException { - Process p = createPythonProcess(extraEnv); + Process p = createScriptProcess(script, extraEnv); T result = null; - InputStream resource = null; InputStream input = null; OutputStream output = null; try { - resource = HgUtil.class.getResourceAsStream(scriptResource); - output = p.getOutputStream(); - IOUtil.copy(resource, output); - output.close(); handleErrorStream(p.getErrorStream()); input = p.getInputStream(); result = (T) jaxbContext.createUnmarshaller().unmarshal(input); @@ -380,7 +366,6 @@ public class AbstractHgHandler } finally { - IOUtil.close(resource); IOUtil.close(input); IOUtil.close(output); } @@ -465,7 +450,21 @@ public class AbstractHgHandler } } - env.put(ENV_PYTHON_PATH, Util.nonNull(config.getPythonPath())); + String pythonPath = Util.nonNull(config.getPythonPath()); + + if (Util.isNotEmpty(pythonPath)) + { + pythonPath = pythonPath.concat(":"); + } + + //J- + pythonPath = pythonPath.concat( + HgPythonScript.getScriptDirectory( + SCMContext.getContext() + ).getAbsolutePath() + ); + //J+ + env.put(ENV_PYTHONPATH, pythonPath); env.put(ENV_REPOSITORY_PATH, directory.getAbsolutePath()); env.putAll(extraEnv); diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgBlameViewer.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgBlameViewer.java index 6ea770d36e..ea192665bc 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgBlameViewer.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgBlameViewer.java @@ -56,9 +56,6 @@ import javax.xml.bind.JAXBContext; public class HgBlameViewer extends AbstractHgHandler implements BlameViewer { - /** Field description */ - public static final String RESOURCE_BLAME = "/sonia/scm/hgblame.py"; - /** the logger for HgBlameViewer */ private static final Logger logger = LoggerFactory.getLogger(HgBlameViewer.class); @@ -109,6 +106,6 @@ public class HgBlameViewer extends AbstractHgHandler implements BlameViewer Map env = createEnvironment(revision, path); - return getResultFromScript(BlameResult.class, RESOURCE_BLAME, env); + return getResultFromScript(BlameResult.class, HgPythonScript.BLAME, env); } } diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgChangesetViewer.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgChangesetViewer.java index 88d793cc26..74ae58bd8c 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgChangesetViewer.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgChangesetViewer.java @@ -59,9 +59,6 @@ public class HgChangesetViewer extends AbstractHgHandler implements ChangesetViewer { - /** Field description */ - public static final String RESOURCE_LOG = "/sonia/scm/hglog.py"; - /** the logger for HgChangesetViewer */ private static final Logger logger = LoggerFactory.getLogger(HgChangesetViewer.class); @@ -133,8 +130,8 @@ public class HgChangesetViewer extends AbstractHgHandler env.put(ENV_REVISION_START, Util.EMPTY_STRING); env.put(ENV_REVISION_END, Util.EMPTY_STRING); - return getResultFromScript(Changeset.class, RESOURCE_LOG, changesetContext, - env); + return getResultFromScript(Changeset.class, HgPythonScript.CHANGELOG, + changesetContext, env); } /** @@ -225,7 +222,8 @@ public class HgChangesetViewer extends AbstractHgHandler env.put(ENV_REVISION_START, Util.nonNull(revisionStart)); env.put(ENV_REVISION_END, Util.nonNull(revisionEnd)); - return getResultFromScript(ChangesetPagingResult.class, RESOURCE_LOG, env); + return getResultFromScript(ChangesetPagingResult.class, + HgPythonScript.CHANGELOG, env); } /** diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryBrowser.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryBrowser.java index f059788f5b..947e2d26b8 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryBrowser.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryBrowser.java @@ -57,11 +57,6 @@ public class HgRepositoryBrowser extends AbstractHgHandler implements RepositoryBrowser { - /** Field description */ - public static final String RESOURCE_BROWSE = "/sonia/scm/hgbrowse.py"; - - //~--- constructors --------------------------------------------------------- - /** * Constructs ... * @@ -131,6 +126,7 @@ public class HgRepositoryBrowser extends AbstractHgHandler { Map env = createEnvironment(revision, path); - return getResultFromScript(BrowserResult.class, RESOURCE_BROWSE, env); + return getResultFromScript(BrowserResult.class, HgPythonScript.FILELOG, + env); } }