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

alesj do-not-reply at jboss.com
Fri Dec 7 08:15:54 EST 2007


Hmmm, looking at the MetaValueFactory.create(Object value) for value == List(Integer), this seems to be broken or at least the relevant information about element values gets lost.

This is what this method returns for non-empty Integer ArrayList.

  | metaValue: org.jboss.metatype.api.values.MetaValue = {org.jboss.metatype.api.values.ArrayValueSupport at 824}"ArrayMetaType{type=[Lorg.jboss.metatype.api.values.CompositeValue; dims=1 elementType=MutableCompositeMetaType{java.lang.Object}:[CompositeValueSupport: metaType=[MutableCompositeMetaType{java.lang.Object}] items=[], CompositeValueSupport: metaType=[MutableCompositeMetaType{java.lang.Object}] items=[]]"
  | metaType: org.jboss.metatype.api.types.ArrayMetaType = {org.jboss.metatype.api.types.ArrayMetaType at 829}"ArrayMetaType{type=[Lorg.jboss.metatype.api.values.CompositeValue; dims=1 elementType=MutableCompositeMetaType{java.lang.Object}"
  | dimension: int = 1
  | elementType: org.jboss.metatype.api.types.MetaType = {org.jboss.metatype.plugins.types.MutableCompositeMetaType at 840}"MutableCompositeMetaType{java.lang.Object}"
  | primitiveArray: boolean = false
  | cachedHashCode: int = -2147483648
  | cachedToString: java.lang.String = {java.lang.String at 833}"ArrayMetaType{type=[Lorg.jboss.metatype.api.values.CompositeValue; dims=1 elementType=MutableCompositeMetaType{java.lang.Object}"
  | className: java.lang.String = {java.lang.String at 850}"[Lorg.jboss.metatype.api.values.CompositeValue;"
  | description: java.lang.String = {java.lang.String at 851}"1-dimension array of java.lang.Object"
  | typeName: java.lang.String = {java.lang.String at 852}"[Lorg.jboss.metatype.api.values.CompositeValue;"
  | array: boolean = true
  | value: java.lang.Object = {java.lang.Object[2]@830}
  | [0] = {org.jboss.metatype.api.values.CompositeValueSupport at 834}"CompositeValueSupport: metaType=[MutableCompositeMetaType{java.lang.Object}] items=[]"
  | contents: java.util.SortedMap = {java.util.TreeMap at 839} size = 0
  | metaType: org.jboss.metatype.api.types.CompositeMetaType = {org.jboss.metatype.plugins.types.MutableCompositeMetaType at 840}"MutableCompositeMetaType{java.lang.Object}"
  | cachedHashCode: int = -2147483648
  | [1] = {org.jboss.metatype.api.values.CompositeValueSupport at 834}"CompositeValueSupport: metaType=[MutableCompositeMetaType{java.lang.Object}] items=[]"
  | contents: java.util.SortedMap = {java.util.TreeMap at 839} size = 0
  | metaType: org.jboss.metatype.api.types.CompositeMetaType = {org.jboss.metatype.plugins.types.MutableCompositeMetaType at 840}"MutableCompositeMetaType{java.lang.Object}"
  | cachedHashCode: int = -2147483648

The problem is that Object is recognized as lists/arrays element type instead of Integer (runtime object doesn't carry generics info). Hence elements are Composite types instead of primitive number type.



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

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



More information about the jboss-dev-forums mailing list