jaikiran pai [http://community.jboss.org/people/jaikiran] created the discussion
"How to avoid canonical conversion of AbstractInjectionValueMetaData's value?" To view the discussion, visit: http://community.jboss.org/message/536376#536376 -------------------------------------------------------------- I have got a piece of code which deploys a MC bean into the kernel: String beanName = "abc";BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(beanName, MyClass.class.getName());String constructorParamMCBeanName = "jboss.domain:m=xyz,c=pqr" builder.addConstructorParameter(SomeClass.class.getName(), new AbstractInjectionValueMetaData(constructorParamMCBeanName)); So effectively, it's creating a MC bean for MyClass which accepts an instance of SomeClass as its constructor param: public class MyClass{ public MyClass(SomeClass param) { ... }} The SomeClass instance which itself is a MC bean with MC bean name "jboss.domain:m=xyz,c=pqr" gets deployed by some other piece of code.This is simple enough and should have worked. But it doesn't. When the "abc" MC bean is installed, it runs into: DEPLOYMENTS MISSING DEPENDENCIES: Deployment "abc" is missing the following dependencies: Dependency "jboss.domain:c=pqr,m=xyz" (should be in state "Installed", but is actually in state "** NOT FOUND Depends on 'jboss.domain:c=pqr,m=xyz' **") Notice that the (injection) dependency MC bean name has been converted to a canonical name. Shouldn't have happened.But looking at the constructor of AbstractInjectionValueMetaData, a call to new AbstractInjectionValueMetaData(constructorParamMCBeanName), leads to: public AbstractValueMetaData(Object value) { setValue(value); } public void setValue(Object value) { Object jmxHack = null; if (isUseJMXObjectNameFix()) jmxHack = JMXObjectNameFix.needsAnAlias(value); if (jmxHack != null) this.value = jmxHack; else this.value = value; flushJBossObjectCache(); } /** * Do we use jmx object name fix. * * @return do we use jmx object name fix */ protected boolean isUseJMXObjectNameFix() { return true; } The isUseJMXObjectNameFix always returns true and then JMXObjectNameFix.needsAnAlias(value) converts the MC bean name to its canonical form. I see no way to prevent this from happening (other than create a subclass - which is a bit too much to do for this simple usecase). Am I missing something? Or is there some other way to get around this? -------------------------------------------------------------- Reply to this message by going to Community [http://community.jboss.org/message/536376#536376] Start a new discussion in JBoss Microcontainer at Community [http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2114]
_______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
