in src/main/java/org/apache/sling/scripting/sightly/render/ObjectModel.java [154:197]
public static boolean toBoolean(Object object) {
if (object == null) {
return false;
}
if (object instanceof Number) {
Number number = (Number) object;
return number.doubleValue() != 0.0;
}
if (object instanceof Boolean) {
return Boolean.TRUE.equals(object);
}
if (object instanceof String) {
return StringUtils.isNotBlank((String) object);
}
if (object instanceof Collection<?>) {
return !((Collection<?>) object).isEmpty();
}
if (object instanceof Map<?, ?>) {
return !((Map<?, ?>) object).isEmpty();
}
if (object instanceof Iterable<?>) {
return ((Iterable<?>) object).iterator().hasNext();
}
if (object instanceof Iterator<?>) {
return ((Iterator<?>) object).hasNext();
}
if (object instanceof Optional<?>) {
Optional<?> optional = (Optional<?>) object;
return optional.filter(ObjectModel::toBoolean).isPresent();
}
if (object.getClass().isArray()) {
return Array.getLength(object) > 0;
}
return true;
}