You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/01/23 15:33:20 UTC
svn commit: r1234821 -
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/site/apt/rest.apt
Author: olamy
Date: Mon Jan 23 14:33:20 2012
New Revision: 1234821
URL: http://svn.apache.org/viewvc?rev=1234821&view=rev
Log:
complete REST documentation
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/site/apt/rest.apt
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/site/apt/rest.apt
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/site/apt/rest.apt?rev=1234821&r1=1234820&r2=1234821&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/site/apt/rest.apt (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/site/apt/rest.apt Mon Jan 23 14:33:20 2012
@@ -1,5 +1,5 @@
-----
- REST call
+ REST Services
-----
Olivier Lamy
-----
@@ -28,7 +28,8 @@
Expose Rest Services
- The {{http://cxf.apache.org}Apache CXF}} is used to expose some classes/methods as REST Services.
+
+ The {{{http://cxf.apache.org}Apache CXF}} is used to expose some classes/methods as REST Services.
Services use the standard interface/implementation pattern:
@@ -38,9 +39,23 @@ Expose Rest Services
[]
-* Annotations
+%{toc}
+
+* Steps to expose your class as a REST Service.
+
+ Here all the steps to expose a new class as a REST service.
+
+** Interface and data beans
+
+ All interfaces and data beans are added in the module archiva-rest-api:
+
+ * interface in the package: org.apache.archiva.rest.api.services .
-** Beans
+ * data beans in the package: org.apache.archiva.rest.api.model .
+
+ []
+
+*** Beans
As we want to be able to expose result as json or xml type, all beans use javax.xml.bind.annotation root element :
@@ -48,9 +63,12 @@ Expose Rest Services
@XmlRootElement( name = "artifact" )
public class Artifact
implements Serializable
+
+All services will be able to return json or xml
+@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+---------------------
-** JAXRS annotations
+*** JAXRS annotations
As we use interfaces/implementations pattern jaxrs annotations are only in interfaces level.
@@ -58,11 +76,29 @@ public class Artifact
@Path( "/managedRepositoriesService/" )
public interface ManagedRepositoriesService
{
+ // simple GET method no parameter
@Path( "getManagedRepositories" )
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
List<ManagedRepository> getManagedRepositories()
throws ArchivaRestServiceException;
+
+ // GET method with a path parameter
+ @Path( "getManagedRepository/{repositoryId}" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ ManagedRepository getManagedRepository( @PathParam( "repositoryId" ) String repositoryId )
+ throws ArchivaRestServiceException;
+
+ // POST method to pass a data bean
+ @Path( "addManagedRepository" )
+ @POST
+ @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ ManagedRepository addManagedRepository( ManagedRepository managedRepository )
+ throws ArchivaRestServiceException;
+---------------------
** CXF/Spring configuration
@@ -124,3 +160,5 @@ public class DefaultManagedRepositoriesS
+
+