package org.theonefx.wcframework.ioc;
/**
* 对{@link org.theonefx.wcframework.ioc.AttributeAccessorSupport}的扩展,
* 以{@link BeanMetadataAttribute}的形式来持有attributes,以便于跟踪attribute的definition source.
*/
public class BeanMetadataAttributeAccessor extends AttributeAccessorSupport implements BeanMetadataElement {
private static final long serialVersionUID = 1L;
private Object source;
/**
* 设置当前元数据元素的configuration source对象
* <p>对象的确切类型将取决于所使用的配置机制.
*/
public void setSource(Object source) {
this.source = source;
}
public Object getSource() {
return this.source;
}
@Override
public void setAttribute(String name, Object value) {
super.setAttribute(name, new BeanMetadataAttribute(name, value));
}
@Override
public Object getAttribute(String name) {
BeanMetadataAttribute attribute = (BeanMetadataAttribute) super.getAttribute(name);
return (attribute != null ? attribute.getValue() : null);
}
@Override
public Object removeAttribute(String name) {
BeanMetadataAttribute attribute = (BeanMetadataAttribute) super.removeAttribute(name);
return (attribute != null ? attribute.getValue() : null);
}
}