[jboss-dev-forums] [Design the new POJO MicroContainer] - setting managed property of type List

alex.loubyansky@jboss.com do-not-reply at jboss.com
Fri Dec 7 05:41:04 EST 2007


I 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 at 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.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4111164#4111164

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4111164



More information about the jboss-dev-forums mailing list