diff --git a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/business/BookmarkBC.java b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/business/BookmarkBC.java
index c838079..08aadcb 100644
--- a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/business/BookmarkBC.java
+++ b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/business/BookmarkBC.java
@@ -5,7 +5,7 @@ import br.gov.frameworkdemoiselle.stereotype.BusinessController;
import br.gov.frameworkdemoiselle.template.DelegateCrud;
import br.gov.frameworkdemoiselle.transaction.Transactional;
-import ${package}.domain.Bookmark;
+import ${package}.entity.Bookmark;
import ${package}.persistence.BookmarkDAO;
@BusinessController
diff --git a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/domain/Bookmark.java b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/domain/Bookmark.java
deleted file mode 100644
index 589a6ec..0000000
--- a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/domain/Bookmark.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package ${package}.domain;
-
-import static javax.persistence.GenerationType.SEQUENCE;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-
-@Entity
-public class Bookmark implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /*
- * If you are using Glassfish then remove the strategy attribute
- */
- @Id
- @GeneratedValue(strategy = SEQUENCE)
- private Long id;
-
- @Column
- private String description;
-
- @Column
- private String link;
-
- public Bookmark() {
- super();
- }
-
- public Bookmark(String description, String link) {
- this.description = description;
- this.link = link;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getLink() {
- return link;
- }
-
- public void setLink(String link) {
- this.link = link;
- }
-
-}
diff --git a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/entity/Bookmark.java b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/entity/Bookmark.java
new file mode 100644
index 0000000..15244cb
--- /dev/null
+++ b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/entity/Bookmark.java
@@ -0,0 +1,64 @@
+package ${package}.domain;
+
+import static javax.persistence.GenerationType.SEQUENCE;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+
+@Entity
+public class Bookmark implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /*
+ * If you are using Glassfish then remove the strategy attribute
+ */
+ @Id
+ @GeneratedValue(strategy = SEQUENCE)
+ private Long id;
+
+ @NotNull
+ private String description;
+
+ @NotNull
+ @Pattern(regexp = "^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$", message = "formato inválido")
+ private String link;
+
+ public Bookmark() {
+ super();
+ }
+
+ public Bookmark(String description, String link) {
+ this.description = description;
+ this.link = link;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+}
diff --git a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/message/readme.txt b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/message/readme.txt
deleted file mode 100644
index e69de29..0000000
--- a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/message/readme.txt
+++ /dev/null
diff --git a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/persistence/BookmarkDAO.java b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/persistence/BookmarkDAO.java
index 9105753..8ab8128 100644
--- a/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/persistence/BookmarkDAO.java
+++ b/archetype/html-rest/src/main/resources/archetype-resources/src/main/java/persistence/BookmarkDAO.java
@@ -3,7 +3,7 @@ package ${package}.persistence;
import br.gov.frameworkdemoiselle.stereotype.PersistenceController;
import br.gov.frameworkdemoiselle.template.JPACrud;
-import ${package}.domain.Bookmark;
+import ${package}.entity.Bookmark;
@PersistenceController
public class BookmarkDAO extends JPACrud {
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 664f612..50fe35c 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
@@ -17,10 +17,11 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import ${package}.business.BookmarkBC;
-import ${package}.domain.Bookmark;
+import ${package}.entity.Bookmark;
import br.gov.frameworkdemoiselle.BadRequestException;
import br.gov.frameworkdemoiselle.NotFoundException;
import br.gov.frameworkdemoiselle.transaction.Transactional;
+import br.gov.frameworkdemoiselle.validation.Validate;
@Path("bookmark")
public class BookmarkREST {
@@ -48,6 +49,7 @@ public class BookmarkREST {
}
@POST
+ @Validate
@Transactional
@Produces("text/plain")
@Consumes("application/json")
@@ -61,9 +63,11 @@ public class BookmarkREST {
}
@PUT
+ @Validate
@Path("{id}")
@Transactional
@Consumes("application/json")
+ @Produces("application/json")
public void update(@PathParam("id") Long id, Bookmark entity) {
checkId(entity);
load(id);
diff --git a/archetype/html-rest/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml b/archetype/html-rest/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml
index b5f8044..e8f9d83 100644
--- a/archetype/html-rest/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml
+++ b/archetype/html-rest/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml
@@ -8,7 +8,7 @@
java:jboss/datasources/ExampleDS
- ${package}.domain.Bookmark
+ ${package}.entity.Bookmark
@@ -23,7 +23,7 @@
java:jboss/datasources/ExampleDS
- ${package}.domain.Bookmark
+ ${package}.entity.Bookmark
true
@@ -41,7 +41,7 @@
java:/DefaultDS
- ${package}.domain.Bookmark
+ ${package}.entity.Bookmark
@@ -57,7 +57,7 @@
java:/DefaultDS
- ${package}.domain.Bookmark
+ ${package}.entity.Bookmark
true
@@ -74,7 +74,7 @@
jdbc/__default
- ${package}.domain.Bookmark
+ ${package}.entity.Bookmark
@@ -89,7 +89,7 @@
jdbc/__TimerPool
- ${package}.domain.Bookmark
+ ${package}.entity.Bookmark
@@ -103,7 +103,7 @@
- ${package}.domain.Bookmark
+ ${package}.entity.Bookmark
@@ -30,7 +30,7 @@
java:/DefaultDS
- ${package}.domain.Bookmark
+ ${package}.entity.Bookmark
@@ -46,7 +46,7 @@
java:/DefaultDS
- ${package}.domain.Bookmark
+ ${package}.entity.Bookmark
diff --git a/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/PreconditionFailedException.java b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/PreconditionFailedException.java
index c1dc560..7b754e1 100644
--- a/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/PreconditionFailedException.java
+++ b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/PreconditionFailedException.java
@@ -1,20 +1,15 @@
package br.gov.frameworkdemoiselle;
-import static javax.servlet.http.HttpServletResponse.SC_PRECONDITION_FAILED;
-
import java.util.HashSet;
import java.util.Set;
-import javax.xml.ws.http.HTTPException;
-
-public class PreconditionFailedException extends HTTPException {
+public class PreconditionFailedException extends Exception {
private static final long serialVersionUID = 1L;
private Set violations = new HashSet();
public PreconditionFailedException() {
- super(SC_PRECONDITION_FAILED);
}
public PreconditionFailedException addViolation(String property, String message) {
diff --git a/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/PreconditionFailedExceptionMapper.java b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/PreconditionFailedExceptionMapper.java
index e461c21..ce3821d 100644
--- a/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/PreconditionFailedExceptionMapper.java
+++ b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/PreconditionFailedExceptionMapper.java
@@ -1,5 +1,7 @@
package br.gov.frameworkdemoiselle.internal.implementation;
+import static javax.ws.rs.core.Response.Status.PRECONDITION_FAILED;
+
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@@ -11,6 +13,6 @@ public class PreconditionFailedExceptionMapper implements ExceptionMapper