setting managed property of type List
aloubyansky Dec 7, 2007 5:41 AMI couldn't find a test for it? The only test I found for ManagedProperty.setValue() is org.jboss.test.managed.mock.MockTest but it sets only Strings.
I have a property of type java.util.List and when I set it I get
java.lang.reflect.UndeclaredThrowableException at org.jboss.metatype.plugins.values.DefaultMetaValueFactory.newArrayInstance(DefaultMetaValueFactory.java:654) at org.jboss.metatype.plugins.values.DefaultMetaValueFactory.internalUnwrap(DefaultMetaValueFactory.java:490) at org.jboss.metatype.plugins.values.DefaultMetaValueFactory.unwrap(DefaultMetaValueFactory.java:451) at org.jboss.managed.plugins.factory.AbstractManagedObjectFactory.setValue(AbstractManagedObjectFactory.java:753) at org.jboss.managed.plugins.WritethroughManagedPropertyImpl.setValue(WritethroughManagedPropertyImpl.java:111) at org.jboss.resource.deployers.management.DsDataSourceTemplate.writeTemplate(DsDataSourceTemplate.java:159) at org.jboss.resource.deployers.management.DsDataSourceTemplate.applyTemplate(DsDataSourceTemplate.java:69) at org.jboss.profileservice.management.ManagementViewImpl.applyTemplate(ManagementViewImpl.java:550) at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:121) at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) at org.jboss.profileservice.remoting.ProfileServiceInvocationHandler.invoke(ProfileServiceInvocationHandler.java:56) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:771) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:573) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:373) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166) Caused by: java.lang.ClassCastException: ReflectClassInfoImpl@1bc6271{name=java.util.List} is not an array. at org.jboss.reflect.plugins.ClassInfoImpl.newArrayInstance(ClassInfoImpl.java:532) at org.jboss.reflect.spi.DelegateClassInfo.newArrayInstance(DelegateClassInfo.java:285) at org.jboss.metatype.plugins.values.DefaultMetaValueFactory.newArrayInstance(DefaultMetaValueFactory.java:650) at org.jboss.metatype.plugins.values.DefaultMetaValueFactory.internalUnwrap(DefaultMetaValueFactory.java:490) at org.jboss.metatype.plugins.values.DefaultMetaValueFactory.unwrap(DefaultMetaValueFactory.java:451) at org.jboss.managed.plugins.factory.AbstractManagedObjectFactory.setValue(AbstractManagedObjectFactory.java:753) at org.jboss.managed.plugins.WritethroughManagedPropertyImpl.setValue(WritethroughManagedPropertyImpl.java:111) at org.jboss.resource.deployers.management.DsDataSourceTemplate.writeTemplate(DsDataSourceTemplate.java:159) at org.jboss.resource.deployers.management.DsDataSourceTemplate.applyTemplate(DsDataSourceTemplate.java:69) at org.jboss.profileservice.management.ManagementViewImpl.applyTemplate(ManagementViewImpl.java:550) at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:121) at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) at org.jboss.profileservice.remoting.ProfileServiceInvocationHandler.invoke(ProfileServiceInvocationHandler.java:56) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:771) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:573) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:373) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166) at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:163) at org.jboss.remoting.Client.invoke(Client.java:1634) at org.jboss.remoting.Client.invoke(Client.java:548) at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.remoting.MergeMetaDataInterceptor.invoke(MergeMetaDataInterceptor.java:74) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at AOPProxy$1.applyTemplate(AOPProxy$1.java) at org.jboss.test.profileservice.test.ProfileServiceUnitTestCase.testAddXADataSource(ProfileServiceUnitTestCase.java:430) at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:74) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.remoting.MergeMetaDataInterceptor.invoke(MergeMetaDataInterceptor.java:74) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at AOPProxy$1.applyTemplate(AOPProxy$1.java) at org.jboss.test.profileservice.test.ProfileServiceUnitTestCase.testAddXADataSource(ProfileServiceUnitTestCase.java:430)
The code looks like
ManagedObjectFactory mof = ManagedObjectFactoryBuilder.create(); ManagedConnectionFactoryDeploymentMetaData mcf = new XADataSourceDeploymentMetaData(); ManagedObject cfMO = mof.initManagedObject(mcf, "DataSource", "XA"); ManagedProperty dsProp = cfMO.getProperty("xa-datasource-properties"); dsProp.setValue(arrayList); @ManagementObject(componentType=@ManagementComponent(type="DataSource",subtype="XA")) public class XADataSourceDeploymentMetaData extends DataSourceDeploymentMetaData { .... @ManagementProperty(name="xa-datasource-properties", description="The DataSource properties", managed=true) public List<XAConnectionPropertyMetaData> getXADataSourceProperties() { return this.xaDataSourceProperties; }
You can see the real testcase in the stacktrace.