duftler 01/09/24 13:36:04 Modified: java/src/org/apache/soap/encoding/soapenc CalendarSerializer.java DateSerializer.java Log: Synchronized calls to DateFormat's methods, since DateFormat appears to not be thread-safe. Richard Hansen ([EMAIL PROTECTED]) reported this: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3252 Submitted by: Richard Boehme ([EMAIL PROTECTED]) & Matthew J. Duftler ([EMAIL PROTECTED]) Revision Changes Path 1.2 +11 -2 xml-soap/java/src/org/apache/soap/encoding/soapenc/CalendarSerializer.java Index: CalendarSerializer.java =================================================================== RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/CalendarSerializer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- CalendarSerializer.java 2001/02/02 14:01:39 1.1 +++ CalendarSerializer.java 2001/09/24 20:36:04 1.2 @@ -112,7 +112,13 @@ nsStack,xjmr); Date calDate = ((GregorianCalendar)src).getTime(); - String fdate=sdf.format(calDate); + String fdate = null; + + synchronized(sdf) + { + fdate=sdf.format(calDate); + } + sink.write(fdate); sink.write("</" + context + '>'); } @@ -139,7 +145,10 @@ { try { - date=sdf.parse(value); + synchronized(sdf) + { + date=sdf.parse(value); + } calDate.setTime(date); } catch (ParseException pe) 1.4 +24 -6 xml-soap/java/src/org/apache/soap/encoding/soapenc/DateSerializer.java Index: DateSerializer.java =================================================================== RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/DateSerializer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DateSerializer.java 2001/07/08 15:19:26 1.3 +++ DateSerializer.java 2001/09/24 20:36:04 1.4 @@ -108,7 +108,13 @@ sink, nsStack,xjmr); - String fdate=sdf.format((Date)src); + String fdate=null; + + synchronized(sdf) + { + fdate=sdf.format((Date)src); + } + sink.write(fdate); sink.write("</" + context + '>'); } @@ -134,7 +140,10 @@ { try { - date=sdf.parse(value); + synchronized(sdf) + { + date=sdf.parse(value); + } } catch (ParseException pe) { @@ -152,9 +161,15 @@ throw new ParseException("",0); // convert what we have validated so far - try { - date=sdf.parse(value.substring(0,19)+".000Z"); - } catch (Exception e) { + try + { + synchronized(sdf) + { + date=sdf.parse(value.substring(0,19)+".000Z"); + } + } + catch (Exception e) + { throw new ParseException("",0); } @@ -209,9 +224,12 @@ } catch (ParseException pe2) { - throw new IllegalArgumentException("String represents no valid " + + synchronized(sdf) + { + throw new IllegalArgumentException("String represents no valid " + "Date for this Deserializer; " + "try " + sdf.toPattern() + "."); + } } } }