7.1.2.8. Access-rest¶
7.1.2.8.1. Présentation¶
API REST appelées par le client access interne. Il y a un controle des paramètres (SanityChecker.checkJsonAll) transmis avec ESAPI.
7.1.2.8.2. Packages:¶
fr.gouv.vitam.access.external.config : contient les paramètres de configurations du service web d’application. fr.gouv.vitam.access.external.model : classes métiers, classes implémentant le pattern DTO… . fr.gouv.vitam.access.external.rest : classes de lancement du serveur d’application et du controlleur REST.
7.1.2.9. -AccessApplication.java¶
classe de démarrage du serveur d’application.
// démarrage
public static void main(String[] args) {
try {
startApplication(args);
server.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Dans le startApplication on effectue le start de VitamServer. Le join permet de lancer les tests unitaires et d’arreter le serveur. Dans le fichier de configuration, le paramètre jettyConfig est à paramétrer avec le nom du fichier de configuration de jetty.
7.1.2.10. -AccessResourceImpl.java¶
classe controlleur REST La classe contient actuellement 9 méthodes :
getUnits()
NB : the post X-Http-Method-Override header
@POST
@Path("/units")
public Response getUnits(String requestDsl,
@HeaderParam("X-Http-Method-Override") String xhttpOverride) {
...
try {
if (xhttpOverride != null && "GET".equalsIgnoreCase(xhttpOverride)) {
queryJson = JsonHandler.getFromString(requestDsl);
result = accessModule.selectUnit(queryJson.toString());
} else {
throw new AccessExecutionException("There is no 'X-Http-Method-Override:GET' as a header");
}
....
createOrSelectUnits()
Récupère la liste des units avec la filtre
NB : La méthode HTTP GET n’est pas compatible, on utilisera une méthode HTTP POST dont l’entête contiendra « X-HTTP-Method-GET »
méthode createOrSelectUnits() va appeler méthode getUnits()
@POST @Path("/units") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response createOrSelectUnits(JsonNode queryJson, @HeaderParam(GlobalDataRest.X_HTTP_METHOD_OVERRIDE) String xhttpOverride) ...
getUnitById()
- récupère un unit avec son id
NB : the post X-Http-Method-Override header
@POST
@Path("/units/{id_unit}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response getUnitById(String queryDsl,
@HeaderParam(GlobalDataRest.X_HTTP_METHOD_OVERRIDE) String xhttpOverride,
@PathParam("id_unit") String id_unit) {
...
- createOrSelectUnitById()
Note
La méthode HTTP GET n’est pas compatible, on utilisera une méthode HTTP POST dont l’entête contiendra « X-HTTP-Method-GET »
méthode createOrSelectUnitById() va appeler méthode getUnitById()
@POST
@Path("/units/{idu}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createOrSelectUnitById(JsonNode queryJson,
@HeaderParam(GlobalDataRest.X_HTTP_METHOD_OVERRIDE) String xhttpOverride,
@PathParam("idu") String idUnit) {
...
- updateUnitById()
mise à jour d’un unit par son id avec une requête json
@PUT
@Path("/units/{id_unit}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response updateUnitById(String queryDsl,
@PathParam("id_unit") String id_unit) {
...
getObjectGroup()
récupérer une groupe d’objet avec la filtre
Note
the post X-Http-Method-Override header
@GET
@Path("/objects/{ido}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response getObjectGroup(@PathParam("ido") String idObjectGroup, JsonNode queryJson)
...
- getObjectGroupPost()
Note
La méthode HTTP GET n’est pas compatible, on utilisera une méthode HTTP POST dont l’entête contiendra « X-HTTP-Method-GET »
méthode getObjectGroupPost() va appeler méthode getObjectGroup()
@POST
@Path("/objects/{ido}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response getObjectGroupPost(@Context HttpHeaders headers,
@PathParam("ido") String idObjectGroup, JsonNode queryJson)
...
getObject()
récupérer le group d’objet par un unit
Note
the post X-Http-Method-Override header
@GET
@Path("/units/{ido}/objects")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public void getObject(@Context HttpHeaders headers, @PathParam("ido") String idObjectGroup,
JsonNode query, @Suspended final AsyncResponse asyncResponse) {
...
- getObjectPost()
Note
La méthode HTTP GET n’est pas compatible, on utilisera une méthode HTTP POST dont l’entête contiendra « X-HTTP-Method-GET »
méthode getObjectPost() va appeler méthode getObject()
@POST
@Path("/units/{ido}/objects")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public void getObjectPost(@Context HttpHeaders headers, @PathParam("ido") String idObjectGroup,
JsonNode query, @Suspended final AsyncResponse asyncResponse) {
...
7.1.2.11. -LogbookExternalResourceImpl.java¶
classe controlleur REST
la classe contient actuellement 6 méthodes :
getOperationById()
récupère l’opération avec son id NB : the post X-Http-Method-Override header
@GET
@Path("/logbookoperations/{id_op}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response getOperationById(@PathParam("id_op") String operationId) {
...
- selectOperationByPost()
Note
La méthode HTTP GET n’est pas compatible, on utilisera une méthode HTTP POST dont l’entête contiendra « X-HTTP-Method-GET »
méthode selectOperationByPost() va appeler méthode getOperationById()
@POST
@Path("/operations/{id_op}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response selectOperationByPost(@PathParam("id_op") String operationId,
@HeaderParam("X-HTTP-Method-Override") String xhttpOverride)
...
selectOperation()
récupérer tous les journaux de l’opéraion NB : the post X-Http-Method-Override header
@GET
@Path("/operations")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response selectOperation(JsonNode query)
...
- selectOperationWithPostOverride()
Note
La méthode HTTP GET n’est pas compatible, on utilisera une méthode HTTP POST dont l’entête contiendra « X-HTTP-Method-GET »
méthode selectOperationWithPostOverride() va appeler méthode selectOperation()
@POST
@Path("/operations")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response selectOperationWithPostOverride(JsonNode query,
@HeaderParam("X-HTTP-Method-Override") String xhttpOverride)
...
getUnitLifeCycle()
récupère le journal sur le cycle de vie d’un unit avec son id
@GET
@Path("/logbookunitlifecycles/{id_lc}")
@Produces(MediaType.APPLICATION_JSON)
public Response getUnitLifeCycle(@PathParam("id_lc") String unitLifeCycleId)
...
getObjectGroupLifeCycle()
récupère le journal sur le cycle de vie d’un groupe d’objet avec son id
@GET
@Path("/logbookobjectslifecycles/{id_lc}")
@Produces(MediaType.APPLICATION_JSON)
public Response getObjectGroupLifeCycle(@PathParam("id_lc") String objectGroupLifeCycleId)
...
7.1.2.12. -AdminManagementExternalResourceImpl.java¶
classe controlleur REST
la classe contient actuellement 10 méthodes :
checkDocument()
vérifier le format ou la règle
@Path("/{collection}")
@PUT
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
@Produces(MediaType.APPLICATION_JSON)
public Response checkDocument(@PathParam("collection") String collection, InputStream document) {
...
importDocument()
Importer le fichier du format ou de la règle
@Path("/{collection}")
@POST
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
@Produces(MediaType.APPLICATION_JSON)
public Response importDocument(@PathParam("collection") String collection, InputStream document) {
...
- importProfileFile()
Importer un fichier au format xsd ou rng et l’attacher à un profile métadata déjà existant.
@Path("/{collection}/{id}")
@PUT
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
@Produces(MediaType.APPLICATION_JSON)
public Response importProfileFile(@Context UriInfo uriInfo, @PathParam("collection") String collection, @PathParam("id") String profileMetadataId,
InputStream profileFile) {
...
- downloadProfileFileOrTraceabilityFile()
Télécharger un fichier d’un profile métadata existant au format xsd ou rng Ou télécharger un fichier d’opération de traçabilité
@GET
@Path("/{collection}/{id}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public void downloadProfileFileOrTraceabilityFile(@PathParam("collection") String collection, @PathParam("id") String profileMetadataId,
@Suspended final AsyncResponse asyncResponse) {
...
- findDocuments()
Récupérer le format, la règle, le contrat (entrée ou accès), le profile.
@Path("/{collection}")
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response findDocuments(@PathParam("collection") String collection, JsonNode select) {
...
- createOrfindDocuments()
Si la valeur de xhttpOverride est rensigné et égale à GET alors, c’est un find, donc redirection vers la méthode findDocuments ci-dessus. Sinon, c’est créate. Cette méthode est utilisé pour créer des profiles au format json. On peut noter que dans ce cas de figure, ça ressemble à la méthode importDocument, sauf que le Consumes qui change.
@Path("/{collection}")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createOrfindDocuments(@PathParam("collection") String collection, JsonNode select, @HeaderParam(GlobalDataRest.X_HTTP_METHOD_OVERRIDE) String xhttpOverride) {
...
- findDocumentByID()
En utilisant la méthode POST avec un paramètre xhttpOverride, ce méthode permets de récupérer avec un id en entrée, le format, la règle, les contrats (accès, entrée), les profiles.
@Path("/{collection}/{id_document}")
@POST
@Produces(MediaType.APPLICATION_JSON)
public Response findDocumentByID(@PathParam("collection") String collection, @PathParam("id_document") String documentId, @HeaderParam(GlobalDataRest.X_HTTP_METHOD_OVERRIDE) String xhttpOverride) {
...
- findDocumentByID()
En utilisant la méthode GET, ce méthode permets derécupérer avec un id en entrée, le format, la règle, les contrats (accès, entrée), les profiles.
@Path("/{collection}/{id_document}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response findDocumentByID(@PathParam("collection") String collection,
@PathParam("id_document") String documentId) {
...
- updateAccessContract()
Mise à jour du contrat d’accès
@PUT
@Path("/accesscontract")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response updateAccessContract(JsonNode queryDsl) {
...
- updateIngestContract()
Mise à jour du contrat d’entrée
@PUT
@Path("/contract")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response updateIngestContract(JsonNode queryDsl) {
...