Jessica and Stephen,

given that the NPE should really be replaced with a more human readable
exception, can you please raise a new issue at
http://jira.codehaus.org/browse/CASTOR, and attach a working sample
(minimal, if possible) that highlights the break.

Thanks in advance
Werner

Jessica Perry Hekman wrote:
> Okay! I got a working test case!
> 
>  http://pendaran.arborius.net/~jphekman/maptestcase.tgz
> 
> You will want to edit Mapper.java to point to the correct locations of two 
> files (search for "/home/jphekman" to see where to edit).
> 
> Then:
> 
> cd maptestcase
> ant build
> export 
> CLASSPATH=build/classes/:lib/castor-xml.jar:lib/commons-logging.jar:lib/xercesImpl.jar:lib/xml-apis.jar
> java com.ingenta.Mapper
> 
> It should break. Note: it is NOT breaking on the Map (despite the name of 
> the file). Turned out the Map seemed to be working fine: it broke when it 
> started having to actually unmarshall the Cost class. That was the point 
> at which the NPE was generated. (So when y'all gave good suggestions and 
> unmarshalling got past the Map point and started working, this other 
> problem was uncovered.)
> 
> Now that I have it simplified I'll see if I can find out what's going on. 
> After lunch :)
> 
> Thanks for all the help so far!
> 
> Jessica
> 
> On Tue, Dec 20, 2005 at 11:13:04AM -0500, Stephen Bash wrote:
> 
>>Jessica-
>>
>>So along the lines Werner is talking about, I've used either auto-naming 
>>or nested class mappings to clean up the xml associated with Map 
>>objects.  Basically as Werner points out, auto-naming uses either the 
>>class name or the field name to name the xml element (this provides 
>>enough information on unmarshal to find the class).  Unfortunately, in 
>>the past auto-naming has had issues with the location attribute, so I 
>>try to not use location and auto-naming at the same time (might not be a 
>>problem for you).
>>
>>The method I've been using more is nested class mappings.  Basically you 
>>take your class mapping for org.exolab.castor.mapping.MapItem (from your 
>>first e-mail), and place it inside your bind-xml element like so:
>>
>>   <field name="myHashMap" collection="map">
>>     <bind-xml name="hash-item">
>>       <class name="org.exolab.castor.mapping.MapItem">
>>         <field name="key" type="string">
>>           <bind-xml name="key" node="attribute" />
>>         </field>
>>         <field name="value" type="insert class here">
>>           <bind-xml name="value" />
>>         </field>
>>       </class>
>>     </bind-xml>
>>   </field>
>>
>>This doesn't produce the xsi:type as long as Castor can look at the 
>>mapping an know exactly what classes it needs.  Now if you only have one 
>>Java Map to ...um... map, whether you place the mapping inside the 
>>bind-xml or not shouldn't make a big difference.  I have an application 
>>where I have multiple maps, all with different mappings, so by nesting 
>>the mappings all of them can exist at the same time.
>>
>>This might still cause an NPE similar to your first e-mail, but it is 
>>the approach I would take to avoid the xsi:type attribute.
>>
>>Hopefully that gets you close enough to a solution that something works.
>>
>>Stephen
>>
>>
>>Werner Guttmann wrote:
>>
>>>Jessica,
>>>
>>>At the bottom of section 5
>>>(http://castor.codehaus.org/xml-mapping.html#5.-xsi:type) you are going
>>>to find a statement similar to 
>>>
>>>Suppose we wanted the following XML instead:
>>>
>>><engine>
>>>  <myProcessor/>
>>></engine>
>>>           
>>>Instead of using the xsi:type attribute. If you read on, you are going
>>>so see that you can instruct Castor XML to use the class name instead,
>>>as specified in the following field mapping.
>>>
>>><field name="processor" type="IProcessor" required="true">
>>>  <bind-xml auto-naming="deriveByClass" node="element" />
>>></field>
>>>
>>>I hope this answers your question in parts.
>>>
>>>Werner
>>>
>>>
>>>wg> -----Original Message-----
>>>wg> From: Jessica Perry Hekman [mailto:[EMAIL PROTECTED] 
>>>wg> Sent: Tuesday, December 20, 2005 4:02 PM
>>>wg> To: [email protected]
>>>wg> Subject: Re: [castor-user] Objects in Maps
>>>wg> 
>>>wg> ...actually, as I struggle to get my little test case to 
>>>wg> break with that NullPointerException at 
>>>wg> org.exolab.castor.xml.MarshalFramework.searchInheritance 
>>>wg> (or alternately and even better to get the real code to NOT 
>>>wg> break), I realize: this whole project is intended to get 
>>>wg> the system to listen to commands via REST. As one coworker 
>>>wg> said when I asked him why we had setSuppressXSIType to true 
>>>wg> in the first place, "otherwise it puts in all kinds of 
>>>wg> stuff that we didn't think REST wanted to see."
>>>wg> 
>>>wg> In other words, people are going to want to send XML over 
>>>wg> the wire to create a new one of these objects, and 
>>>wg> apparently we don't want to have to ask them to specify 
>>>wg> XSI:type. I can push back on this if necessary, but:
>>>wg> 
>>>wg> Is there in fact another way to go about taking the XML for 
>>>wg> a map and turning it into a Map with the correct objects inside it?
>>>wg> 
>>>wg> I fantasize about something like
>>>wg> 
>>>wg>  <map>
>>>wg>   <key>some string here</key>
>>>wg>   <value>
>>>wg>    <cost>...</cost>
>>>wg>   </value>
>>>wg>  </map>
>>>wg> 
>>>wg> ...such that it knows to map "cost" into a Cost object. (I 
>>>wg> guess the question of how to map the key into a String remains.)
>>>wg> 
>>>wg> Am I headed in completely the wrong direction?
>>>wg> 
>>>wg> Jessica
>>>wg> 
>>>wg> -------------------------------------------------
>>>wg> If you wish to unsubscribe from this list, please send an 
>>>wg> empty message to the following address:
>>>wg> 
>>>wg> [EMAIL PROTECTED]
>>>wg> -------------------------------------------------
>>>wg> 
>>>wg> 
>>>
>>>-------------------------------------------------
>>>If you wish to unsubscribe from this list, please 
>>>send an empty message to the following address:
>>>
>>>[EMAIL PROTECTED]
>>>-------------------------------------------------
>>>
>>>
>>
>>-------------------------------------------------
>>If you wish to unsubscribe from this list, please 
>>send an empty message to the following address:
>>
>>[EMAIL PROTECTED]
>>-------------------------------------------------
>>
> 
> 
> -------------------------------------------------
> If you wish to unsubscribe from this list, please 
> send an empty message to the following address:
> 
> [EMAIL PROTECTED]
> -------------------------------------------------
> 
> 


-------------------------------------------------
If you wish to unsubscribe from this list, please 
send an empty message to the following address:

[EMAIL PROTECTED]
-------------------------------------------------

Reply via email to