package net.thucydides.core.steps; import org.joda.time.DateTime; import java.util.*; public class DefaultValue { private static final Map<Class, Object> DEFAULT_VALUES = new HashMap<Class, Object>(); static { DEFAULT_VALUES.put(String.class, ""); DEFAULT_VALUES.put(Integer.class, 0); DEFAULT_VALUES.put(Long.class, 0L); DEFAULT_VALUES.put(Boolean.class, false); DEFAULT_VALUES.put(Double.class, 0.0); DEFAULT_VALUES.put(Float.class, 0.0F); DEFAULT_VALUES.put(Date.class, new DateTime(2000,1,1,0,0,0).toDate()); DEFAULT_VALUES.put(DateTime.class, new DateTime(2000,1,1,0,0,0)); DEFAULT_VALUES.put(List.class, Collections.EMPTY_LIST); DEFAULT_VALUES.put(Set.class, Collections.EMPTY_SET); DEFAULT_VALUES.put(Map.class, Collections.EMPTY_MAP); } public static Object forClass(Class<?> declaringClass) { Object defaultValue = null; Set<Class> classes = DEFAULT_VALUES.keySet(); for (Class returnType : classes) { if (returnType.isAssignableFrom(declaringClass)) { defaultValue = DEFAULT_VALUES.get(returnType); break; } } return defaultValue; } }