
com.baidu.disconf.client.common.model.DisconfCenterItem Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of disconf-client Show documentation
Show all versions of disconf-client Show documentation
https://github.com/knightliao/disconf/tree/master/disconf-client
package com.baidu.disconf.client.common.model;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import com.baidu.disconf.client.support.utils.ClassUtils;
/**
* 配置项表示
*
* @author liaoqiqi
* @version 2014-5-20
*/
public class DisconfCenterItem extends DisconfCenterBaseModel {
// 文件项的KEY
private String key;
private Object value;
// Field
private Field field;
private Method setMethod;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public void setField(Field field) {
this.field = field;
}
/**
* 是否是静态域
*
* @return
*/
public boolean isStatic() {
return Modifier.isStatic(field.getModifiers());
}
public Class> getDeclareClass() {
return field.getDeclaringClass();
}
public void setSetMethod(Method setMethod) {
this.setMethod = setMethod;
}
/**
* 返回值
*
* @param fieldValue
*
* @return
*
* @throws Exception
*/
public Object getFieldValueByType(Object fieldValue) throws Exception {
return ClassUtils.getValeByType(field.getType(), fieldValue);
}
public Object getFieldDefaultValue(Object object) throws Exception {
return field.get(object);
}
/**
* 设置value, 优先使用 setter method, 然后其次是反射
*
* @param value
*/
public Object setValue4StaticFileItem(Object value) throws Exception {
if (setMethod != null) {
setMethod.invoke(null, value);
} else {
field.set(null, value);
}
return value;
}
public Object setValue4FileItem(Object object, Object value) throws Exception {
if (setMethod != null) {
setMethod.invoke(object, value);
} else {
field.set(object, value);
}
return value;
}
@Override
public String toString() {
return "\n\tDisconfCenterItem [\n\tkey=" + key + "\n\tvalue=" + value + "\n\tfield=" + field +
super.toString() + "]";
}
@Override
public String infoString() {
return "\n\tDisconfCenterItem [\n\tvalue=" + value + "\n\tfield=" + field + super.infoString() + "]";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy