Improve message for constraints different errors
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / tosca / constraints / AbstractComparablePropertyConstraint.java
index 1611356..6182eeb 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,7 +17,6 @@
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
 package org.openecomp.sdc.be.model.tosca.constraints;
 
 import org.openecomp.sdc.be.model.tosca.ToscaType;
@@ -33,10 +32,8 @@ public abstract class AbstractComparablePropertyConstraint extends AbstractPrope
         return comparable;
     }
 
-    protected void initialize(String rawTextValue, ToscaType propertyType)
-            throws ConstraintValueDoNotMatchPropertyTypeException {
-        // Perform verification that the property type is supported for
-        // comparison
+    protected void initialize(String rawTextValue, ToscaType propertyType) throws ConstraintValueDoNotMatchPropertyTypeException {
+        // Perform verification that the property type is supported for comparison
         ConstraintUtil.checkComparableType(propertyType);
         // Check if the text value is valid for the property type
         if (propertyType.isValidValue(rawTextValue)) {
@@ -45,20 +42,26 @@ public abstract class AbstractComparablePropertyConstraint extends AbstractPrope
         } else {
             // Invalid value throw exception
             throw new ConstraintValueDoNotMatchPropertyTypeException(
-                    "The value [" + rawTextValue + "] is not valid for the type [" + propertyType + "]");
+                "The value [" + rawTextValue + "] is not valid for the type [" + propertyType + "]."
+                    + (propertyType.isScalarUnit() ? " Valid values are " + propertyType.getValidValues() : ""));
         }
     }
 
     protected abstract void doValidate(Object propertyValue) throws ConstraintViolationException;
 
+    public abstract boolean validateValueType(String propertyType) throws ConstraintValueDoNotMatchPropertyTypeException;
+
+    public abstract void changeConstraintValueTypeTo(String propertyType) throws ConstraintValueDoNotMatchPropertyTypeException;
+
     @Override
     public void validate(Object propertyValue) throws ConstraintViolationException {
         if (propertyValue == null) {
             throw new ConstraintViolationException("Value to check is null");
         }
         if (!(comparable.getClass().isAssignableFrom(propertyValue.getClass()))) {
-            throw new ConstraintViolationException("Value to check is not comparable to reference type, value type ["
-                    + propertyValue.getClass() + "], reference type [" + comparable.getClass() + "]");
+            throw new ConstraintViolationException(
+                "Value to check is not comparable to reference type, value type [" + propertyValue.getClass() + "], reference type [" + comparable
+                    .getClass() + "]");
         }
         doValidate(propertyValue);
     }