blob: c7f483daca6421399fce8487917eb12dfd97d33f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.dubbo.metadata.extension.rest.api;
import java.lang.reflect.Parameter;
import java.lang.reflect.Type;
/**
* description of service method args info
*/
public class ArgInfo {
/**
* method arg index 0,1,2,3
*/
private int index;
/**
* method annotation name or name
*/
private String annotationNameAttribute;
/**
* param annotation type
*/
private Class paramAnnotationType;
/**
* param Type
*/
private Class paramType;
/**
* param actual Type(collection,map,array)
*/
private Type actualType;
/**
* param name
*/
private String paramName;
/**
* url split("/") String[n] index
*/
private int urlSplitIndex;
private Object defaultValue;
private boolean formContentType;
public ArgInfo(int index, String name, Class paramType) {
this.index = index;
this.paramName = name;
this.paramType = paramType;
}
public ArgInfo(int index, Parameter parameter) {
this(index, parameter.getName(), parameter.getType());
this.actualType = parameter.getParameterizedType();
}
public ArgInfo() {}
public int getIndex() {
return index;
}
public ArgInfo setIndex(int index) {
this.index = index;
return this;
}
public String getAnnotationNameAttribute() {
if (annotationNameAttribute == null) {
// such as String param no annotation
return paramName;
}
return annotationNameAttribute;
}
public ArgInfo setAnnotationNameAttribute(String annotationNameAttribute) {
this.annotationNameAttribute = annotationNameAttribute;
return this;
}
public Class getParamAnnotationType() {
return paramAnnotationType;
}
public ArgInfo setParamAnnotationType(Class paramAnnotationType) {
this.paramAnnotationType = paramAnnotationType;
return this;
}
public Class getParamType() {
return paramType;
}
public void setParamType(Class paramType) {
this.paramType = paramType;
}
public int getUrlSplitIndex() {
return urlSplitIndex;
}
public void setUrlSplitIndex(int urlSplitIndex) {
this.urlSplitIndex = urlSplitIndex;
}
public static ArgInfo build() {
return new ArgInfo();
}
public static ArgInfo build(int index, Parameter parameter) {
return new ArgInfo(index, parameter);
}
public String getParamName() {
return paramName;
}
public ArgInfo setParamName(String paramName) {
this.paramName = paramName;
return this;
}
public Object getDefaultValue() {
return defaultValue;
}
public ArgInfo setDefaultValue(Object defaultValue) {
this.defaultValue = defaultValue;
return this;
}
public boolean isFormContentType() {
return formContentType;
}
public ArgInfo setFormContentType(boolean isFormContentType) {
this.formContentType = isFormContentType;
return this;
}
public Type actualReflectType() {
return actualType;
}
@Override
public String toString() {
return "ArgInfo{" + "index="
+ index + ", annotationNameAttribute='"
+ annotationNameAttribute + '\'' + ", paramAnnotationType="
+ paramAnnotationType + ", paramType="
+ paramType + ", paramName='"
+ paramName + '\'' + ", urlSplitIndex="
+ urlSplitIndex + ", defaultValue="
+ defaultValue + ", formContentType="
+ formContentType + '}';
}
}