From 030eadda3f19800423a9a94445d47524fd5ff516 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sat, 27 Jul 2013 18:51:40 +0200 Subject: [PATCH] added links commit and source view links to git repository quick view --- .../sonia/scm/web/GitRepositoryViewer.java | 28 +++++++++++++++---- .../java/sonia/scm/web/ScmGitServlet.java | 7 +++-- .../resources/sonia/scm/git.index.mustache | 17 +++++++++++ 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java index 40cb637b34..97f7e75c41 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java @@ -40,6 +40,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.io.Closeables; import com.google.inject.Inject; +import com.google.inject.name.Named; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,6 +57,10 @@ import sonia.scm.repository.api.RepositoryServiceFactory; import sonia.scm.template.Template; import sonia.scm.template.TemplateEngine; import sonia.scm.template.TemplateEngineFactory; +import sonia.scm.url.RepositoryUrlProvider; +import sonia.scm.url.UrlProvider; +import sonia.scm.url.UrlProviderFactory; +import sonia.scm.util.HttpUtil; import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ @@ -66,6 +71,7 @@ import java.io.Writer; import java.util.Date; import java.util.Iterator; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** @@ -79,8 +85,7 @@ public class GitRepositoryViewer public static final String MIMETYPE_HTML = "text/html"; /** Field description */ - public static final String RESOURCE_GITINDEX = - "sonia/scm/git.index.mustache"; + public static final String RESOURCE_GITINDEX = "sonia/scm/git.index.mustache"; /** Field description */ private static final int CHANGESET_PER_BRANCH = 10; @@ -114,23 +119,36 @@ public class GitRepositoryViewer * Method description * * + * + * @param request * @param response * @param repository * * @throws IOException * @throws RepositoryException */ - public void handleRequest(HttpServletResponse response, Repository repository) + public void handleRequest(HttpServletRequest request, + HttpServletResponse response, Repository repository) throws RepositoryException, IOException { + + String baseUrl = HttpUtil.getCompleteUrl(request); + + UrlProvider urlProvider = UrlProviderFactory.createUrlProvider(baseUrl, + UrlProviderFactory.TYPE_WUI); + response.setContentType(MIMETYPE_HTML); + RepositoryUrlProvider rup = urlProvider.getRepositoryUrlProvider(); + TemplateEngine engine = templateEngineFactory.getDefaultEngine(); Template template = engine.getTemplate(RESOURCE_GITINDEX); //J- ImmutableMap env = ImmutableMap.of( "repository", repository, - "branches", createBranchesModel(repository) + "branches", createBranchesModel(repository), + "commitViewLink", rup.getChangesetUrl(repository.getId(), 0, 20), + "sourceViewLink", rup.getBrowseUrl(repository.getId(), null, null) ); //J+ @@ -143,7 +161,7 @@ public class GitRepositoryViewer } finally { - Closeables.closeQuietly(writer); + Closeables.close(writer, true); } } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java index ac3728f519..dbdd12809a 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java @@ -143,7 +143,7 @@ public class ScmGitServlet extends GitServlet } else { - printGitInformation(response); + printGitInformation(request, response); } } @@ -158,7 +158,8 @@ public class ScmGitServlet extends GitServlet * @throws IOException * @throws ServletException */ - private void printGitInformation(HttpServletResponse response) + private void printGitInformation(HttpServletRequest request, + HttpServletResponse response) throws ServletException, IOException { sonia.scm.repository.Repository scmRepository = repositoryProvider.get(); @@ -167,7 +168,7 @@ public class ScmGitServlet extends GitServlet { try { - repositoryViewer.handleRequest(response, scmRepository); + repositoryViewer.handleRequest(request, response, scmRepository); } catch (Exception ex) { diff --git a/scm-plugins/scm-git-plugin/src/main/resources/sonia/scm/git.index.mustache b/scm-plugins/scm-git-plugin/src/main/resources/sonia/scm/git.index.mustache index 298259ec28..81d7a5bfa3 100644 --- a/scm-plugins/scm-git-plugin/src/main/resources/sonia/scm/git.index.mustache +++ b/scm-plugins/scm-git-plugin/src/main/resources/sonia/scm/git.index.mustache @@ -118,6 +118,23 @@ {{/branches}} + +

Notes

+ +
+

+ This page is only a quick view for git commits. + The full commit view is here. +

+ +

Git Informations