diff --git a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/rest/BookmarkREST.java b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/rest/BookmarkREST.java index fb64f19..1434639 100644 --- a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/rest/BookmarkREST.java +++ b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/rest/BookmarkREST.java @@ -8,6 +8,7 @@ import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; 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; @@ -21,9 +22,7 @@ import br.gov.frameworkdemoiselle.BadRequestException; import br.gov.frameworkdemoiselle.NotFoundException; import br.gov.frameworkdemoiselle.transaction.Transactional; -//@ValidateRequest @Path("bookmark") -// @Consumes(APPLICATION_JSON) public class BookmarkREST { @Inject @@ -50,8 +49,8 @@ public class BookmarkREST { @POST @Transactional - @Consumes("application/json") @Produces("text/plain") + @Consumes("application/json") public Response insert(Bookmark entity, @Context UriInfo uriInfo) { if (entity.getId() != null) { throw new BadRequestException(); @@ -63,6 +62,23 @@ public class BookmarkREST { return Response.created(location).entity(id).build(); } + @PUT + @Path("{id}") + @Transactional + @Consumes("application/json") + public void update(@PathParam("id") Long id, Bookmark entity) { + if (entity.getId() != null) { + throw new BadRequestException(); + } + + if (bc.load(id) == null) { + throw new NotFoundException(); + } + + entity.setId(id); + bc.update(entity); + } + @DELETE @Transactional @Consumes("application/json") diff --git a/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConstraintViolationExceptionMapper.java b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConstraintViolationExceptionMapper.java new file mode 100644 index 0000000..d8be3fa --- /dev/null +++ b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConstraintViolationExceptionMapper.java @@ -0,0 +1,50 @@ +//package br.gov.frameworkdemoiselle.internal.implementation; +// +//import java.util.Arrays; +// +//import javax.validation.ConstraintViolation; +//import javax.validation.ConstraintViolationException; +//import javax.ws.rs.core.Context; +//import javax.ws.rs.core.Response; +//import javax.ws.rs.ext.ExceptionMapper; +//import javax.ws.rs.ext.Provider; +// +//@Provider +//public class ConstraintViolationExceptionMapper implements ExceptionMapper { +// +// @Context +// private Response response; +// +// @Override +// public Response toResponse(Exception exception) { +// +// Throwable rootCause = exception; +// while (rootCause != null) { +// if (rootCause instanceof ConstraintViolationException) { +// break; +// } +// +// rootCause = rootCause.getCause(); +// } +// +// if (rootCause != null) { +// for (ConstraintViolation violation : ((ConstraintViolationException) rootCause) +// .getConstraintViolations()) { +// String parts[] = violation.getPropertyPath().toString().split("\\.|\\[|\\]\\."); +// String property = null; +// +// if (parts.length > 1) { +// property = parts[1]; +// +// for (String part : Arrays.copyOfRange(parts, 2, parts.length)) { +// property += "." + part; +// } +// } +// +// System.out.println(property); +// } +// } +// +// return null; +// } +// } diff --git a/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultExceptionMapper.java b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultExceptionMapper.java index 20b5842..7543918 100644 --- a/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultExceptionMapper.java +++ b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultExceptionMapper.java @@ -1,33 +1,31 @@ //package br.gov.frameworkdemoiselle.internal.implementation; // -//import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR; +//import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; // //import java.util.ResourceBundle; // -//import javax.inject.Inject; //import javax.ws.rs.core.Response; //import javax.ws.rs.ext.ExceptionMapper; //import javax.ws.rs.ext.Provider; // //import org.slf4j.Logger; // -//import br.gov.frameworkdemoiselle.annotation.Name; +//import br.gov.frameworkdemoiselle.util.Beans; +//import br.gov.frameworkdemoiselle.util.NamedQualifier; // //@Provider //public class DefaultExceptionMapper implements ExceptionMapper { // -// @Inject -// @Name("demoiselle-rest-bundle") -// private ResourceBundle bundle; +// @Override +// public Response toResponse(Throwable exception) { +// ResourceBundle bundle = Beans.getReference(ResourceBundle.class, new NamedQualifier("demoiselle-rest-bundle")); +// Logger logger = Beans.getReference(Logger.class); // -// @Inject -// private Logger logger; +// logger.error(exception.getMessage(), exception); // -// @Override -// public Response toResponse(Throwable throwable) { -// logger.error(throwable.getMessage(), throwable); +// // throw new DemoiselleException(cause); // // String message = bundle.getString("internal.server.error"); -// return Response.status(SC_INTERNAL_SERVER_ERROR).entity(message).build(); +// return Response.status(INTERNAL_SERVER_ERROR).entity(message).build(); // } //} -- libgit2 0.21.2