in maestro-common/src/main/java/com/netflix/maestro/utils/ParamHelper.java [40:160]
public static Parameter deriveTypedParameter(
String name,
String expression,
Object evaluatedResult,
TagList tags,
ParamMode paramMode,
Map<String, Object> paramMeta) {
if (evaluatedResult instanceof String) {
return StringParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (evaluatedResult instanceof Long) {
return LongParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (evaluatedResult instanceof Double) {
return DoubleParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (evaluatedResult instanceof Boolean) {
return BooleanParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (evaluatedResult instanceof Map) {
return MapParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (evaluatedResult instanceof List) {
List<?> list = (List<?>) evaluatedResult;
if (!list.isEmpty()) {
Object item = list.getFirst();
if (item instanceof String) {
return StringArrayParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (item instanceof Long) {
return LongArrayParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (item instanceof Double || item instanceof BigDecimal) {
return DoubleArrayParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (item instanceof Boolean) {
return BooleanArrayParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
}
}
} else if (evaluatedResult instanceof String[]) {
return StringArrayParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (evaluatedResult instanceof long[]) {
return LongArrayParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (evaluatedResult instanceof double[]) {
return DoubleArrayParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
} else if (evaluatedResult instanceof boolean[]) {
return BooleanArrayParameter.builder()
.name(name)
.expression(expression)
.tags(tags)
.mode(paramMode)
.meta(paramMeta)
.build();
}
throw new MaestroInternalError(
"Param [%s] type [%s] is not supported.", name, evaluatedResult.getClass().getName());
}