import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
import com.google.gson.JsonParser;
import com.google.gson.stream.JsonReader;
import fj.data.Either;
import org.openecomp.sdc.common.log.wrappers.Logger;
import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
import org.springframework.stereotype.Service;
+import org.yaml.snakeyaml.Yaml;
@Service
public class PropertyConvertor {
.convertDataTypeToToscaObject(innerType, dataTypes, innerConverter, isScalar, jsonElement, preserveEmptyValue);
}
return convertedValue;
+
+ } catch (JsonParseException e) {
+ log.trace("{} not parsable as JSON. Convert as YAML instead", value);
+ return new Yaml().load(value);
} catch (Exception e) {
log.debug("convertToToscaValue failed to parse json value :", e);
return null;
propertyConvertor.convertProperty(Collections.emptyMap(), property, PropertyConvertor.PropertyType.PROPERTY);
assertEquals("/", toscaProperty.getDefaultp());
}
+
+ @Test
+ void convertPropertyWithYamlValue() {
+ final PropertyDefinition property = new PropertyDataDefinitionBuilder()
+ .setDefaultValue("{concat: [ get_input: service_name, '--', 'WirelessService']}")
+ .setType(ToscaPropertyType.STRING.getType())
+ .build();
+ final ToscaProperty toscaProperty =
+ propertyConvertor.convertProperty(Collections.emptyMap(), property, PropertyConvertor.PropertyType.PROPERTY);
+ assertTrue(toscaProperty.getDefaultp() instanceof Map);
+ assertTrue(((Map)toscaProperty.getDefaultp()).get("concat") instanceof List);
+ assertEquals(3, ((List)((Map)toscaProperty.getDefaultp()).get("concat")).size());
+ }
}