You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2004/01/02 11:05:12 UTC

DO NOT REPLY [Bug 25012] - dateTime not parsed properly in the SOAP message

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25012>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25012

dateTime not parsed properly in the SOAP message

rahul.karwa@patni.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |



------- Additional Comments From rahul.karwa@patni.com  2004-01-02 10:05 -------
I tried with the same example posted by Zenosh with axis 1.1. Latest CVS 
generates the proper SOAP request (<orderDate>2003-11-
20T08:26:00.940Z</orderDate>) but it throws Exception like
"java.lang.RuntimeException: java.text.ParseException: Unparseable date:2003-11-
20T08:26:00.940Z"

The exception is generated at the following line 
java.util.Date dt = (java.text.DateFormat.getDateTimeInstance()).parse(value);

Since the date pattern is not specified in DateFormat instance it throws 
exception.

When we replace the above line to this
java.util.Date dt = ((java.text.DateFormat) new java.text.SimpleDateFormat
("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")).parse(value);
it works fine.


To generate the proper java file with above changes from WSDL2Java command we 
need to change org.apache.axis.wsdl.toJava.JavaBeanWriter.java file of axis 1.1.

protected void writeSimpleConstructors() {

//-------------
                else if (simpleValueType.equals("java.util.Date")) {
                  pw.println("        try {");
                  pw.println("            this.value = 
(java.text.DateFormat.getDateTimeInstance()).parse(value);");
                  pw.println("        }");
                  pw.println("        catch (java.text.ParseException e){");
                  pw.println("            throw new java.lang.RuntimeException
(e.toString());");
                  pw.println("        }");
                }
                else if (simpleValueType.equals("java.util.Calendar")) {
pw.println("        java.util.Calendar cal = java.util.Calendar.getInstance
();");
        pw.println("        try {"};
                           // CODE CHANGES START 
pw.println("        java.util.Date dt = ((java.text.DateFormat) new 
java.text.SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")).parse
(value);");                   
            // CODE CHANGES END

pw.println("          cal.setTime(dt);");
                  pw.println("          this.value = cal;");
                  pw.println("        }");
                  pw.println("        catch (java.text.ParseException e){");
                  pw.println("            throw new java.lang.RuntimeException
(e.toString());");
                  pw.println("        }");
                }                
                else {
//-------------
}

Please comment on the following changes and suggest any better solution.
Dims will it have any regression bug?