package com.googlecode.objectify.condition;
import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;
/**
* <p>Simple If condition that returns true if the value is null or empty. The value can be one of:</p>
* <ul>
* <li>java.lang.String</li>
* <li>java.util.Collection</li>
* <li>java.util.Map</li>
* <li>java array of any kind</li>
* </ul>
*
* @author Jeff Schnitzer <jeff@infohazard.org>
*/
public class IfEmpty extends ValueIf<Object>
{
@Override
public boolean matchesValue(Object value)
{
if (value == null)
return true;
if (value instanceof String)
return ((String)value).isEmpty();
if (value instanceof Collection<?>)
return ((Collection<?>)value).isEmpty();
if (value instanceof Map<?, ?>)
return ((Map<?, ?>)value).isEmpty();
if (value.getClass().isArray())
return Array.getLength(value) == 0;
throw new IllegalArgumentException("Don't know what to do with something of type " + value.getClass().getName());
}
}