public static boolean asEmpty()

in velocity-engine-core/src/main/java/org/apache/velocity/util/DuckType.java [148:214]


    public static boolean asEmpty(Object value)
    {
        // empty variable
        if (value == null)
        {
            return true;
        }

        // empty array
        if (value.getClass().isArray())
        {
            return Array.getLength(value) == 0;// [] is false
        }

        // isEmpty() for object / string
        Object isEmpty = get(value, Types.EMPTY);
        if (isEmpty != NO_METHOD)
        {
            return (Boolean)isEmpty;
        }

        // isEmpty() for object / other char sequences
        Object length = get(value, Types.LENGTH);
        if (length != NO_METHOD && length instanceof Number)
        {
            return isZero((Number)length);
        }

        // size() object / collection
        Object size = get(value, Types.SIZE);
        if (size != NO_METHOD && size instanceof Number)
        {
            return isZero((Number)size);
        }

        // zero numbers are false
        if (value instanceof Number)
        {
            return isZero((Number)value);
        }

        // null getAsString()
        Object asString = get(value, Types.STRING);
        if (asString == null)
        {
            return true;// duck null
        }
        // empty getAsString()
        else if (asString != NO_METHOD)
        {
            return ((String)asString).length() == 0;
        }

        // null getAsNumber()
        Object asNumber = get(value, Types.NUMBER);
        if (asNumber == null)
        {
            return true;
        }
        // zero numbers are false
        else if (asNumber != NO_METHOD && asNumber instanceof Number)
        {
            return isZero((Number)asNumber);
        }

        return false;
    }