From 6d12a9654fb5f409af2da26edd140723d8877bd1 Mon Sep 17 00:00:00 2001 From: Lucas Alberto Souza Santos Date: Mon, 23 Apr 2018 11:31:01 -0300 Subject: [PATCH 1/2] Fix bug when validating Proxy beans. --- .../treatment/ExceptionTreatmentImpl.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/demoiselle-rest/src/main/java/org/demoiselle/jee/rest/exception/treatment/ExceptionTreatmentImpl.java b/demoiselle-rest/src/main/java/org/demoiselle/jee/rest/exception/treatment/ExceptionTreatmentImpl.java index a1d91f751..5f4b70f64 100644 --- a/demoiselle-rest/src/main/java/org/demoiselle/jee/rest/exception/treatment/ExceptionTreatmentImpl.java +++ b/demoiselle-rest/src/main/java/org/demoiselle/jee/rest/exception/treatment/ExceptionTreatmentImpl.java @@ -8,6 +8,8 @@ import java.sql.SQLException; import java.util.ArrayList; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.logging.Logger; @@ -26,8 +28,6 @@ import org.demoiselle.jee.rest.message.DemoiselleRESTMessage; import com.fasterxml.jackson.databind.exc.InvalidFormatException; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; /** * Default implementation of All Exception Treatments in Demoiselle Framework. @@ -87,13 +87,23 @@ public Response getFormatedError(Throwable exception, HttpServletRequest request ConstraintViolationException c = (ConstraintViolationException) exception; c.getConstraintViolations().stream().forEach((violation) -> { - String objectType = violation.getLeafBean().getClass().getSimpleName(); + Object bean = violation.getLeafBean(); + String objectType = bean.getClass().getSimpleName(); + boolean isProxy = objectType.contains("$Proxy$"); + System.out.println("objectType " + objectType + " is proxy = " + isProxy); + // if it's a wrapped proxy object, get the original bean class that is the superclass + if(isProxy) { + objectType = bean.getClass().getSuperclass().getSimpleName(); + System.out.println("original objectType: " + objectType); + } // This is fixed because REST beans validations only accept ONE // parameter String arg = "arg0"; // Before: pesist.arg0.name / After: pesist.User.name + System.out.println("violation.getPropertyPath().toString() = " + violation.getPropertyPath().toString()); + System.out.println("replaceAll " + arg + " to " + objectType); String pathConverted = violation.getPropertyPath().toString().replaceAll(arg, objectType); Map object = new ConcurrentHashMap<>(); From e349ac3716915ccf519d96097ba4da8822b0e594 Mon Sep 17 00:00:00 2001 From: Lucas Alberto Date: Mon, 23 Apr 2018 11:37:56 -0300 Subject: [PATCH 2/2] Remove debug prints. --- .../rest/exception/treatment/ExceptionTreatmentImpl.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/demoiselle-rest/src/main/java/org/demoiselle/jee/rest/exception/treatment/ExceptionTreatmentImpl.java b/demoiselle-rest/src/main/java/org/demoiselle/jee/rest/exception/treatment/ExceptionTreatmentImpl.java index 5f4b70f64..230fcb070 100644 --- a/demoiselle-rest/src/main/java/org/demoiselle/jee/rest/exception/treatment/ExceptionTreatmentImpl.java +++ b/demoiselle-rest/src/main/java/org/demoiselle/jee/rest/exception/treatment/ExceptionTreatmentImpl.java @@ -90,20 +90,16 @@ public Response getFormatedError(Throwable exception, HttpServletRequest request Object bean = violation.getLeafBean(); String objectType = bean.getClass().getSimpleName(); boolean isProxy = objectType.contains("$Proxy$"); - System.out.println("objectType " + objectType + " is proxy = " + isProxy); // if it's a wrapped proxy object, get the original bean class that is the superclass if(isProxy) { - objectType = bean.getClass().getSuperclass().getSimpleName(); - System.out.println("original objectType: " + objectType); - } + objectType = bean.getClass().getSuperclass().getSimpleName(); + } // This is fixed because REST beans validations only accept ONE // parameter String arg = "arg0"; // Before: pesist.arg0.name / After: pesist.User.name - System.out.println("violation.getPropertyPath().toString() = " + violation.getPropertyPath().toString()); - System.out.println("replaceAll " + arg + " to " + objectType); String pathConverted = violation.getPropertyPath().toString().replaceAll(arg, objectType); Map object = new ConcurrentHashMap<>();