1 package org.codehaus.xfire.aegis.type.basic;
2
3 import java.text.ParseException;
4
5 import org.codehaus.xfire.MessageContext;
6 import org.codehaus.xfire.aegis.MessageReader;
7 import org.codehaus.xfire.aegis.MessageWriter;
8 import org.codehaus.xfire.aegis.type.Type;
9 import org.codehaus.xfire.fault.XFireFault;
10 import org.codehaus.xfire.util.date.XsDateTimeFormat;
11
12 /***
13 * Type for the Calendar class.
14 *
15 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
16 */
17 public class CalendarType
18 extends Type
19 {
20 private static XsDateTimeFormat format = new XsDateTimeFormat();
21
22 public Object readObject(MessageReader reader, MessageContext context) throws XFireFault
23 {
24 String value = reader.getValue();
25
26 if (value == null) return null;
27
28 try
29 {
30 return format.parseObject(value);
31 }
32 catch (ParseException e)
33 {
34 throw new XFireFault("Could not parse xs:dateTime: " + e.getMessage(), e, XFireFault.SENDER);
35 }
36 }
37
38 public void writeObject(Object object, MessageWriter writer, MessageContext context)
39 {
40 writer.writeValue(format.format(object));
41 }
42 }