From 167112482711ea7889d102b07bc597029d185af1 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 5 Jul 2012 19:44:26 +0200 Subject: [PATCH] added getTags method to client api --- .../scm/client/RepositoryClientHandler.java | 16 ++++++- .../client/JerseyRepositoryClientHandler.java | 47 +++++++++++++++++-- 2 files changed, 56 insertions(+), 7 deletions(-) diff --git a/scm-clients/scm-client-api/src/main/java/sonia/scm/client/RepositoryClientHandler.java b/scm-clients/scm-client-api/src/main/java/sonia/scm/client/RepositoryClientHandler.java index c1563b10b9..b5ec335642 100644 --- a/scm-clients/scm-client-api/src/main/java/sonia/scm/client/RepositoryClientHandler.java +++ b/scm-clients/scm-client-api/src/main/java/sonia/scm/client/RepositoryClientHandler.java @@ -38,6 +38,7 @@ package sonia.scm.client; import sonia.scm.NotSupportedFeatuerException; import sonia.scm.Type; import sonia.scm.repository.Repository; +import sonia.scm.repository.Tags; //~--- JDK imports ------------------------------------------------------------ @@ -74,7 +75,7 @@ public interface RepositoryClientHandler extends ClientHandler * @throws NotSupportedFeatuerException */ public ClientChangesetHandler getChangesetHandler(Repository repository) - throws NotSupportedFeatuerException; + throws NotSupportedFeatuerException; /** * Method description @@ -88,7 +89,7 @@ public interface RepositoryClientHandler extends ClientHandler * @throws NotSupportedFeatuerException */ public ClientRepositoryBrowser getRepositoryBrowser(Repository repository) - throws NotSupportedFeatuerException; + throws NotSupportedFeatuerException; /** * Method description @@ -97,4 +98,15 @@ public interface RepositoryClientHandler extends ClientHandler * @return */ public Collection getRepositoryTypes(); + + /** + * Returns all tags of the given repository. + * + * + * @param repository repository + * + * @return all tags of the given repository + * @since 1.18 + */ + public Tags getTags(Repository repository); } diff --git a/scm-clients/scm-client-impl/src/main/java/sonia/scm/client/JerseyRepositoryClientHandler.java b/scm-clients/scm-client-impl/src/main/java/sonia/scm/client/JerseyRepositoryClientHandler.java index 8d7666fbeb..cc93849fa3 100644 --- a/scm-clients/scm-client-impl/src/main/java/sonia/scm/client/JerseyRepositoryClientHandler.java +++ b/scm-clients/scm-client-impl/src/main/java/sonia/scm/client/JerseyRepositoryClientHandler.java @@ -37,12 +37,15 @@ package sonia.scm.client; import sonia.scm.NotSupportedFeatuerException; import sonia.scm.Type; +import sonia.scm.repository.Changeset; import sonia.scm.repository.Repository; +import sonia.scm.repository.Tags; //~--- JDK imports ------------------------------------------------------------ import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.GenericType; +import com.sun.jersey.api.client.WebResource; import java.util.Collection; import java.util.List; @@ -52,8 +55,7 @@ import java.util.List; * @author Sebastian Sdorra */ public class JerseyRepositoryClientHandler - extends AbstractClientHandler - implements RepositoryClientHandler + extends AbstractClientHandler implements RepositoryClientHandler { /** @@ -99,7 +101,7 @@ public class JerseyRepositoryClientHandler */ @Override public ClientChangesetHandler getChangesetHandler(Repository repository) - throws NotSupportedFeatuerException + throws NotSupportedFeatuerException { return new JerseyClientChangesetHandler(session, repository); } @@ -115,7 +117,7 @@ public class JerseyRepositoryClientHandler */ @Override public JerseyClientRepositoryBrowser getRepositoryBrowser( - Repository repository) + Repository repository) { return new JerseyClientRepositoryBrowser(session, repository); } @@ -132,6 +134,41 @@ public class JerseyRepositoryClientHandler return session.getState().getRepositoryTypes(); } + /** + * Method description + * + * + * @param repository + * + * @return + */ + @Override + public Tags getTags(Repository repository) + { + Tags tags = null; + String url = session.getUrlProvider().getRepositoryUrlProvider().getTagsUrl( + repository.getId()); + 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); + tags = response.getEntity(Tags.class); + } + } + finally + { + ClientUtil.close(response); + } + + return tags; + } + //~--- methods -------------------------------------------------------------- /** @@ -157,7 +194,7 @@ public class JerseyRepositoryClientHandler */ @Override protected void postCreate(ClientResponse response, Repository repository, - Repository newRepository) + Repository newRepository) { newRepository.copyProperties(repository);