You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by du...@apache.org on 2001/09/24 22:36:04 UTC

cvs commit: xml-soap/java/src/org/apache/soap/encoding/soapenc CalendarSerializer.java DateSerializer.java

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 (richard.hansen@westgroup.com) reported this:
    http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3252
  Submitted by: Richard Boehme (boehme@acm.jhu.edu) &
    Matthew J. Duftler (duftler@us.ibm.com)
  
  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() + ".");
  +          }
           }
         }
       }