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