Keith, did you find the information I was talking about? 

-----Original Message-----
From: Tim Mulle' [mailto:[EMAIL PROTECTED] 
Sent: Friday, October 29, 2004 9:50 PM
To: [EMAIL PROTECTED]
Subject: Re: [castor-user] XML: Un/Marshalling java.util.Locale objects


Keith,

It says it right here: 
http://www.castor.org/xml-mapping.html#3.4-The-%3Cfield%3E-element the last
item in the table says type="locale" is supported as a field type. 
If you look down in my earlier post, I had already tried what you suggested
about the Locale mapping and it never seemed to create the locale objects
when unmarshalling from the XML..It wrote it out just fine.. I did have to
use the "verify-constructable" attribute on the Locale mapping becuase of
the missing default constructor..but it still didn't make a difference. I've
tried both the latest version and 0.9.5.3 and still the same thing..

I looked in the source code for Castor and I noticed that the TypeInfo class
has a mapping for "java.util.Locale.class"

Thanks,
 - Tim



Keith Visco wrote:

>
>
> Hi Tim,
>
> Can you point to me in the docs where it says Locale has built-in 
> support. It might be the case with Castor-JDO, but not with Castor-XML.
>
> Castor XML has no built-in support for it.
>
> In order to get Locale to work, you'll need a mapping file and specify 
> the country and language values as attributes (since there is no 
> default constructor the values need to be mapped as attributes in 
> order to be passed to the constructor). Something like the following 
> should work:
>
> <class name="java.util.Locale">
>    <field name="language" type="string"
>          get-method="getLanguage" set-method="%1">
>       <bind-xml node="attribute"/>
>    </field>
>    <field name="country" type="string"
>       set-method="%2" get-method="getCountry">
>       <bind-xml node="attribute"/>
>    </field>
> </class>
>
> --Keith
>
>
> Tim Mulle' wrote:
>
>> Anyone have any ideas about this?
>> -----Original Message-----
>> From: Tim Mulle' [mailto:[EMAIL PROTECTED] Sent: Wednesday, 
>> October 27, 2004 1:51 PM
>> To: [EMAIL PROTECTED]
>> Subject: Re: [castor-user] XML: Un/Marshalling java.util.Locale 
>> objects
>>
>> Update:
>> I tried the same code but using java.awt.Color objects as well as my 
>> own, and they seem to work meaning I get back the objects from the 
>> XML.
>> For some
>> reason, nothing I do makes the java.util.Locale object come back. 
>> Could it
>> be a bug in the TypeInfo classes? I noticed in the docs that "locale" 
>> is a
>> built-in supported type.
>>  
>>
>> -----Original Message-----
>> From: Tim Mulle' [mailto:[EMAIL PROTECTED]
>> Sent: Wednesday, October 27, 2004 11:23 AM
>> To: [EMAIL PROTECTED]
>> Subject: [castor-user] XML: Un/Marshalling java.util.Locale objects
>>
>>
>> Hi,
>>
>> I'm wondering, is it possible to marshall/unmarshall java.util.Locale 
>> objects? I know they don't follow the JavaBean pattern in that they 
>> Follow more of the Enum pattern (only providing getters and can only 
>> be constructed with constructor params). With that being said, I 
>> tried the following code and mappings and while the marshalling 
>> appears to write the data out, when unmarshalling the object back in, 
>> I always get null. Almost like the Locale object is never being 
>> created and added to the collection. I saw a similar posting about 
>> the java.awt.Color object but never saw a solution either.
>>
>> If I print out the Config object before marshalling, I see the Locale 
>> objects in the list, after I unmarshal the object back My list is 
>> empty..
>>
>> // Output
>> Before unmarshalling:AdminConfig{locales=[en_US, fr_FR]} After
>> unmarshalling: AdminConfig{locales=[]}
>>
>>
>> // Mapping file
>> <mapping>
>>     <class name="AdminConfig">
>>         <map-to xml="admin-config"/>
>>
>>         <field name="locales" type="java.util.Locale"
>> collection="collection">
>>             <bind-xml name="locale" location="locales"/>
>>         </field>
>>     </class>
>>
>>     <!-- Map a Locale object -->
>>     <class name="java.util.Locale" verify-constructable="false">
>>         <field name="language" set-method="%1" type="string">
>>             <bind-xml node="attribute"/>
>>         </field>
>>         <field name="country" set-method="%2" type="string">
>>             <bind-xml node="attribute"/>
>>         </field>
>>     </class>
>> </mapping>
>>
>>
>> My config object looks like this:
>>
>> Public class AdminConfig {
>>
>>     private List locales = new ArrayList();
>>     public void setLocales(List locales) {
>>         this.locales = locales;
>>     }
>>     public List getLocales() {
>>         return locales;
>>     }
>>
>>     public String toString() {
>>         final StringBuffer buf = new StringBuffer();
>>         buf.append("AdminConfig");
>>         buf.append("{locales=").append(locales);
>>         buf.append('}');
>>         return buf.toString();
>>         }
>> }
>>
>> Public class Test {
>>
>>     public static void main(String[] args) {
>>
>>         AdminConfig cfg = new AdminConfig();
>>         List locales = new ArrayList();
>>         locales.add(new Locale("en", "US"));
>>         locales.add(new Locale("fr", "FR"));
>>
>>         cfg.setLocale(locales);
>>         ....
>>         // Marshall object
>>        
>>     }
>> }
>> Resulting XML file...
>>
>> <?xml version="1.0" encoding="UTF-8"?> <admin-config>
>>     <locales>
>>         <locale name="en" value="US"/>
>>         <locale name="fr" value="FR"/>
>>     </locales>
>> </cas-admin>
>>  
>>
>> - Tim Mull�
>>  
>>  
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> ----------------------------------------------------------- If you 
>> wish to unsubscribe from this mailing, send mail to
>> [EMAIL PROTECTED] with a subject of:
>>         unsubscribe castor-user
>
>
>
>
> ----------------------------------------------------------- If you 
> wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
>        unsubscribe castor-user
>
>



----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-user

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-user

Reply via email to