"david.lloyd(a)jboss.com" wrote : The most obvious mechanism to me is a
ValueMetaData that is comprised of a class and a field name.
The most obvious is value-factory:
| <bean name="ConstantsProvider"
class="org.jboss.demos.ioc.access.ConstantsProvider">
| <constructor>
| <parameter>org.jboss.demos.ioc.access.IConstants</parameter>
| </constructor>
| </bean>
|
| <bean name="XConstUser2"
class="org.jboss.demos.ioc.access.XConstUser">
| <property name="x"><value-factory
bean="ConstantsProvider" method="getConstant"
parameter="X_INT_VALUE"/></property>
| </bean>
|
| public class ConstantsProvider
| {
| private KernelConfigurator configurator;
| private String className;
| private ClassInfo classInfo;
|
| public ConstantsProvider(String className)
| {
| this.className = className;
| }
|
| @Inject(bean = KernelConstants.KERNEL_CONFIGURATOR_NAME)
| public void setConfigurator(KernelConfigurator configurator)
| {
| this.configurator = configurator;
| }
|
| public void create() throws Throwable
| {
| if (configurator == null)
| throw new IllegalArgumentException("Null configurator");
|
| if (className != null)
| classInfo = configurator.getClassInfo(className,
getClass().getClassLoader());
| }
|
| public Object getConstant(String constantName) throws Throwable
| {
| return getConstant(classInfo, constantName);
| }
|
| public Object getConstant(String className, String constantName) throws Throwable
| {
| ClassInfo classInfo = configurator.getClassInfo(className,
getClass().getClassLoader());
| return getConstant(classInfo, constantName);
| }
|
| protected Object getConstant(ClassInfo classInfo, String constantName) throws
Throwable
| {
| FieldInfo field = classInfo.getDeclaredField(constantName);
| return field.get(null);
| }
| }
|
I can add this as part of Kernel,
probably next to BeanMetaDataBuilder.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4193805#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...