package org.jboss.windup.config.exception; public class IllegalTypeArgumentException extends IllegalArgumentException { private static final long serialVersionUID = 1L; private final String variableName; private final Class<?> expectedInterface; private final Class<?> actualType; public IllegalTypeArgumentException(String variableName, Class<?> expectedInterface, Class<?> actualType) { this.variableName = variableName; this.expectedInterface = expectedInterface; this.actualType = actualType; } @Override public String getMessage() { StringBuilder implementedInterfaces = new StringBuilder(); for (Class<?> iface : actualType.getInterfaces()) { if (implementedInterfaces.length() != 0) { implementedInterfaces.append(", "); } implementedInterfaces.append(iface.getName()); } String message = "Variable \"" + variableName + "\" does not implement expected interface \"" + expectedInterface.getCanonicalName() + "\", actual implemented interfaces are: " + implementedInterfaces.toString(); return message; } }