redefine AbstractManagerResource methods for webservice documentation

This commit is contained in:
Sebastian Sdorra
2011-10-02 14:20:08 +02:00
parent 70d61f4b78
commit 30fb4bccc4
4 changed files with 334 additions and 36 deletions

View File

@@ -53,21 +53,9 @@ import java.util.Collection;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.CacheControl; import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.EntityTag; import javax.ws.rs.core.EntityTag;
import javax.ws.rs.core.GenericEntity; import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request; import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.UriInfo;
@@ -145,9 +133,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
* *
* @return * @return
*/ */
@POST public Response create(UriInfo uriInfo, T item)
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response create(@Context UriInfo uriInfo, T item)
{ {
preCreate(item); preCreate(item);
@@ -182,9 +168,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
* *
* @return * @return
*/ */
@DELETE public Response delete(String name)
@Path("{id}")
public Response delete(@PathParam("id") String name)
{ {
Response response = null; Response response = null;
T item = manager.get(name); T item = manager.get(name);
@@ -226,11 +210,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
* *
* @return * @return
*/ */
@PUT public Response update(UriInfo uriInfo, String name, T item)
@Path("{id}")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response update(@Context UriInfo uriInfo,
@PathParam("id") String name, T item)
{ {
Response response = null; Response response = null;
@@ -267,10 +247,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
* *
* @return * @return
*/ */
@GET public Response get(Request request, String id)
@Path("{id}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response get(@Context Request request, @PathParam("id") String id)
{ {
Response response = null; Response response = null;
T item = manager.get(id); T item = manager.get(id);
@@ -308,13 +285,8 @@ public abstract class AbstractManagerResource<T extends ModelObject,
* @param desc * @param desc
* @return * @return
*/ */
@GET public Response getAll(Request request, int start, int limit, String sortby,
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) boolean desc)
public Response getAll(@Context Request request, @DefaultValue("0")
@QueryParam("start") int start, @DefaultValue("-1")
@QueryParam("limit") int limit, @QueryParam("sortby") String sortby,
@DefaultValue("false")
@QueryParam("desc") boolean desc)
{ {
Collection<T> items = fetchItems(sortby, desc, start, limit); Collection<T> items = fetchItems(sortby, desc, start, limit);

View File

@@ -39,6 +39,7 @@ import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import org.codehaus.enunciate.jaxrs.TypeHint;
import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle; import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
import sonia.scm.group.Group; import sonia.scm.group.Group;
@@ -50,11 +51,24 @@ import sonia.scm.web.security.WebSecurityContext;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
import java.util.Collection; import java.util.Collection;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.GenericEntity; import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request; import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
/** /**
* *
@@ -88,6 +102,62 @@ public class GroupResource
this.securityContextProvider = securityContextProvider; this.securityContextProvider = securityContextProvider;
} }
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
*
* @param uriInfo
* @param group
*
* @return
*/
@POST
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override
public Response create(@Context UriInfo uriInfo, Group group)
{
return super.create(uriInfo, group);
}
/**
* Method description
*
*
* @param name
*
* @return
*/
@DELETE
@Path("{id}")
@Override
public Response delete(@PathParam("id") String name)
{
return super.delete(name);
}
/**
* Method description
*
*
* @param uriInfo
* @param name
* @param group
*
* @return
*/
@PUT
@Path("{id}")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override
public Response update(@Context UriInfo uriInfo,
@PathParam("id") String name, Group group)
{
return super.update(uriInfo, name, group);
}
//~--- get methods ---------------------------------------------------------- //~--- get methods ----------------------------------------------------------
/** /**
@@ -99,8 +169,12 @@ public class GroupResource
* *
* @return * @return
*/ */
@GET
@Path("{id}")
@TypeHint(Group.class)
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override @Override
public Response get(Request request, String id) public Response get(@Context Request request, @PathParam("id") String id)
{ {
Response response = null; Response response = null;
@@ -116,6 +190,31 @@ public class GroupResource
return response; return response;
} }
/**
* Method description
*
*
* @param request
* @param start
* @param limit
* @param sortby
* @param desc
*
* @return
*/
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@TypeHint(List.class)
@Override
public Response getAll(@Context Request request, @DefaultValue("0")
@QueryParam("start") int start, @DefaultValue("-1")
@QueryParam("limit") int limit, @QueryParam("sortby") String sortby,
@DefaultValue("false")
@QueryParam("desc") boolean desc)
{
return super.getAll(request, start, limit, sortby, desc);
}
//~--- methods -------------------------------------------------------------- //~--- methods --------------------------------------------------------------
/** /**

View File

@@ -39,6 +39,7 @@ import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import org.codehaus.enunciate.jaxrs.TypeHint;
import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle; import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -64,6 +65,7 @@ import sonia.scm.repository.RepositoryManager;
import sonia.scm.repository.RepositoryNotFoundException; import sonia.scm.repository.RepositoryNotFoundException;
import sonia.scm.util.AssertUtil; import sonia.scm.util.AssertUtil;
import sonia.scm.util.HttpUtil; import sonia.scm.util.HttpUtil;
import sonia.scm.util.SecurityUtil;
import sonia.scm.web.security.WebSecurityContext; import sonia.scm.web.security.WebSecurityContext;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
@@ -72,17 +74,25 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue; import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.PathParam; import javax.ws.rs.PathParam;
import javax.ws.rs.Produces; import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam; import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.GenericEntity; import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput; import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriInfo;
/** /**
* *
@@ -133,8 +143,119 @@ public class RepositoryResource
setDisableCache(false); setDisableCache(false);
} }
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
*
* @param uriInfo
* @param repository
*
* @return
*/
@POST
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override
public Response create(@Context UriInfo uriInfo, Repository repository)
{
return super.create(uriInfo, repository);
}
/**
* Method description
*
*
* @param name
*
* @return
*/
@DELETE
@Path("{id}")
@Override
public Response delete(@PathParam("id") String name)
{
return super.delete(name);
}
/**
* Method description
*
*
* @param uriInfo
* @param name
* @param repository
*
* @return
*/
@PUT
@Path("{id}")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override
public Response update(@Context UriInfo uriInfo,
@PathParam("id") String name, Repository repository)
{
return super.update(uriInfo, name, repository);
}
//~--- get methods ---------------------------------------------------------- //~--- get methods ----------------------------------------------------------
/**
* Method description
*
*
* @param request
* @param id
*
* @return
*/
@GET
@Path("{id}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@TypeHint(Repository.class)
@Override
public Response get(@Context Request request, @PathParam("id") String id)
{
Response response = null;
if (SecurityUtil.isAdmin(securityContextProvider))
{
response = super.get(request, id);
}
else
{
response = Response.status(Response.Status.FORBIDDEN).build();
}
return response;
}
/**
* Method description
*
*
* @param request
* @param start
* @param limit
* @param sortby
* @param desc
*
* @return
*/
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@TypeHint(List.class)
@Override
public Response getAll(@Context Request request, @DefaultValue("0")
@QueryParam("start") int start, @DefaultValue("-1")
@QueryParam("limit") int limit, @QueryParam("sortby") String sortby,
@DefaultValue("false")
@QueryParam("desc") boolean desc)
{
return super.getAll(request, start, limit, sortby, desc);
}
/** /**
* Method description * Method description
* *
@@ -150,6 +271,8 @@ public class RepositoryResource
*/ */
@GET @GET
@Path("{id}/blame") @Path("{id}/blame")
@TypeHint(BlameResult.class)
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getBlame(@PathParam("id") String id, public Response getBlame(@PathParam("id") String id,
@QueryParam("revision") String revision, @QueryParam("revision") String revision,
@QueryParam("path") String path) @QueryParam("path") String path)
@@ -204,6 +327,7 @@ public class RepositoryResource
*/ */
@GET @GET
@Path("{id}/browse") @Path("{id}/browse")
@TypeHint(BrowserResult.class)
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getBrowserResult(@PathParam("id") String id, public Response getBrowserResult(@PathParam("id") String id,
@QueryParam("revision") String revision, @QueryParam("revision") String revision,
@@ -254,6 +378,7 @@ public class RepositoryResource
*/ */
@GET @GET
@Path("{id}/changesets") @Path("{id}/changesets")
@TypeHint(ChangesetPagingResult.class)
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getChangesets(@PathParam("id") String id, @DefaultValue("0") public Response getChangesets(@PathParam("id") String id, @DefaultValue("0")
@QueryParam("start") int start, @DefaultValue("20") @QueryParam("start") int start, @DefaultValue("20")
@@ -299,6 +424,7 @@ public class RepositoryResource
*/ */
@GET @GET
@Path("{id}/content") @Path("{id}/content")
@TypeHint(StreamingOutput.class)
@Produces({ MediaType.APPLICATION_OCTET_STREAM }) @Produces({ MediaType.APPLICATION_OCTET_STREAM })
public Response getContent(@PathParam("id") String id, public Response getContent(@PathParam("id") String id,
@QueryParam("revision") String revision, @QueryParam("revision") String revision,
@@ -358,6 +484,8 @@ public class RepositoryResource
*/ */
@GET @GET
@Path("{id}/diff") @Path("{id}/diff")
@TypeHint(DiffStreamingOutput.class)
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getDiff(@PathParam("id") String id, public Response getDiff(@PathParam("id") String id,
@QueryParam("revision") String revision, @QueryParam("revision") String revision,
@QueryParam("path") String path) @QueryParam("path") String path)

View File

@@ -39,6 +39,7 @@ import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import org.codehaus.enunciate.jaxrs.TypeHint;
import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle; import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
import sonia.scm.security.EncryptionHandler; import sonia.scm.security.EncryptionHandler;
@@ -53,11 +54,24 @@ import sonia.scm.web.security.WebSecurityContext;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
import java.util.Collection; import java.util.Collection;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.GenericEntity; import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request; import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
/** /**
* *
@@ -95,6 +109,62 @@ public class UserResource extends AbstractManagerResource<User, UserException>
this.securityContextProvider = securityContextProvider; this.securityContextProvider = securityContextProvider;
} }
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
*
* @param uriInfo
* @param user
*
* @return
*/
@POST
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override
public Response create(@Context UriInfo uriInfo, User user)
{
return super.create(uriInfo, user);
}
/**
* Method description
*
*
* @param name
*
* @return
*/
@DELETE
@Path("{id}")
@Override
public Response delete(@PathParam("id") String name)
{
return super.delete(name);
}
/**
* Method description
*
*
* @param uriInfo
* @param name
* @param user
*
* @return
*/
@PUT
@Path("{id}")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override
public Response update(@Context UriInfo uriInfo,
@PathParam("id") String name, User user)
{
return super.update(uriInfo, name, user);
}
//~--- get methods ---------------------------------------------------------- //~--- get methods ----------------------------------------------------------
/** /**
@@ -106,8 +176,12 @@ public class UserResource extends AbstractManagerResource<User, UserException>
* *
* @return * @return
*/ */
@GET
@Path("{id}")
@TypeHint(User.class)
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override @Override
public Response get(Request request, String id) public Response get(@Context Request request, @PathParam("id") String id)
{ {
Response response = null; Response response = null;
@@ -123,6 +197,31 @@ public class UserResource extends AbstractManagerResource<User, UserException>
return response; return response;
} }
/**
* Method description
*
*
* @param request
* @param start
* @param limit
* @param sortby
* @param desc
*
* @return
*/
@GET
@TypeHint(List.class)
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override
public Response getAll(@Context Request request, @DefaultValue("0")
@QueryParam("start") int start, @DefaultValue("-1")
@QueryParam("limit") int limit, @QueryParam("sortby") String sortby,
@DefaultValue("false")
@QueryParam("desc") boolean desc)
{
return super.getAll(request, start, limit, sortby, desc);
}
//~--- methods -------------------------------------------------------------- //~--- methods --------------------------------------------------------------
/** /**