/*
* Copyright 2014 NAVER Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.navercorp.pinpoint.profiler.context;
import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor;
import com.navercorp.pinpoint.profiler.util.ApiUtils;
import java.util.Arrays;
/**
* @author emeroad
*/
public class DefaultMethodDescriptor implements MethodDescriptor {
private String className;
private String methodName;
private String[] parameterTypes;
private String[] parameterVariableName;
private String parameterDescriptor;
private String apiDescriptor;
private int lineNumber;
private int apiId = 0;
private String fullName;
private int type = 0;
public DefaultMethodDescriptor() {
}
public DefaultMethodDescriptor(String className, String methodName, String[] parameterTypes, String[] parameterVariableName) {
this.className = className;
this.methodName = methodName;
this.parameterTypes = parameterTypes;
this.parameterVariableName = parameterVariableName;
this.parameterDescriptor = ApiUtils.mergeParameterVariableNameDescription(parameterTypes, parameterVariableName);
this.apiDescriptor = ApiUtils.mergeApiDescriptor(className, methodName, parameterDescriptor);
}
public String getParameterDescriptor() {
return parameterDescriptor;
}
public void setParameterDescriptor(String parameterDescriptor) {
this.parameterDescriptor = parameterDescriptor;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public void setParameterTypes(String[] parameterTypes) {
this.parameterTypes = parameterTypes;
}
public void setParameterVariableName(String[] parameterVariableName) {
this.parameterVariableName = parameterVariableName;
}
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
@Override
public String getMethodName() {
return methodName;
}
@Override
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@Override
public String[] getParameterTypes() {
return parameterTypes;
}
@Override
public String[] getParameterVariableName() {
return parameterVariableName;
}
public int getLineNumber() {
return lineNumber;
}
@Override
public String getFullName() {
if (fullName != null) {
return fullName;
}
StringBuilder buffer = new StringBuilder(256);
buffer.append(className);
buffer.append(".");
buffer.append(methodName);
buffer.append(parameterDescriptor);
if (lineNumber != -1) {
buffer.append(":");
buffer.append(lineNumber);
}
fullName = buffer.toString();
return fullName;
}
public void setApiDescriptor(String apiDescriptor) {
this.apiDescriptor = apiDescriptor;
}
@Override
public String getApiDescriptor() {
return apiDescriptor;
}
@Override
public void setApiId(int apiId) {
this.apiId = apiId;
}
@Override
public int getApiId() {
return apiId;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("{className=");
builder.append(className);
builder.append(", methodName=");
builder.append(methodName);
builder.append(", parameterTypes=");
builder.append(Arrays.toString(parameterTypes));
builder.append(", parameterVariableName=");
builder.append(Arrays.toString(parameterVariableName));
builder.append(", parameterDescriptor=");
builder.append(parameterDescriptor);
builder.append(", apiDescriptor=");
builder.append(apiDescriptor);
builder.append(", lineNumber=");
builder.append(lineNumber);
builder.append(", apiId=");
builder.append(apiId);
builder.append(", fullName=");
builder.append(fullName);
builder.append(", type=");
builder.append(type);
builder.append("}");
return builder.toString();
}
}