Types { public static boolean toBoolean(TemplateContext ctx, Object o) { if (o == null) { return false; } if (o instanceof Boolean) { return (Boolean) o; } if (o instanceof Number) { double d = ((Number) o).doubleValue(); return !Double.isNaN(d) && d != 0; } if (o instanceof Collection<?>) { return !((Collection<?>) o).isEmpty(); } if (o instanceof Map<?, ?>) { return !((Map<?, ?>) o).isEmpty(); } if (Types.isString(ctx, o)) { return !StringUtils.isEmpty(Types.toString(ctx, o)); } return true; } private  Types(); static Object coerce(TemplateContext ctx, Class<?> type, final Object o); static String getClassName(TemplateContext ctx, Object o); static TypeCode getTypeCode(TemplateContext ctx, Object o); static boolean isArray(TemplateContext ctx, Object o); static boolean isNumeric(TemplateContext ctx, Object o); static boolean isDouble(TemplateContext ctx, Object o); static boolean isIntegral(TemplateContext ctx, Object o); static boolean isString(TemplateContext ctx, Object o); static boolean isEnum(TemplateContext ctx, Object o); static boolean isBoolean(TemplateContext ctx, Object o1); static boolean isComparable(TemplateContext ctx, Object o); static boolean toBoolean(TemplateContext ctx, Object o); static double toDouble(TemplateContext ctx, Object o); static int toInteger(TemplateContext ctx, Object o); static long toLong(TemplateContext ctx, Object o); static Iterator<?> toIterator(TemplateContext ctx, Object o); static Object[] toObjectArray(TemplateContext ctx, Object o); static String toString(TemplateContext ctx, Object o);  }
@Test public void testToBoolean() { assertTrue(Types.toBoolean(null, 1)); assertFalse(Types.toBoolean(null, 0)); assertFalse(Types.toBoolean(null, null)); assertFalse(Types.toBoolean(null, "")); assertTrue(Types.toBoolean(null, "0")); assertTrue(Types.toBoolean(null, "1")); assertTrue(Types.toBoolean(null, "2")); }