in src/main/java/com/amazonaws/sagemaker/helper/DataConversionHelper.java [145:205]
protected Object convertInputDataToJavaType(final String type, final String structure, final Object value) {
if (StringUtils.isBlank(structure) || StringUtils.equals(structure, DataStructureType.BASIC)) {
switch (type) {
case BasicDataType.INTEGER:
return new Integer(value.toString());
case BasicDataType.LONG:
return new Long(value.toString());
case BasicDataType.FLOAT:
return new Float(value.toString());
case BasicDataType.DOUBLE:
return new Double(value.toString());
case BasicDataType.BOOLEAN:
return Boolean.valueOf(value.toString());
case BasicDataType.BYTE:
return new Byte(value.toString());
case BasicDataType.SHORT:
return new Short(value.toString());
case BasicDataType.STRING:
return value.toString();
default:
throw new IllegalArgumentException("Given type is not supported");
}
} else if (!StringUtils.isBlank(structure) && StringUtils.equals(structure, DataStructureType.ARRAY)) {
List<Object> listOfObjects;
try {
listOfObjects = (List<Object>) value;
} catch (ClassCastException cce) {
throw new IllegalArgumentException("Input val is not a list but struct passed is array");
}
switch (type) {
case BasicDataType.INTEGER:
return listOfObjects.stream().map(elem -> (Integer) elem).collect(Collectors.toList());
case BasicDataType.LONG:
return listOfObjects.stream().map(elem -> (Long) elem).collect(Collectors.toList());
case BasicDataType.FLOAT:
case BasicDataType.DOUBLE:
return listOfObjects.stream().map(elem -> (Double) elem).collect(Collectors.toList());
case BasicDataType.BOOLEAN:
return listOfObjects.stream().map(elem -> (Boolean) elem).collect(Collectors.toList());
case BasicDataType.BYTE:
return listOfObjects.stream().map(elem -> (Byte) elem).collect(Collectors.toList());
case BasicDataType.SHORT:
return listOfObjects.stream().map(elem -> (Short) elem).collect(Collectors.toList());
case BasicDataType.STRING:
return listOfObjects.stream().map(elem -> (String) elem).collect(Collectors.toList());
default:
throw new IllegalArgumentException("Given type is not supported");
}
} else {
if(!type.equals(BasicDataType.DOUBLE))
throw new IllegalArgumentException("Only Double type is supported for vector");
List<Double> vectorValues;
try {
vectorValues = (List<Double>)value;
} catch (ClassCastException cce) {
throw new IllegalArgumentException("Input val is not a list but struct passed is vector");
}
double[] primitiveVectorValues = vectorValues.stream().mapToDouble(d -> d).toArray();
return Vectors.dense(primitiveVectorValues);
}
}