added getTags method to client api

This commit is contained in:
Sebastian Sdorra
2012-07-05 19:44:26 +02:00
parent b0e0f76c09
commit 1671124827
2 changed files with 56 additions and 7 deletions

View File

@@ -38,6 +38,7 @@ package sonia.scm.client;
import sonia.scm.NotSupportedFeatuerException; import sonia.scm.NotSupportedFeatuerException;
import sonia.scm.Type; import sonia.scm.Type;
import sonia.scm.repository.Repository; import sonia.scm.repository.Repository;
import sonia.scm.repository.Tags;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
@@ -74,7 +75,7 @@ public interface RepositoryClientHandler extends ClientHandler<Repository>
* @throws NotSupportedFeatuerException * @throws NotSupportedFeatuerException
*/ */
public ClientChangesetHandler getChangesetHandler(Repository repository) public ClientChangesetHandler getChangesetHandler(Repository repository)
throws NotSupportedFeatuerException; throws NotSupportedFeatuerException;
/** /**
* Method description * Method description
@@ -88,7 +89,7 @@ public interface RepositoryClientHandler extends ClientHandler<Repository>
* @throws NotSupportedFeatuerException * @throws NotSupportedFeatuerException
*/ */
public ClientRepositoryBrowser getRepositoryBrowser(Repository repository) public ClientRepositoryBrowser getRepositoryBrowser(Repository repository)
throws NotSupportedFeatuerException; throws NotSupportedFeatuerException;
/** /**
* Method description * Method description
@@ -97,4 +98,15 @@ public interface RepositoryClientHandler extends ClientHandler<Repository>
* @return * @return
*/ */
public Collection<Type> getRepositoryTypes(); public Collection<Type> 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);
} }

View File

@@ -37,12 +37,15 @@ package sonia.scm.client;
import sonia.scm.NotSupportedFeatuerException; import sonia.scm.NotSupportedFeatuerException;
import sonia.scm.Type; import sonia.scm.Type;
import sonia.scm.repository.Changeset;
import sonia.scm.repository.Repository; import sonia.scm.repository.Repository;
import sonia.scm.repository.Tags;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.GenericType; import com.sun.jersey.api.client.GenericType;
import com.sun.jersey.api.client.WebResource;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@@ -52,8 +55,7 @@ import java.util.List;
* @author Sebastian Sdorra * @author Sebastian Sdorra
*/ */
public class JerseyRepositoryClientHandler public class JerseyRepositoryClientHandler
extends AbstractClientHandler<Repository> extends AbstractClientHandler<Repository> implements RepositoryClientHandler
implements RepositoryClientHandler
{ {
/** /**
@@ -99,7 +101,7 @@ public class JerseyRepositoryClientHandler
*/ */
@Override @Override
public ClientChangesetHandler getChangesetHandler(Repository repository) public ClientChangesetHandler getChangesetHandler(Repository repository)
throws NotSupportedFeatuerException throws NotSupportedFeatuerException
{ {
return new JerseyClientChangesetHandler(session, repository); return new JerseyClientChangesetHandler(session, repository);
} }
@@ -115,7 +117,7 @@ public class JerseyRepositoryClientHandler
*/ */
@Override @Override
public JerseyClientRepositoryBrowser getRepositoryBrowser( public JerseyClientRepositoryBrowser getRepositoryBrowser(
Repository repository) Repository repository)
{ {
return new JerseyClientRepositoryBrowser(session, repository); return new JerseyClientRepositoryBrowser(session, repository);
} }
@@ -132,6 +134,41 @@ public class JerseyRepositoryClientHandler
return session.getState().getRepositoryTypes(); 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 -------------------------------------------------------------- //~--- methods --------------------------------------------------------------
/** /**
@@ -157,7 +194,7 @@ public class JerseyRepositoryClientHandler
*/ */
@Override @Override
protected void postCreate(ClientResponse response, Repository repository, protected void postCreate(ClientResponse response, Repository repository,
Repository newRepository) Repository newRepository)
{ {
newRepository.copyProperties(repository); newRepository.copyProperties(repository);