1 16 17 package org.apache.axis.encoding.ser; 18 19 import org.apache.axis.utils.Messages; 20 21 import javax.xml.namespace.QName ; 22 import java.text.SimpleDateFormat ; 23 import java.util.Calendar ; 24 import java.util.Date ; 25 import java.util.GregorianCalendar ; 26 33 public class DateDeserializer extends SimpleDeserializer { 34 35 private static SimpleDateFormat zulu = 36 new SimpleDateFormat ("yyyy-MM-dd"); 37 39 private static Calendar calendar = Calendar.getInstance(); 40 41 45 public DateDeserializer(Class javaType, QName xmlType) { 46 super(javaType, xmlType); 47 } 48 49 53 public Object makeValue(String source) { 54 Object result; 55 boolean bc = false; 56 57 if ( source != null ) { 59 if (source.charAt(0) == '+') 60 source = source.substring(1); 61 62 if (source.charAt(0) == '-') { 63 source = source.substring(1); 64 bc = true; 65 } 66 67 if (source.length() < 10) 68 throw new NumberFormatException ( 69 Messages.getMessage("badDate00")); 70 71 if (source.charAt(4) != '-' || source.charAt(7) != '-') 72 throw new NumberFormatException ( 73 Messages.getMessage("badDate00")); 74 75 } 76 77 synchronized (calendar) { 78 try { 80 result = zulu.parse(source == null ? null : 81 (source.substring(0,10)) ); 82 } catch (Exception e) { 83 throw new NumberFormatException (e.toString()); 84 } 85 86 if (bc) { 88 calendar.setTime((Date )result); 89 calendar.set(Calendar.ERA, GregorianCalendar.BC); 90 result = calendar.getTime(); 91 } 92 if (javaType == java.util.Date .class) { 93 return result; 94 } else if (javaType == java.sql.Date .class) { 95 result = new java.sql.Date (((Date )result).getTime()); 96 } else { 97 calendar.setTime((Date )result); 98 result = calendar; 99 } 100 } 101 return result; 102 } 103 } | Popular Tags |