
mockit.internal.state.ParameterNames Maven / Gradle / Ivy
/*
* Copyright (c) 2006-2013 Rogério Liesenfeld
* This file is subject to the terms of the MIT license (see LICENSE.txt).
*/
package mockit.internal.state;
import java.lang.reflect.*;
import java.util.*;
import mockit.external.asm4.Type;
public final class ParameterNames
{
private static final Map> classesToMethodsToParameters =
new HashMap>();
private static final String[] NO_PARAMETERS = new String[0];
public static boolean hasNamesForClass(String classDesc)
{
return classesToMethodsToParameters.containsKey(classDesc);
}
public static void registerName(
String classDesc, int methodAccess, String methodName, String methodDesc, String name, int index)
{
if ("this".equals(name)) {
return;
}
Map methodsToParameters = classesToMethodsToParameters.get(classDesc);
if (methodsToParameters == null) {
methodsToParameters = new HashMap();
classesToMethodsToParameters.put(classDesc, methodsToParameters);
}
String methodKey = methodName + methodDesc;
String[] parameterNames = methodsToParameters.get(methodKey);
if (parameterNames == null) {
int numParameters = Type.getArgumentTypes(methodDesc).length;
parameterNames = numParameters == 0 ? NO_PARAMETERS : new String[numParameters];
methodsToParameters.put(methodKey, parameterNames);
}
if (!Modifier.isStatic(methodAccess)) {
index--;
}
if (index < parameterNames.length) {
parameterNames[index] = name;
}
}
public static String getName(String classDesc, String methodDesc, int index)
{
Map methodsToParameters = classesToMethodsToParameters.get(classDesc);
if (methodsToParameters == null) {
return null;
}
String[] parameterNames = methodsToParameters.get(methodDesc);
return parameterNames == null ? null : parameterNames[index];
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy