Hi Werner,

Thanks for your great work!

I just downloaded Castor 1.3.1 and found some problems,

1. I define a <field-handler>, it can be used in only  one  <class/>

2. if the <field-handler> is defined in a mapping file, and this file is 
included by another main mapping file, marshal the java bean will throw 
exception. 


Regards

Joey




> -----邮件原件-----
> 发件人: Werner Guttmann [mailto:[email protected]]
> 发送时间: 2011年3月9日 18:26
> 收件人: [email protected]
> 抄送: 吕晓一
> 主题: Re: [castor-user] 答复: [castor-user] how to reuse the field-handler
> defined in mapping file?
> 
> Hi Joey,
> 
> to keep things apart a little bit, yes, with Castor 1.3.2 it will be
> possible to define a field handler once and reference it multiple times
> from within field mappings. This feature is already present with Castor
> 1.3.1, but due to a bug is didn't work as intended, and has been fixed
> for Castor 1.3.2.
> 
> I am in the process of releasing 1.3.2 within a short period, but I am
> facing problems with the Codehaus Nexus infrastructure right now.
> 
> If you wanted, you could try this feature with the latest 1.3.2 SNAPSHOT
> release.
> 
> Regards
> Werner
> 
> On 09.03.2011 10:48, 吕晓一 wrote:
> > Sorry, my English is poor, I try my best to make everyone understand what I
> wrote.
> >
> > In fact, I want to ask :  is it possible to define one <field-handler/> and 
> > use it
> in everywhere ?
> >
> > Joey
> >
> >> -----邮件原件-----
> >> 发件人: avner21J [mailto:[email protected]]
> >> 发送时间: 2011年3月9日 17:28
> >> 收件人: [email protected]
> >> 主题: Re: [castor-user] how to reuse the field-handler defined in mapping
> file?
> >>
> >>
> >> Joey,
> >>
> >> How does this post of yours relate to the original problem?
> >>
> >> Don't clutter with unrelated posts and make it difficult for others to
> >> understand.
> >>
> >>
> >>
> >> 吕晓一 wrote:
> >>>
> >>> Hi, my project use Castor, and I have one question.
> >>>
> >>> I created a field handler named TimeHander.java like this:
> >>>
> >>> public class TimeHandler extends GeneralizedFieldHandler {
> >>>
> >>>     private SimpleDateFormat formatter = new
> >> SimpleDateFormat("yyyyMMdd");
> >>>
> >>>     public TimeHandler() {
> >>>         super();
> >>>     }
> >>>
> >>>     public void setConfiguration(Properties config) throws
> >>> ValidityException {
> >>>         String pattern = config.getProperty("date-format");
> >>>         if (pattern == null) {
> >>>             throw new ValidityException("need parameter
> >> \"date-format\"");
> >>>         }
> >>>         try {
> >>>             formatter = new SimpleDateFormat(pattern);
> >>>         } catch (IllegalArgumentException e) {
> >>>             throw new ValidityException("the parameter \"" + pattern
> +
> >> "\"
> >>> invalid");
> >>>         }
> >>>     }
> >>>
> >>>
> >>>     public Object convertUponGet(Object value) {
> >>>         if (value == null) return null;
> >>>         Date date = (Date) value;
> >>>         return formatter.format(date);
> >>>
> >>>     }
> >>>
> >>>     public Object convertUponSet(Object value) {
> >>>         Date date = null;
> >>>         try {
> >>>             if (StringUtils.isEmpty((String) value)) {
> >>>                 return date;
> >>>             }
> >>>             date = formatter.parse((String) value);
> >>>         }
> >>>         catch (ParseException px) {
> >>>             throw new IllegalArgumentException(px.getMessage());
> >>>         }
> >>>         return date;
> >>>
> >>>     }
> >>>
> >>>     public Class getFieldType() {
> >>>         return Date.class;
> >>>     }
> >>>
> >>>
> >>>     public Object newInstance(Object parent) throws
> IllegalStateException
> >>> {
> >>>         return null;
> >>>     }
> >>> }
> >>>
> >>>
> >>> and my Java bean has two java.util.Date type fields,
> >>> to make Castor work correctly,
> >>> I have to define two <field-handler/> in mapping file like this:
> >>> ...
> >>> ...
> >>> <field-handler name="timeHandler1" class="TimeHandler">
> >>>
> >>> </field-handler>
> >>> <field-handler name="timeHandler2" class="TimeHandler">
> >>>
> >>> </field-handler>
> >>> ...
> >>> ...
> >>> <class name="Mybean ">
> >>>     <map-to xml="MyBean"/>
> >>>     <field name="time1" type="java.lang.String"
> handler="timeHandler1">
> >>>         <bind-xml name="Time1" node="element"/>
> >>>     </field>
> >>>     <field name="time2" type="java.lang.String"
> handler="timeHandler2">
> >>>         <bind-xml name="Time2" node="element"/>
> >>>     </field>
> >>> </class>
> >>> ....
> >>>
> >>> that's mean: one field , one  <field-handler/> , even the same processing
> >>> logic.
> >>>
> >>> But my project has dozens of Java beans, and has dozens of Date-type
> >>> fileds,
> >>> so, I have to define dozens of <field-handler/>, it is so terrible....
> >>>
> >>> Is there any advices?
> >>>
> >>> Regards
> >>>
> >>> Joey
> >>>
> >>> 2011-3-9
> >>>
> >>>
> >>>
> >>>
> >>
> >> --
> >> View this message in context:
> >>
> http://old.nabble.com/UnmarshalException-for-xml-created-by-Castor-Marshal
> >> ler-tp31097277p31104647.html
> >> Sent from the Castor - User mailing list archive at Nabble.com.
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe from this list, please visit:
> >>
> >>     http://xircles.codehaus.org/manage_email
> >>
> >

Reply via email to