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); } }