package ddth.dasp.framework.api; import java.util.Map; public class ApiParameter<T> { private String name; private Class<T> clazz; public ApiParameter(String name, Class<T> clazz) { this.name = name; this.clazz = clazz; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Class<T> getClazz() { return clazz; } public void setClazz(Class<T> clazz) { this.clazz = clazz; } /** * Extracts parameter value from input map. * * @param inputs * @return */ public T extractValue(Map<String, Object> inputs) { return extractValue(inputs.get(name)); } /** * Extracts parameter value from input. * * @param input * @return */ @SuppressWarnings("unchecked") public T extractValue(Object input) { if (input == null) { return null; } if (input instanceof Map<?, ?>) { return extractValue((Map<String, Object>) input); } if (clazz.isAssignableFrom(input.getClass())) { return (T) input; } if (clazz == Integer.class) { Object result = Integer.parseInt(input.toString()); return (T) result; } if (clazz == Long.class) { Object result = Long.parseLong(input.toString()); return (T) result; } if (clazz == Float.class) { Object result = Float.parseFloat(input.toString()); return (T) result; } if (clazz == Double.class) { Object result = Double.parseDouble(input.toString()); return (T) result; } return (T) input; } }