ResolutionException.java
package info.smart_tools.smartactors.core.iioccontainer.exception;
import java.io.StringWriter;
/**
* Exception that occurs when resolution has been failed
*/
public class ResolutionException extends Exception {
/**
* Constructor with specific error message as argument
* @param message specific error message
*/
public ResolutionException(final String message) {
super(message);
}
/**
* Constructor with specific error message and specific cause as arguments
* @param message specific error message
* @param cause specific cause
*/
public ResolutionException(final String message, final Throwable cause) {
super(message, cause);
}
/**
* Constructor with specific cause as argument
* @param cause specific cause
*/
public ResolutionException(final Throwable cause) {
super(cause);
}
/**
* Generate new {@link ResolutionException} exception with advanced options
* @param targetClass Class type given for resolution
* @param args arguments given for resolution
* @param cause exception cause
* @return new ResolutionException with
*/
public static ResolutionException ofResolution(final Class<?> targetClass, final Object[] args, final Throwable cause) {
StringWriter messageWriter = new StringWriter();
messageWriter.write("Could not resolve dependency of class ");
messageWriter.write(targetClass.getName());
messageWriter.write(" with ");
messageWriter.write(String.valueOf(args.length));
messageWriter.write(" argument(s)");
for (Object arg : args) {
messageWriter.write(" (");
messageWriter.write(arg.getClass().getSimpleName());
messageWriter.write(")'");
messageWriter.write(String.valueOf(arg));
messageWriter.write("'");
}
return new ResolutionException(messageWriter.toString(), cause);
}
}