fromContext dependency regression
adrian.brock Apr 18, 2008 10:21 AMI'm seeing a horrible regression in the fromContext dependency injection.
e.g. this config from the system-jmx tests in the appserver
<?xml version="1.0" encoding="UTF-8"?> <deployment xmlns="urn:jboss:bean-deployer:2.0"> <!-- The legacy JMX kernel --> <bean name="ServiceControllerLocator" class="org.jboss.test.system.controller.integration.support.ServiceControllerLocator" /> <bean name="ServiceLifecycle" class="org.jboss.test.system.controller.integration.support.TestServiceControllerLifecycleCallback"> <property name="mbeanServer"> <inject bean="ServiceControllerLocator" property="mbeanServer"/> </property> <property name="serviceController"> <inject bean="ServiceControllerLocator" property="serviceController"/> </property> </bean> <bean name="TransactionManager" class="org.jboss.test.system.controller.integration.support.MockTransactionManager"> <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss:service=TransactionManager", exposedInterface=org.jboss.test.system.controller.integration.support.MockTransactionManagerMBean.class, registerDirectly=true)</annotation> <property name="transactionTimeout">300</property> <property name="objectStoreDir">${jboss.server.data.dir}/tx-object-store</property> <install bean="ServiceLifecycle" method="install"> <parameter><inject fromContext="context"/></parameter> </install> <uninstall bean="ServiceLifecycle" method="uninstall"> <parameter><inject fromContext="context"/></parameter> </uninstall> </bean> </deployment>
is causing a circular dependency of the bean on itself.
AbstractDependencyItem@e59e40{name=TransactionManager dependsOn=TransactionManager whenRequired=Installed dependentState=Installed resolved=false}
Each FromContext enumeration value should have an associated state
when it becomes valid. Most will be PreInstall, but some like BeanInfo
will Instantiated.
Something like:
public enum FromContext { ... BEANINFO(FromContextDelegate.BEANINFO, ControllerState.INSTANTIATED),
With the second value used to determine the dependent state.