package water.exceptions; import water.util.HttpResponseStatus; import water.util.IcedHashMap; import water.util.IcedHashMapGeneric; public class H2OIllegalArgumentException extends H2OAbstractRuntimeException { protected int HTTP_RESPONSE_CODE() { return HttpResponseStatus.PRECONDITION_FAILED.getCode(); } public H2OIllegalArgumentException(String argument, String function, Object value) { super("Illegal argument: " + argument + " of function: " + function + ": " + (value == null ? "null":value.toString()), "Illegal argument: " + argument + " of function: " + function + ": " + (value == null ? "null":value.toString()) + " of class: " + (value == null ? "null":value.getClass())); this.values = new IcedHashMapGeneric.IcedHashMapStringObject(); this.values.put("function", function); this.values.put("argument", argument); if (value!=null) this.values.put("value", value); } /** Raw-message constructor for use by subclasses. */ public H2OIllegalArgumentException(String message, String dev_message, IcedHashMapGeneric.IcedHashMapStringObject values) { super(message, dev_message, values); } /** Raw-message constructor for use by subclasses. */ public H2OIllegalArgumentException(String message, String dev_message) { super(message, dev_message); } /** Raw-message constructor for use by subclasses. */ public H2OIllegalArgumentException(String message) { super(message, message); } public static H2OIllegalArgumentException wrongKeyType(String fieldName, String keyName, String expectedType, Class actualType) { H2OIllegalArgumentException e = new H2OIllegalArgumentException( expectedType + " argument: " + fieldName + " with value: " + keyName + " points to a non-" + expectedType + " object: " + actualType.getSimpleName(), expectedType + " argument: " + fieldName + " with value: " + keyName + " points to a non-" + expectedType + " object: " + actualType.getName()); e.values = new IcedHashMapGeneric.IcedHashMapStringObject(); e.values.put("argument", fieldName); e.values.put("value", keyName); e.values.put("expected_type", expectedType); e.values.put("actual_type", actualType); return e; } }