/*
* Copyright (c) 2013-2016 Chris Newland.
* Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD
* Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki
*/
package org.adoptopenjdk.jitwatch.model;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.DEBUG_MEMBER_CREATION;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.List;
public class MetaMethod extends AbstractMetaMember
{
private String methodToString;
public MetaMethod(Method method, MetaClass methodClass)
{
super(method.getName());
this.methodToString = method.toString();
this.metaClass = methodClass;
returnType = method.getReturnType();
paramTypes = Arrays.asList(method.getParameterTypes());
// Can include non-method modifiers such as volatile so AND with
// acceptable values
modifier = method.getModifiers() & Modifier.methodModifiers();
isVarArgs = method.isVarArgs();
checkPolymorphicSignature(method);
if (DEBUG_MEMBER_CREATION)
{
logger.debug("Created MetaMethod: {}", toString());
}
}
public void setParamTypes(List<Class<?>> types)
{
this.paramTypes = types;
}
public void setReturnType(Class<?> returnType)
{
this.returnType = returnType;
}
@Override
public String toString()
{
String methodSigWithoutThrows = methodToString;
int closingParentheses = methodSigWithoutThrows.indexOf(')');
if (closingParentheses != methodSigWithoutThrows.length() - 1)
{
methodSigWithoutThrows = methodSigWithoutThrows.substring(0, closingParentheses + 1);
}
return methodSigWithoutThrows;
}
}