Jakub- I've also observed this problem in the past few months with Castor. Unfortunately I haven't had time to track down a source of the problem. One work-around you can try is to define defining the type attribute for the value as java.lang.Object. It's hackish, but I think I snuck some things by Castor doing that.
And thanks for the detailed message, it will be helpful when I get around to investigating the problem. Stephen On 4/12/06, Jakub Milkiewicz <[EMAIL PROTECTED]> wrote: > Hi > i would like to create hashtable mapping. I want to have my Brand object to > contain hashtable of validators, where the keys in the hashmap will be > values of step attributes and the values will be implementations of > validator interface. > My mapping looks like this: > > <mapping xmlns="http://castor.exolab.org/" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://castor.exolab.org/ > http://castor.org/mapping.xsd"> > <class name="com.sth.configurati > on.Configuration"> > <map-to xml="configuration"/> > <field collection="arraylist" name="brands" > type="com.sth.configuration.Brand "> > <bind-xml name="brand" node="element"/> > </field> > </class> > <class name="com.sth.configuration.Brand"> > <map-to xml="brand"/> > <field name="name"> > <bind-xml name="name" node="attribute"/> > </field> > <field name="parser" > type="com.sth.configuration.parsers.BrandParser "> > <bind-xml name="parser" node="element"/> > </field> > <field name="validators" collection="hashtable" > container="false"> > <bind-xml name="validators" node="element"> > <class > name="org.exolab.castor.mapping.MapItem"> > <field name="key" type=" java.lang.Integer"> > <bind-xml name="step" node="attribute"/> > </field> > <field name="value" > type=" com.sth.configuration.model.Validator"> > <bind-xml name="implementation" node="element"/> > </field> > </class> > </bind-xml> > </field> > </class> > </mapping> > > My conf file as follows: > > <brand name="newBrand"> > <parser > xsi:type="java: > com.sth.configuration.parsers.DefaultParser"/> > <validators> > <validator step="1"> > <implementation > xsi:type="java:com.sth.validators.validator "></implementation> > > </validator> > <validator step="2"> > <implementation > xsi:type="java:com.sth.validators.validator2"></implementation> > > </validator> > </validators> > </brand> > </configuration> > > and my class > public class Brand { > private BrandParser parser; > private Hashtable validators; > } > > After unmarshalling i got: > org.exolab.castor.mapping.MappingException: The return type > for method > public java.lang.Object > org.exolab.castor.mapping.MapItem.getValue() does > not match the declared field type > com.sth.configuration.model.Validator at > org.exolab.castor.mapping.loader.MappingLoader.findAccessor(MappingLoader.ja > va:1231) > at > org.exolab.castor.mapping.loader.MappingLoader.createFieldHandler(MappingLoa > der.java:973) > at > org.exolab.castor.mapping.loader.MappingLoader.createFieldDesc(MappingLoader > .java:776) > at > org.exolab.castor.xml.XMLMappingLoader.createFieldDesc(XMLMappingLoader.java > :369) > at > org.exolab.castor.mapping.loader.MappingLoader.createFieldDescs(MappingLoade > r.java:639) > at > org.exolab.castor.mapping.loader.MappingLoader.createDescriptor(MappingLoade > r.java:462) > at > org.exolab.castor.xml.XMLMappingLoader.createDescriptor(XMLMappingLoader.jav > a:227) > at > org.exolab.castor.xml.XMLMappingLoader.createFieldDesc(XMLMappingLoader.java > :481) > at > org.exolab.castor.mapping.loader.MappingLoader.createFieldDescs(MappingLoade > r.java:639) > at > org.exolab.castor.mapping.loader.MappingLoader.createDescriptor(MappingLoade > r.java:462) > at > org.exolab.castor.xml.XMLMappingLoader.createDescriptor(XMLMappingLoader.jav > a:227) > at > org.exolab.castor.mapping.loader.MappingLoader.loadMapping(MappingLoader.jav > a:313) > at org.exolab.castor.mapping.Mapping.getResolver > (Mapping.java:292) > at > org.exolab.castor.mapping.Mapping.getResolver(Mapping.java:247) > at > org.exolab.castor.xml.Unmarshaller.setMapping(Unmarshaller.java:475) > at org.exolab.castor.xml.Unmarshaller > .<init>(Unmarshaller.java:246) > > Any help

