Skip to content
Snippets Groups Projects
Commit 258f02f9 authored by Emmanuel Bruno's avatar Emmanuel Bruno
Browse files

fixes exec.

parent 36c4ea1d
No related branches found
No related tags found
No related merge requests found
......@@ -105,9 +105,6 @@
<version>3.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
......@@ -134,7 +131,7 @@
</execution>
</executions>
<configuration>
<mainClass>fr.univtln.bruno.samples.jaxrs.server.BiblioServer</mainClass>
<mainClass>${main.class}</mainClass>
</configuration>
</plugin>
......@@ -329,5 +326,6 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<sonar.coverage.jacoco.xmlReportPaths>target/site/jacoco-merged-coverage-report/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
<main.class>fr.univtln.bruno.samples.jaxrs.server.BiblioServer</main.class>
</properties>
</project>
......@@ -5,6 +5,7 @@ import fr.univtln.bruno.samples.jaxrs.exceptions.IllegalArgumentException;
import fr.univtln.bruno.samples.jaxrs.exceptions.NotFoundException;
import fr.univtln.bruno.samples.jaxrs.model.BiblioModel;
import fr.univtln.bruno.samples.jaxrs.model.BiblioModel.Auteur;
import fr.univtln.bruno.samples.jaxrs.status.Status;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
......@@ -38,7 +39,15 @@ public class BiblioResource {
return modeleBibliotheque.updateAuteur(id, auteur);
}
/**
* Status annotation is a trick to fine tune 2XX status codes (see the status package).
*
* @param auteur
* @return
* @throws IllegalArgumentException
*/
@POST
@Status(Status.CREATED)
@Path("auteurs")
@Consumes(MediaType.APPLICATION_JSON)
public Auteur ajouterAuteur(Auteur auteur) throws IllegalArgumentException {
......
package fr.univtln.bruno.samples.jaxrs.status;
import jakarta.ws.rs.NameBinding;
import jakarta.ws.rs.core.Response;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@NameBinding
@Retention(RetentionPolicy.RUNTIME)
public @interface Status {
int CREATED = 201;
int ACCEPTED = 202;
int NO_CONTENT = 204;
int RESET_CONTENT = 205;
int PARTIAL_CONTENT = 206;
int value();
}
\ No newline at end of file
package fr.univtln.bruno.samples.jaxrs.status;
import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.container.ContainerResponseContext;
import jakarta.ws.rs.container.ContainerResponseFilter;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.ext.Provider;
import java.io.IOException;
import java.lang.annotation.Annotation;
@Provider
public class StatusFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException {
if (containerResponseContext.getStatus() == Response.Status.OK.getStatusCode()) {
for (Annotation annotation : containerResponseContext.getEntityAnnotations()) {
if (annotation instanceof Status) {
containerResponseContext.setStatus(((Status) annotation).value());
break;
}
}
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment