1 17 18 package org.apache.james.util; 19 20 import java.text.ParseException ; 21 import java.text.DateFormat ; 22 import java.text.SimpleDateFormat ; 23 import java.util.Date ; 24 import java.util.Locale ; 25 import java.util.TimeZone ; 26 27 35 public class SynchronizedDateFormat implements SimplifiedDateFormat { 36 private final DateFormat internalDateFormat; 37 38 45 public SynchronizedDateFormat(String pattern, Locale locale) { 46 internalDateFormat = new SimpleDateFormat (pattern, locale); 47 } 48 49 57 protected SynchronizedDateFormat(DateFormat theDateFormat) { 58 internalDateFormat = theDateFormat; 59 } 60 61 69 public String format(Date d) { 70 synchronized (internalDateFormat) { 71 return internalDateFormat.format(d); 72 } 73 } 74 75 87 public Date parse(String source) throws ParseException { 88 synchronized (internalDateFormat) { 89 return internalDateFormat.parse(source); 90 } 91 } 92 93 97 public void setTimeZone(TimeZone zone) { 98 synchronized(internalDateFormat) { 99 internalDateFormat.setTimeZone(zone); 100 } 101 } 102 103 107 public TimeZone getTimeZone() { 108 synchronized(internalDateFormat) { 109 return internalDateFormat.getTimeZone(); 110 } 111 } 112 113 121 public void setLenient(boolean lenient) 122 { 123 synchronized(internalDateFormat) { 124 internalDateFormat.setLenient(lenient); 125 } 126 } 127 128 132 public boolean isLenient() 133 { 134 synchronized(internalDateFormat) { 135 return internalDateFormat.isLenient(); 136 } 137 } 138 139 142 public int hashCode() { 143 synchronized(internalDateFormat) { 144 return internalDateFormat.hashCode(); 145 } 146 } 147 148 151 public boolean equals(Object obj) { 152 if (this == obj) { 153 return true; 154 } 155 if (obj == null || getClass() != obj.getClass()) { 156 return false; 157 } 158 synchronized(internalDateFormat) { 159 return internalDateFormat.equals(obj); 160 } 161 } 162 163 } 164 | Popular Tags |