package org.springframework.data.simpledb.reflection;
import org.springframework.util.Assert;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
public enum SupportedCoreTypes {
PRIMITIVE_TYPES {
@Override
public boolean isOfType(Class<?> clazz) {
return clazz.isPrimitive();
}
},
CORE_TYPES {
@Override
public boolean isOfType(Class<?> clazz) {
return isOfType(clazz, SUPPORTED_CORE_TYPES);
}
},
ARRAYS {
@Override
public boolean isOfType(Class<?> clazz) {
return isOfType(clazz, SUPPORTED_ARRAYS);
}
};
public abstract boolean isOfType(final Class<?> clazz);
public static boolean isSupported(final Class<?> clazz) {
return PRIMITIVE_TYPES.isOfType(clazz) || CORE_TYPES.isOfType(clazz) || ARRAYS.isOfType(clazz);
}
static boolean isOfType(final Class<?> clazz, final Set<Class<?>> supportedTypes) {
Assert.notNull(clazz);
for(Class<?> supportedClazz : supportedTypes) {
if(clazz == supportedClazz || supportedClazz.isAssignableFrom(clazz)) {
return true;
}
}
return false;
}
private static final Set<Class<?>> SUPPORTED_CORE_TYPES = new HashSet<Class<?>>();
static {
SUPPORTED_CORE_TYPES.add(Boolean.class);
SUPPORTED_CORE_TYPES.add(Number.class);
SUPPORTED_CORE_TYPES.add(Character.class);
SUPPORTED_CORE_TYPES.add(String.class);
SUPPORTED_CORE_TYPES.add(Date.class);
}
private static final Set<Class<?>> SUPPORTED_ARRAYS = new HashSet<Class<?>>();
static {
SUPPORTED_ARRAYS.add(boolean[].class);
SUPPORTED_ARRAYS.add(long[].class);
SUPPORTED_ARRAYS.add(short[].class);
SUPPORTED_ARRAYS.add(int[].class);
SUPPORTED_ARRAYS.add(byte[].class);
SUPPORTED_ARRAYS.add(float[].class);
SUPPORTED_ARRAYS.add(double[].class);
SUPPORTED_ARRAYS.add(char[].class);
SUPPORTED_ARRAYS.add(Boolean[].class);
SUPPORTED_ARRAYS.add(Character[].class);
SUPPORTED_ARRAYS.add(Date[].class);
SUPPORTED_ARRAYS.add(String[].class);
SUPPORTED_ARRAYS.add(Number[].class);
}
}