From fbd971fd9a7b8ef1da0d4c42627b317f44d2d091 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 19 Jan 2012 16:05:57 +0100 Subject: [PATCH] added client method to fetch a single changeset --- .../scm/client/ClientChangesetHandler.java | 13 +++++++ .../client/JerseyClientChangesetHandler.java | 37 +++++++++++++++++++ .../sonia/scm/url/RepositoryUrlProvider.java | 13 +++++++ .../scm/url/RestRepositoryUrlProvider.java | 25 +++++++++++++ .../scm/url/WUIRepositoryUrlProvider.java | 25 +++++++++++++ 5 files changed, 113 insertions(+) diff --git a/scm-clients/scm-client-api/src/main/java/sonia/scm/client/ClientChangesetHandler.java b/scm-clients/scm-client-api/src/main/java/sonia/scm/client/ClientChangesetHandler.java index ea858cca97..2207d2c6b9 100644 --- a/scm-clients/scm-client-api/src/main/java/sonia/scm/client/ClientChangesetHandler.java +++ b/scm-clients/scm-client-api/src/main/java/sonia/scm/client/ClientChangesetHandler.java @@ -35,6 +35,7 @@ package sonia.scm.client; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.repository.Changeset; import sonia.scm.repository.ChangesetPagingResult; /** @@ -45,6 +46,18 @@ import sonia.scm.repository.ChangesetPagingResult; public interface ClientChangesetHandler { + /** + * Method description + * + * + * @param revision + * + * @return + * + * @since 1.12 + */ + public Changeset getChangeset(String revision); + /** * Method description * diff --git a/scm-clients/scm-client-impl/src/main/java/sonia/scm/client/JerseyClientChangesetHandler.java b/scm-clients/scm-client-impl/src/main/java/sonia/scm/client/JerseyClientChangesetHandler.java index 2fffb5afe3..8cc8abb60a 100644 --- a/scm-clients/scm-client-impl/src/main/java/sonia/scm/client/JerseyClientChangesetHandler.java +++ b/scm-clients/scm-client-impl/src/main/java/sonia/scm/client/JerseyClientChangesetHandler.java @@ -35,6 +35,7 @@ package sonia.scm.client; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.repository.Changeset; import sonia.scm.repository.ChangesetPagingResult; import sonia.scm.repository.Repository; @@ -66,6 +67,42 @@ public class JerseyClientChangesetHandler implements ClientChangesetHandler //~--- get methods ---------------------------------------------------------- + /** + * Method description + * + * + * @param revision + * + * @return + */ + @Override + public Changeset getChangeset(String revision) + { + Changeset changeset = null; + String url = + session.getUrlProvider().getRepositoryUrlProvider().getChangesetUrl( + repository.getId(), revision); + WebResource resource = session.getClient().resource(url); + ClientResponse response = null; + + try + { + response = resource.get(ClientResponse.class); + + if (response.getStatus() != ScmClientException.SC_NOTFOUND) + { + ClientUtil.checkResponse(response, 200); + changeset = response.getEntity(Changeset.class); + } + } + finally + { + ClientUtil.close(response); + } + + return changeset; + } + /** * Method description * diff --git a/scm-core/src/main/java/sonia/scm/url/RepositoryUrlProvider.java b/scm-core/src/main/java/sonia/scm/url/RepositoryUrlProvider.java index 205a255bfb..4e1ee93c14 100644 --- a/scm-core/src/main/java/sonia/scm/url/RepositoryUrlProvider.java +++ b/scm-core/src/main/java/sonia/scm/url/RepositoryUrlProvider.java @@ -79,6 +79,19 @@ public interface RepositoryUrlProvider extends ModelUrlProvider public String getChangesetUrl(String repositoryId, String path, String revision, int start, int limit); + /** + * Method description + * + * + * @param repositoryId + * @param revision + * + * @return + * + * @since 1.12 + */ + public String getChangesetUrl(String repositoryId, String revision); + /** * Method description * diff --git a/scm-core/src/main/java/sonia/scm/url/RestRepositoryUrlProvider.java b/scm-core/src/main/java/sonia/scm/url/RestRepositoryUrlProvider.java index 59a8e44fdb..db908aa02c 100644 --- a/scm-core/src/main/java/sonia/scm/url/RestRepositoryUrlProvider.java +++ b/scm-core/src/main/java/sonia/scm/url/RestRepositoryUrlProvider.java @@ -63,6 +63,11 @@ public class RestRepositoryUrlProvider extends RestModelUrlProvider /** Field description */ public static final String PART_BROWSE = "browse"; + /** + * @since 1.12 + */ + public static final String PART_CHANGESET = "changeset"; + /** Field description */ public static final String PART_CHANGESETS = "changesets"; @@ -177,6 +182,26 @@ public class RestRepositoryUrlProvider extends RestModelUrlProvider PARAMETER_LIMIT, limit).toString(); } + /** + * Method description + * + * + * @param repositoryId + * @param revision + * + * @return + * + * @since 1.12 + */ + @Override + public String getChangesetUrl(String repositoryId, String revision) + { + revision = UrlUtil.fixRevision(revision); + + return new UrlBuilder(base).appendUrlPart(repositoryId).appendUrlPart( + PART_CHANGESET).appendUrlPart(revision).append(extension).toString(); + } + /** * Method description * diff --git a/scm-core/src/main/java/sonia/scm/url/WUIRepositoryUrlProvider.java b/scm-core/src/main/java/sonia/scm/url/WUIRepositoryUrlProvider.java index 66c9044500..e6a334dea4 100644 --- a/scm-core/src/main/java/sonia/scm/url/WUIRepositoryUrlProvider.java +++ b/scm-core/src/main/java/sonia/scm/url/WUIRepositoryUrlProvider.java @@ -64,6 +64,11 @@ public class WUIRepositoryUrlProvider extends WUIModelUrlProvider /** Field description */ public static final String VIEW_BLAME = "blame"; + /** + * @since 1.12 + */ + public static final String VIEW_CHANGESET = "changeset"; + /** Field description */ public static final String VIEW_CONTENT = "content"; @@ -167,6 +172,26 @@ public class WUIRepositoryUrlProvider extends WUIModelUrlProvider repositoryId).append(start).append(limit).toString(); } + /** + * Method description + * + * + * @param repositoryId + * @param revision + * + * @return + * + * @since 1.12 + */ + @Override + public String getChangesetUrl(String repositoryId, String revision) + { + revision = UrlUtil.fixRevision(revision); + + return new WUIUrlBuilder(baseUrl, VIEW_CHANGESET).append( + repositoryId).append(revision).toString(); + } + /** * Method description *