package org.vertexium.cypher.exceptions;
import java.util.Arrays;
import java.util.stream.Collectors;
public class VertexiumCypherTypeErrorException extends VertexiumCypherException {
private static final long serialVersionUID = 4097761075124617864L;
public VertexiumCypherTypeErrorException(String message) {
super(message);
}
public VertexiumCypherTypeErrorException(Object value, Class... acceptedClasses) {
super(createMessage(value, acceptedClasses));
}
private static String createMessage(Object value, Class[] acceptedClasses) {
return String.format(
"InvalidArgumentValue: expected one of [%s] found \"%s\"",
Arrays.stream(acceptedClasses)
.map((c) -> c == null ? "null" : c.getName())
.collect(Collectors.joining(", ")),
value == null ? "null" : value.getClass().getName()
);
}
public static void assertType(Object value, Class... acceptedClasses) {
for (Class acceptedClass : acceptedClasses) {
if (acceptedClass == null) {
if (value == null) {
return;
}
} else if (acceptedClass.isInstance(value)) {
return;
}
}
throw new VertexiumCypherTypeErrorException(value, acceptedClasses);
}
}