org.testng.internal.reflect.MethodMatcherException Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testng Show documentation
Show all versions of testng Show documentation
A testing framework for the JVM
package org.testng.internal.reflect;
import org.testng.TestNGException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Arrays;
/**
* Thrown from MethodMatcher.
*
* @author Nitin Verma
*/
public class MethodMatcherException extends TestNGException {
public MethodMatcherException(final String message, final Method method, final Object[] args) {
this(generateMessage(message, method, args));
}
public MethodMatcherException(String message) {
super(message);
}
public MethodMatcherException(String message, Throwable cause) {
super(message, cause);
}
public MethodMatcherException(Throwable cause) {
super(cause);
}
static String generateMessage(final String message, final Constructor constructor, final Object[] args) {
Parameter[] parameter = null;
String name = null;
if (constructor != null) {
parameter = ReflectionRecipes.getConstructorParameters(constructor);
name = constructor.getName();
}
return generateMessage(message, name, "Constructor", parameter, args);
}
public static String generateMessage(final String message, final Method method, final Object[] args) {
Parameter[] parameter = null;
String name = null;
if (method != null) {
parameter = ReflectionRecipes.getMethodParameters(method);
name = method.getName();
}
return generateMessage(message, name, "Method", parameter, args);
}
private static String generateMessage(final String message,
final String name,
final String prefix,
Parameter[] parameter,
final Object[] args) {
final StringBuilder sb = new StringBuilder();
sb.append(message).append("\n").append(prefix).append(": ");
if (name != null) {
sb.append(name).append("(").append(Arrays.toString(parameter)).append(")");
} else {
sb.append("null");
}
sb.append("\n").append("Arguments: ");
if (args != null) {
sb.append("[");
for (int i = 0; i < args.length; i++) {
final Object arg = args[i];
if (arg != null) {
sb.append("(").append(arg.getClass().getName()).append(") ").append(stringify(arg));
} else {
sb.append("null");
}
if (i < args.length - 1) {
sb.append(",");
}
}
sb.append("]");
} else {
sb.append("Arguments: null");
}
return sb.toString();
}
private static String stringify(Object object) {
if (object.getClass().isArray()) {
return Arrays.toString((Object[]) object);
} else {
return object.toString();
}
}
}