[Design the new POJO MicroContainer] - Serializable contract on deployer output
by scott.stark@jboss.org
A requirement that the AbstractParsingDeployerWithOutput.build(DeploymentUnit unit, Map<String, ManagedObject> managedObjects) imposes on the deployer output is that it must be Serialziable in order for the default ManagedObjectFactory to be usable. A change was made to only check the output type:
| // we can check for Serializable w/o searching for attachment
| if (Serializable.class.isAssignableFrom(getOutput()) == false)
| {
| log.debug("Skipping ManagedObject since T(" + getOutput() + ") is not Serializable");
| }
|
this does not work for interfaces in general, even though the actual implementation may be Serializable as is the case for the BeanDeployer KernelDeployment output.
Previously this was checking the actual output attachment instance for Serializable. We need to restore this check, or just attempt to create the object if the buildManagedObject property is true.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4087665#4087665
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4087665
16 years, 8 months
[Design the new POJO MicroContainer] - Problem deploying bean with a property annotation
by scott.stark@jboss.org
If I deploy a bean like:
| <?xml version="1.0" encoding="UTF-8"?>
|
| <deployment xmlns="urn:jboss:bean-deployer:2.0">
| <bean name="AnnotatedBean" class="org.jboss.test.deployers.vfs.deployer.bean.support.AnnotatedBean">
| <annotation>@org.jboss.managed.api.annotation.ManagementComponent(type="MCBean",subtype="AnnotationTest")</annotation>
| <!-- Test -->
| <property name="propWithXmlOverride">
| <annotation>@org.jboss.managed.api.annotation.ManagementProperty(name="prop3", mappedName="propWithXmlOverride", description="ManagedProperty defined via xml annotation")</annotation>
| </property>
| </bean>
|
I see:
anonymous wrote :
| 17610 ERROR [AbstractKernelController] Error installing to Configured: name=AnnotatedBean state=Instantiated
| java.lang.IllegalArgumentException: Null value metadata
| at org.jboss.kernel.plugins.config.Configurator.getPropertySetterJoinPoint(Configurator.java:497)
| at org.jboss.kernel.plugins.config.Configurator.getPropertySetterJoinPoint(Configurator.java:444)
| at org.jboss.kernel.plugins.config.Configurator.getPropertySetterJoinPoints(Configurator.java:408)
| at org.jboss.kernel.plugins.config.AbstractKernelConfigurator.getPropertySetterJoinPoints(AbstractKernelConfigurator.java:120)
| at org.jboss.kernel.plugins.dependency.ConfigureAction.installActionInternal(ConfigureAction.java:59)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.installAction(KernelControllerContextAction.java:137)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.installAction(KernelControllerContextAction.java:1)
| at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
| at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
| at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
| at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:327)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1309)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:734)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:862)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:784)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:574)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:398)
| at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:68)
| at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:1)
| at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.deploy(AbstractSimpleRealDeployer.java:65)
| at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:169)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:728)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:749)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:669)
| at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:327)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1309)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:734)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:862)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:784)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:622)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:411)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:495)
| at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:354)
| at org.jboss.test.deployers.vfs.deployer.jaxp.DeployerClientTestCase.assertDeploy(DeployerClientTestCase.java:57)
| at org.jboss.test.deployers.vfs.deployer.jaxp.DeployerClientTestCase.assertDeploy(DeployerClientTestCase.java:46)
| at org.jboss.test.deployers.vfs.deployer.bean.test.BeanManagedDeploymentUnitTestCase.testBeanManagedObject(BeanManagedDeploymentUnitTestCase.java:59)
|
If I add a value with any whitespace I see:
| <?xml version="1.0" encoding="UTF-8"?>
|
| <deployment xmlns="urn:jboss:bean-deployer:2.0">
| <bean name="AnnotatedBean" class="org.jboss.test.deployers.vfs.deployer.bean.support.AnnotatedBean">
| <annotation>@org.jboss.managed.api.annotation.ManagementComponent(type="MCBean",subtype="AnnotationTest")</annotation>
| <!-- Test -->
| <property name="propWithXmlOverride">
| <annotation>@org.jboss.managed.api.annotation.ManagementProperty(name="prop3", mappedName="propWithXmlOverride", description="ManagedProperty defined via xml annotation")</annotation>
| 10
| </property>
| </bean>
|
I see:
anonymous wrote :
| 1969 ERROR [AbstractKernelController] Error installing to Configured: name=AnnotatedBean state=Instantiated
| java.lang.NumberFormatException: For input string: "
| 10"
| at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
| at java.lang.Integer.parseInt(Integer.java:447)
| at java.lang.Integer.valueOf(Integer.java:553)
| at sun.beans.editors.IntEditor.setAsText(IntEditor.java:21)
| at org.jboss.reflect.plugins.ValueConvertor.convertValue(ValueConvertor.java:120)
| at org.jboss.reflect.spi.PrimitiveInfo.convertValue(PrimitiveInfo.java:169)
| at org.jboss.beans.metadata.plugins.StringValueMetaData.getValue(StringValueMetaData.java:101)
| at org.jboss.kernel.plugins.config.Configurator.getPropertySetterJoinPoint(Configurator.java:500)
| at org.jboss.kernel.plugins.config.Configurator.getPropertySetterJoinPoint(Configurator.java:444)
| at org.jboss.kernel.plugins.config.Configurator.getPropertySetterJoinPoints(Configurator.java:408)
| at org.jboss.kernel.plugins.config.AbstractKernelConfigurator.getPropertySetterJoinPoints(AbstractKernelConfigurator.java:120)
| at org.jboss.kernel.plugins.dependency.ConfigureAction.installActionInternal(ConfigureAction.java:59)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.installAction(KernelControllerContextAction.java:137)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.installAction(KernelControllerContextAction.java:1)
| at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
|
|
If the property value is given with no whitespace it deploys correctly. We should be able to specify a property with just an annotation. In terms of the whitespace behavior, I would say the StringValueMetaData should also have a trim property that is also true by default.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4087659#4087659
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4087659
16 years, 8 months