From 4be841e9c4dfde3814fcbf502c904e491ceb9439 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Thu, 21 Apr 2016 09:06:32 +0000
Subject: [PATCH] SSDM-3521 : Limit size of error string to 500 chars.

SVN: 36247
---
 .../openbis/generic/server/dataaccess/db/AbstractDAO.java   | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java
index 4865927c095..7e0d324cb15 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java
@@ -70,7 +70,8 @@ public abstract class AbstractDAO extends HibernateDaoSupport
 {
 
     private static ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
-
+    private static final int MAX_STRING_ERROR_LENGTH = 500;
+    
     protected AbstractDAO(final SessionFactory sessionFactory)
     {
         assert sessionFactory != null : "Unspecified session factory";
@@ -98,6 +99,9 @@ public abstract class AbstractDAO extends HibernateDaoSupport
             for (ConstraintViolation v : violations)
             {
                 Object invalidValue = v.getInvalidValue();
+                if(invalidValue instanceof String && (((String) invalidValue).length() > MAX_STRING_ERROR_LENGTH)) {
+                    invalidValue = String.format("%s... (complete value was %d characters)", ((String) invalidValue).substring(0, MAX_STRING_ERROR_LENGTH), ((String) invalidValue).length());
+                }
                 msg += ", " + String.format(v.getMessage(), invalidValue);
             }
             throw new DataIntegrityViolationException(msg.substring(2));
-- 
GitLab