Fix checkstyle violations in sdc/jtosca
[sdc/sdc-tosca.git] / src / main / java / org / onap / sdc / toscaparser / api / Property.java
index 743262a..e20bd2f 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.
@@ -37,138 +37,139 @@ import java.util.stream.Collectors;
 
 public class Property {
     // TOSCA built-in Property type
-       private static final Logger logger = LoggerFactory.getLogger(Property.class.getName());
-
-       private static final String TYPE = "type";
-       private static final String REQUIRED = "required";
-       private static final String DESCRIPTION = "description";
-       private static final String DEFAULT = "default";
-       private static final String CONSTRAINTS = "constraints";
-    private static String ENTRY_SCHEMA = "entry_schema";
-       private static String DATA_TYPE = "datatypes";
-
-       private static final String[] PROPERTY_KEYS = {
-                       TYPE, REQUIRED, DESCRIPTION, DEFAULT, CONSTRAINTS};
-
-       private static final String ENTRYTYPE = "type";
-       private static final String ENTRYPROPERTIES = "properties";
-       private static final String PATH_DELIMITER = "#";
-       private static final String[] ENTRY_SCHEMA_KEYS = {
-        ENTRYTYPE, ENTRYPROPERTIES};
-       
-       private String name;
-       private Object value;
-       private Schema schema;
-       private LinkedHashMap<String,Object> customDef;
-
-       public Property(Map.Entry<String,Object> propertyEntry){
+    private static final Logger LOGGER = LoggerFactory.getLogger(Property.class.getName());
+
+    private static final String TYPE = "type";
+    private static final String REQUIRED = "required";
+    private static final String DESCRIPTION = "description";
+    private static final String DEFAULT = "default";
+    private static final String CONSTRAINTS = "constraints";
+    private static String entrySchema = "entry_schema";
+    private static String dataType = "datatypes";
+
+    private static final String[] PROPERTY_KEYS = {
+            TYPE, REQUIRED, DESCRIPTION, DEFAULT, CONSTRAINTS};
+
+    private static final String ENTRYTYPE = "type";
+    private static final String ENTRYPROPERTIES = "properties";
+    private static final String PATH_DELIMITER = "#";
+    private static final String[] ENTRY_SCHEMA_KEYS = {
+            ENTRYTYPE, ENTRYPROPERTIES};
+
+    private String name;
+    private Object value;
+    private Schema schema;
+    private LinkedHashMap<String, Object> customDef;
+
+    public Property(Map.Entry<String, Object> propertyEntry) {
         name = propertyEntry.getKey();
         value = propertyEntry.getValue();
-       }
-       public Property(String propname,
-                                       Object propvalue,
-                                       LinkedHashMap<String,Object> propschemaDict,
-                                       LinkedHashMap<String,Object> propcustomDef) {
-               
+    }
+
+    public Property(String propname,
+                    Object propvalue,
+                    LinkedHashMap<String, Object> propschemaDict,
+                    LinkedHashMap<String, Object> propcustomDef) {
+
         name = propname;
         value = propvalue;
         customDef = propcustomDef;
         schema = new Schema(propname, propschemaDict);
-       }
-       
-       public String getType() {
-               return schema.getType();
-       }
-
-       public boolean isRequired() {
-               return schema.isRequired();
-       }
-       
-       public String getDescription() {
-               return schema.getDescription();
-       }
-
-       public Object getDefault() {
-               return schema.getDefault();
-       }
-
-       public ArrayList<Constraint> getConstraints() {
-               return schema.getConstraints();
-       }
-
-       public LinkedHashMap<String,Object> getEntrySchema() {
-               return schema.getEntrySchema();
-       }
-
-       public String getName() {
-               return name;
-       }
-
-       public Object getValue() {
-               return value;
-       }
-       
-       // setter
-       public Object setValue(Object vob) {
-               value = vob;
-               return value;
-       }
-       
-       public void validate() {
-               // Validate if not a reference property
-               if(!Function.isFunction(value)) {
-                       if(getType().equals(Schema.STRING)) {
-                               value = value.toString();
-                       }
-                       value = DataEntity.validateDatatype(getType(),value,
-                                                                        getEntrySchema(),
-                                                                        customDef,
-                                                                        name);
-                       _validateConstraints();
-               }
-       }
-
-       private void _validateConstraints() {
-               if(getConstraints() != null) {
-                       for(Constraint constraint: getConstraints()) {
-                               constraint.validate(value);
-                       }
-               }
-       }
-
-       @Override
-       public String toString() {
-               return "Property{" +
-                               "name='" + name + '\'' +
-                               ", value=" + value +
-                               ", schema=" + schema +
-                               ", customDef=" + customDef +
-                               '}';
-       }
+    }
+
+    public String getType() {
+        return schema.getType();
+    }
+
+    public boolean isRequired() {
+        return schema.isRequired();
+    }
+
+    public String getDescription() {
+        return schema.getDescription();
+    }
+
+    public Object getDefault() {
+        return schema.getDefault();
+    }
+
+    public ArrayList<Constraint> getConstraints() {
+        return schema.getConstraints();
+    }
+
+    public LinkedHashMap<String, Object> getEntrySchema() {
+        return schema.getEntrySchema();
+    }
+
+
+    public String getName() {
+        return name;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    // setter
+    public Object setValue(Object vob) {
+        value = vob;
+        return value;
+    }
+
+    public void validate() {
+        // Validate if not a reference property
+        if (!Function.isFunction(value)) {
+            if (getType().equals(Schema.STRING)) {
+                value = value.toString();
+            }
+            value = DataEntity.validateDatatype(getType(), value,
+                    getEntrySchema(),
+                    customDef,
+                    name);
+            validateConstraints();
+        }
+    }
+
+    private void validateConstraints() {
+        if (getConstraints() != null) {
+            for (Constraint constraint : getConstraints()) {
+                constraint.validate(value);
+            }
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "Property{"
+                + "name='" + name + '\''
+                + ", value=" + value
+                + ", schema=" + schema
+                + ", customDef=" + customDef
+                + '}';
+    }
 
     /**
      * Retrieves property value as list of strings if<br>
      * - the value is simple<br>
      * - the value is list of simple values<br>
      * - the provided path refers to a simple property inside a data type<br>
-     * @param propertyPath valid name of property for search.<br>
-     *        If a name refers to a simple field inside a datatype, the property name should be defined with # delimiter.<br>
      *
+     * @param propertyPath valid name of property for search.<br>
+     *                     If a name refers to a simple field inside a datatype, the property name should be defined with # delimiter.<br>
      * @return List of property values. If not found, empty list will be returned.<br>
      * If property value is a list either of simple fields or of simple fields inside a datatype, all values from the list should be returned
      */
     public List<String> getLeafPropertyValue(String propertyPath) {
         List<String> propertyValueList = Collections.emptyList();
 
-               if (logger.isDebugEnabled()) {
-                       logger.debug("getLeafPropertyValue=> A new request: propertyPath: {}, value: {}", propertyPath, getValue());
-               }
-        if (propertyPath == null || getValue() == null ||
-                               //if entry_schema disappears, it is datatype,
-                               // otherwise it is map of simple types - should be ignored
-                               isValueMapOfSimpleTypes()) {
-               logger.error("It is a wrong request - ignoring! propertyPath: {}, value: {}", propertyPath, getValue());
+        if (LOGGER.isDebugEnabled()) {
+            LOGGER.debug("getLeafPropertyValue=> A new request: propertyPath: {}, value: {}", propertyPath, getValue());
+        }
+        if (propertyPath == null || getValue() == null
+                //if entry_schema disappears, it is datatype,
+                // otherwise it is map of simple types - should be ignored
+                || isValueMapOfSimpleTypes()) {
+            LOGGER.error("It is a wrong request - ignoring! propertyPath: {}, value: {}", propertyPath, getValue());
             return propertyValueList;
         }
         String[] path = propertyPath.split(PATH_DELIMITER);
@@ -176,16 +177,15 @@ public class Property {
         if (Schema.isRequestedTypeSimple(getPropertyTypeByPath(path))) {
             //the internal property type in the path is either simple or list of simple types
             if (isValueInsideDataType()) {
-               if (logger.isDebugEnabled()) {
-                       logger.debug("The requested is an internal simple property inside of a data type");
-                               }
+                if (LOGGER.isDebugEnabled()) {
+                    LOGGER.debug("The requested is an internal simple property inside of a data type");
+                }
                 //requested value is an internal simple property inside of a data type
                 propertyValueList = getSimplePropertyValueForComplexType(path);
-            }
-            else {
-                               if (logger.isDebugEnabled()) {
-                                       logger.debug("The requested property has simple type or list of simple types");
-                               }
+            } else {
+                if (LOGGER.isDebugEnabled()) {
+                    LOGGER.debug("The requested property has simple type or list of simple types");
+                }
                 //the requested property is simple type or list of simple types
                 propertyValueList = getSimplePropertyValueForSimpleType();
             }
@@ -194,44 +194,43 @@ public class Property {
     }
 
     private boolean isValueMapOfSimpleTypes() {
-               if (getValue() instanceof Map && getEntrySchema() != null) {
-                       logger.warn("This property value is a map of simple types");
-                       return true;
-               }
-               return false;
-       }
+        if (getValue() instanceof Map && getEntrySchema() != null) {
+            LOGGER.warn("This property value is a map of simple types");
+            return true;
+        }
+        return false;
+    }
 
     private boolean isValueInsideDataType() {
         //value is either a list of values for data type
         //or data type
         return (Schema.LIST.equals(getType()) && isDataTypeInEntrySchema())
-                               || (getEntrySchema() == null && getType().contains(DATA_TYPE));
+                || (getEntrySchema() == null && getType().contains(dataType));
     }
 
     private Object getSimpleValueFromComplexObject(Object current, String[] path) {
-               if (current == null) {
-                       return null;
-               }
-               int index = 0;
-
-               if (path.length > index) {
-                       for (int i = index; i < path.length; i++) {
-                               if (current instanceof Map) {
-                                       current = ((Map<String, Object>) current).get(path[i]);
-                               } else if (current instanceof List) {
-                                       current = ((List) current).get(0);
-                                       i--;
-                               }
-                               else {
-                                       return null;
-                               }
-                       }
-               }
-               if (current != null) {
-                       return current;
-               }
-               return null;
-       }
+        if (current == null) {
+            return null;
+        }
+        int index = 0;
+
+        if (path.length > index) {
+            for (int i = index; i < path.length; i++) {
+                if (current instanceof Map) {
+                    current = ((Map<String, Object>) current).get(path[i]);
+                } else if (current instanceof List) {
+                    current = ((List) current).get(0);
+                    i--;
+                } else {
+                    return null;
+                }
+            }
+        }
+        if (current != null) {
+            return current;
+        }
+        return null;
+    }
 
     private List<String> getSimplePropertyValueForSimpleType() {
         if (getValue() instanceof List || getValue() instanceof Map) {
@@ -240,32 +239,32 @@ public class Property {
         return Lists.newArrayList(String.valueOf(value));
     }
 
-    private  List<String> getSimplePropertyValueForComplexType(String[] path) {
-       if (getValue() instanceof List ) {
-                       return ((List<Object>) getValue()).stream()
-                                       .map(v -> {
-                                               if (path != null) {
-                                                       return getSimpleValueFromComplexObject(v, path);
-                                               } else {
-                                                       return v;
-                                               }
-                                       })
-                                       //it might be null when get_input can't be resolved
-                                       // e.g.:
-                                       // - get_input has two parameters: 1. list and 2. index in this list
-                                       //and list has no value
-                                       // - neither value no default is defined for get_input
-                                       .filter(Objects::nonNull)
-                                       .map(String::valueOf)
-                                       .collect(Collectors.toList());
-               }
-               //it is data type
-               List<String> valueList = Lists.newArrayList();
-       String valueString = String.valueOf(getSimpleValueFromComplexObject(getValue(), path));
-       if (Objects.nonNull(valueString)) {
-               valueList.add(valueString);
-               }
-               return valueList;
+    private List<String> getSimplePropertyValueForComplexType(String[] path) {
+        if (getValue() instanceof List) {
+            return ((List<Object>) getValue()).stream()
+                    .map(v -> {
+                        if (path != null) {
+                            return getSimpleValueFromComplexObject(v, path);
+                        } else {
+                            return v;
+                        }
+                    })
+                    //it might be null when get_input can't be resolved
+                    // e.g.:
+                    // - get_input has two parameters: 1. list and 2. index in this list
+                    //and list has no value
+                    // - neither value no default is defined for get_input
+                    .filter(Objects::nonNull)
+                    .map(String::valueOf)
+                    .collect(Collectors.toList());
+        }
+        //it is data type
+        List<String> valueList = Lists.newArrayList();
+        String valueString = String.valueOf(getSimpleValueFromComplexObject(getValue(), path));
+        if (Objects.nonNull(valueString)) {
+            valueList.add(valueString);
+        }
+        return valueList;
     }
 
     private String getPropertyTypeByPath(String[] path) {
@@ -281,7 +280,7 @@ public class Property {
         String propertyType = getType();
         if (Schema.LIST.equals(propertyType)) {
             //if it is list, return entry schema type
-            return (String)getEntrySchema().get(ENTRYTYPE);
+            return (String) getEntrySchema().get(ENTRYTYPE);
         }
         return propertyType;
     }
@@ -297,7 +296,7 @@ public class Property {
 
     private String getInternalPropertyType(String dataTypeName, String[] path, int index) {
         if (path.length > index) {
-            LinkedHashMap<String, Object> complexProperty = (LinkedHashMap<String, Object>)customDef.get(dataTypeName);
+            LinkedHashMap<String, Object> complexProperty = (LinkedHashMap<String, Object>) customDef.get(dataTypeName);
             if (complexProperty != null) {
                 LinkedHashMap<String, Object> dataTypeProperties = (LinkedHashMap<String, Object>) complexProperty.get(ENTRYPROPERTIES);
                 return getPropertyTypeFromCustomDefDeeply(path, index, dataTypeProperties);
@@ -308,7 +307,7 @@ public class Property {
     }
 
     private String getEntrySchemaType(LinkedHashMap<String, Object> property) {
-        LinkedHashMap<String, Object> entrySchema = (LinkedHashMap<String, Object>)property.get(ENTRY_SCHEMA);
+        LinkedHashMap<String, Object> entrySchema = (LinkedHashMap<String, Object>) property.get(Property.entrySchema);
         if (entrySchema != null) {
             return (String) entrySchema.get(TYPE);
         }
@@ -320,7 +319,7 @@ public class Property {
             LinkedHashMap<String, Object> foundProperty = (LinkedHashMap<String, Object>) (properties).get(path[index]);
             if (foundProperty != null) {
                 String propertyType = calculatePropertyType(foundProperty);
-                if (propertyType == null || index == path.length - 1){
+                if (propertyType == null || index == path.length - 1) {
                     return propertyType;
                 }
                 return getInternalPropertyType(propertyType, path, index + 1);
@@ -330,8 +329,8 @@ public class Property {
     }
 
     private boolean isDataTypeInEntrySchema() {
-        String entrySchemaType = (String)getEntrySchema().get(ENTRYTYPE);
-        return entrySchemaType != null && entrySchemaType.contains(DATA_TYPE);
+        String entrySchemaType = (String) getEntrySchema().get(ENTRYTYPE);
+        return entrySchemaType != null && entrySchemaType.contains(dataType);
     }