package core.framework.impl.cache; import core.framework.impl.validate.type.DataTypeValidator; import java.lang.reflect.Type; import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZonedDateTime; /** * @author neo */ class CacheTypeValidator { private final DataTypeValidator validator; CacheTypeValidator(Type instanceType) { validator = new DataTypeValidator(instanceType); validator.allowedValueClass = this::allowedValueClass; validator.allowChild = true; validator.allowTopLevelList = true; validator.allowTopLevelValue = true; } public void validate() { validator.validate(); } private boolean allowedValueClass(Class<?> valueClass) { return String.class.equals(valueClass) || Integer.class.equals(valueClass) || Boolean.class.equals(valueClass) || Long.class.equals(valueClass) || Double.class.equals(valueClass) || BigDecimal.class.equals(valueClass) || LocalDate.class.equals(valueClass) || LocalDateTime.class.equals(valueClass) || ZonedDateTime.class.equals(valueClass) || Instant.class.equals(valueClass) || valueClass.isEnum() || "org.bson.types.ObjectId".equals(valueClass.getCanonicalName()); // not depends on mongo jar if application doesn't include mongo driver; } }