From d2a01e964de1a48cc15157893c4b1a0cca41ff37 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Fri, 5 Jun 2015 10:54:26 +0000 Subject: [PATCH] refs #200: Create accouting-lib library https://support.d4science.org/issues/200 Fixing validators git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-lib@115237 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../datamodel/validators/FieldValidator.java | 6 ++++- .../NotEmptyIfNotNullValidator.java | 12 +++++++++ .../validators/NotEmptyValidator.java | 12 +++++++++ .../validators/NotNullValidator.java | 8 ++++++ .../validators/ValidIPValidator.java | 22 ++++++++++++--- .../validators/ValidIntegerValidator.java | 17 +++++++++--- .../validators/ValidLongValidator.java | 16 ++++++++--- .../ValidOperationResultValidator.java | 27 ++++++++++++------- .../exception/InvalidValueException.java | 4 +++ 9 files changed, 104 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/gcube/accounting/datamodel/validators/FieldValidator.java b/src/main/java/org/gcube/accounting/datamodel/validators/FieldValidator.java index f9463db..a6dd573 100644 --- a/src/main/java/org/gcube/accounting/datamodel/validators/FieldValidator.java +++ b/src/main/java/org/gcube/accounting/datamodel/validators/FieldValidator.java @@ -6,6 +6,8 @@ package org.gcube.accounting.datamodel.validators; import java.io.Serializable; import java.lang.annotation.Annotation; +import org.gcube.accounting.exception.InvalidValueException; + /** * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ * @@ -14,7 +16,9 @@ public interface FieldValidator { Class annotation(); - boolean isValid(Serializable toValidate); + public boolean isValid(Serializable toValidate); + + public Serializable validate(Serializable toValidate) throws InvalidValueException; String getErrorSuffix(); } diff --git a/src/main/java/org/gcube/accounting/datamodel/validators/NotEmptyIfNotNullValidator.java b/src/main/java/org/gcube/accounting/datamodel/validators/NotEmptyIfNotNullValidator.java index 8adb572..1e69a92 100644 --- a/src/main/java/org/gcube/accounting/datamodel/validators/NotEmptyIfNotNullValidator.java +++ b/src/main/java/org/gcube/accounting/datamodel/validators/NotEmptyIfNotNullValidator.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Map; import org.gcube.accounting.datamodel.annotations.NotEmptyIfNotNull; +import org.gcube.accounting.exception.InvalidValueException; public class NotEmptyIfNotNullValidator implements FieldValidator{ @@ -23,6 +24,17 @@ public class NotEmptyIfNotNullValidator implements FieldValidator{ @@ -23,6 +24,17 @@ public class NotEmptyValidator implements FieldValidator{ return !((String)toValidate).isEmpty(); } else return true; } + + public Serializable validate(Serializable toValidate) throws InvalidValueException { + try{ + if(isValid(toValidate)){ + return toValidate; + } + }catch(Exception e){ + throw new InvalidValueException(getErrorSuffix(), e.getCause()); + } + throw new InvalidValueException(getErrorSuffix()); + } public String getErrorSuffix() { return "is empty"; diff --git a/src/main/java/org/gcube/accounting/datamodel/validators/NotNullValidator.java b/src/main/java/org/gcube/accounting/datamodel/validators/NotNullValidator.java index d44c9ac..22f0974 100644 --- a/src/main/java/org/gcube/accounting/datamodel/validators/NotNullValidator.java +++ b/src/main/java/org/gcube/accounting/datamodel/validators/NotNullValidator.java @@ -3,6 +3,7 @@ package org.gcube.accounting.datamodel.validators; import java.io.Serializable; import org.gcube.accounting.datamodel.annotations.NotNull; +import org.gcube.accounting.exception.InvalidValueException; public class NotNullValidator implements FieldValidator{ @@ -15,6 +16,13 @@ public class NotNullValidator implements FieldValidator{ return toValidate!=null; } + public Serializable validate(Serializable toValidate) throws InvalidValueException { + if(isValid(toValidate)){ + return toValidate; + } + throw new InvalidValueException(getErrorSuffix()); + } + public String getErrorSuffix() { return "is null"; } diff --git a/src/main/java/org/gcube/accounting/datamodel/validators/ValidIPValidator.java b/src/main/java/org/gcube/accounting/datamodel/validators/ValidIPValidator.java index 7de25a8..45ec218 100644 --- a/src/main/java/org/gcube/accounting/datamodel/validators/ValidIPValidator.java +++ b/src/main/java/org/gcube/accounting/datamodel/validators/ValidIPValidator.java @@ -5,6 +5,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.gcube.accounting.datamodel.annotations.ValidLong; +import org.gcube.accounting.exception.InvalidValueException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,11 +46,24 @@ public class ValidIPValidator implements FieldValidator{ public boolean isValid(Serializable toValidate) { try { - return isIpAddress((String) toValidate); - }catch(Exception e){} - return false; + validate(toValidate); + } catch (InvalidValueException e) { + return false; + } + return true; } - + + public Serializable validate(Serializable toValidate) throws InvalidValueException { + try { + if(isIpAddress((String) toValidate)){ + return (String) toValidate; + } + }catch (Exception e) { + throw new InvalidValueException(getErrorSuffix(), e.getCause()); + } + throw new InvalidValueException(getErrorSuffix()); + } + public String getErrorSuffix() { return "not valid IP Address"; } diff --git a/src/main/java/org/gcube/accounting/datamodel/validators/ValidIntegerValidator.java b/src/main/java/org/gcube/accounting/datamodel/validators/ValidIntegerValidator.java index bef478e..0036a5f 100644 --- a/src/main/java/org/gcube/accounting/datamodel/validators/ValidIntegerValidator.java +++ b/src/main/java/org/gcube/accounting/datamodel/validators/ValidIntegerValidator.java @@ -3,6 +3,7 @@ package org.gcube.accounting.datamodel.validators; import java.io.Serializable; import org.gcube.accounting.datamodel.annotations.ValidLong; +import org.gcube.accounting.exception.InvalidValueException; public class ValidIntegerValidator implements FieldValidator{ @@ -12,14 +13,24 @@ public class ValidIntegerValidator implements FieldValidator{ } public boolean isValid(Serializable toValidate) { + try { + validate(toValidate); + } catch (InvalidValueException e) { + return false; + } + return true; + } + + public Serializable validate(Serializable toValidate) throws InvalidValueException { if(toValidate instanceof Integer){ - return true; + return toValidate; } Integer integerObj = Integer.getInteger((String) toValidate); if(integerObj!=null){ - return true; + return integerObj; } - return false; + + throw new InvalidValueException(getErrorSuffix()); } public String getErrorSuffix() { diff --git a/src/main/java/org/gcube/accounting/datamodel/validators/ValidLongValidator.java b/src/main/java/org/gcube/accounting/datamodel/validators/ValidLongValidator.java index f08d006..773903e 100644 --- a/src/main/java/org/gcube/accounting/datamodel/validators/ValidLongValidator.java +++ b/src/main/java/org/gcube/accounting/datamodel/validators/ValidLongValidator.java @@ -3,6 +3,7 @@ package org.gcube.accounting.datamodel.validators; import java.io.Serializable; import org.gcube.accounting.datamodel.annotations.ValidLong; +import org.gcube.accounting.exception.InvalidValueException; public class ValidLongValidator implements FieldValidator{ @@ -12,16 +13,25 @@ public class ValidLongValidator implements FieldValidator{ } public boolean isValid(Serializable toValidate) { + try { + validate(toValidate); + } catch (InvalidValueException e) { + return false; + } + return true; + } + + public Serializable validate(Serializable toValidate) throws InvalidValueException { if(toValidate instanceof Long){ - return true; + return toValidate; } Long longObj = Long.getLong((String) toValidate); if(longObj!=null){ - return true; + return longObj; } return false; } - + public String getErrorSuffix() { return String.format("not instace of %s", Long.class.getSimpleName()); } diff --git a/src/main/java/org/gcube/accounting/datamodel/validators/ValidOperationResultValidator.java b/src/main/java/org/gcube/accounting/datamodel/validators/ValidOperationResultValidator.java index d9a69f8..88d23f9 100644 --- a/src/main/java/org/gcube/accounting/datamodel/validators/ValidOperationResultValidator.java +++ b/src/main/java/org/gcube/accounting/datamodel/validators/ValidOperationResultValidator.java @@ -4,6 +4,7 @@ import java.io.Serializable; import org.gcube.accounting.datamodel.UsageRecord.OperationResult; import org.gcube.accounting.datamodel.annotations.ValidOperationResult; +import org.gcube.accounting.exception.InvalidValueException; public class ValidOperationResultValidator implements FieldValidator{ @@ -12,16 +13,24 @@ public class ValidOperationResultValidator implements FieldValidator