package org.ripple.power.ioc.injector.attribute;
import org.ripple.power.ioc.injector.Container;
import org.ripple.power.ioc.reflect.Reflector;
public abstract class AttributeAbstractInjector implements AttributeInjector {
protected String attributeName;
private Reflector reflector;
public AttributeAbstractInjector(Reflector reflector, String attributeName) {
this.attributeName = attributeName;
this.reflector = reflector;
}
final public void inject(Container container, Object target) {
Object result = getInstance(container, target);
if (!(result instanceof Object[])) {
result = new Object[] { result };
}
reflector.setInvoke(target, attributeName, (Object[]) result);
}
protected abstract Object getInstance(Container container, Object target);
}