You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by am...@apache.org on 2007/12/21 06:59:08 UTC

svn commit: r606104 - in /webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding: types/Time.java utils/ConverterUtil.java

Author: amilas
Date: Thu Dec 20 21:59:06 2007
New Revision: 606104

URL: http://svn.apache.org/viewvc?rev=606104&view=rev
Log:
fixed the issue Axis2-3414

Modified:
    webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/types/Time.java
    webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java

Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/types/Time.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/types/Time.java?rev=606104&r1=606103&r2=606104&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/types/Time.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/types/Time.java Thu Dec 20 21:59:06 2007
@@ -106,7 +106,7 @@
         int second = 0;
         int miliSecond = 0;
         int timeZoneOffSet = TimeZone.getDefault().getRawOffset();
-
+         int milliSecondPartLength = 0;
         if (source.length() >= 8) {
             if ((source.charAt(2) != ':' )|| (source.charAt(5) != ':')){
                 throw new RuntimeException("Invalid time format (" + source + ") having : s in wrong places");
@@ -114,6 +114,9 @@
             hour = Integer.parseInt(source.substring(0, 2));
             minite = Integer.parseInt(source.substring(3, 5));
             second = Integer.parseInt(source.substring(6, 8));
+
+
+
             if (source.length() > 8) {
                 String rest = source.substring(8);
                 if (rest.startsWith(".")) {
@@ -122,19 +125,21 @@
                         // this is in gmt time zone
                         timeZoneOffSet = 0;
                         miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("Z")));
-
+                        milliSecondPartLength = rest.substring(1,rest.lastIndexOf("Z")).trim().length();
                     } else if ((rest.lastIndexOf("+") > 0) || (rest.lastIndexOf("-") > 0)) {
                         // this is given in a general time zione
                         String timeOffSet = null;
                         if (rest.lastIndexOf("+") > 0) {
                             timeOffSet = rest.substring(rest.lastIndexOf("+") + 1);
                             miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("+")));
+                            milliSecondPartLength = rest.substring(1, rest.lastIndexOf("+")).trim().length();
                             // we keep +1 or -1 to finally calculate the value
                             timeZoneOffSet = 1;
 
                         } else if (rest.lastIndexOf("-") > 0) {
                             timeOffSet = rest.substring(rest.lastIndexOf("-") + 1);
                             miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("-")));
+                            milliSecondPartLength = rest.substring(1, rest.lastIndexOf("-")).trim().length();
                             // we keep +1 or -1 to finally calculate the value
                             timeZoneOffSet = -1;
                         }
@@ -149,6 +154,7 @@
                     } else {
                         // i.e it does not have time zone
                         miliSecond = Integer.parseInt(rest.substring(1));
+                        milliSecondPartLength = rest.substring(1).trim().length();
                     }
 
                 } else {
@@ -179,7 +185,17 @@
         calendar.set(Calendar.HOUR_OF_DAY, hour);
         calendar.set(Calendar.MINUTE, minite);
         calendar.set(Calendar.SECOND, second);
+        if (milliSecondPartLength != 3) {
+            // milisecond part represenst the fraction of the second so we have to
+            // find the fraction and multiply it by 1000. So if milisecond part
+            // has three digits nothing required
+            miliSecond = miliSecond * 1000;
+            for (int i = 0; i < milliSecondPartLength; i++) {
+                miliSecond = miliSecond / 10;
+            }
+        }
         calendar.set(Calendar.MILLISECOND, miliSecond);
+
         calendar.set(Calendar.ZONE_OFFSET, timeZoneOffSet);
 
         return calendar;

Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java?rev=606104&r1=606103&r2=606104&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java Thu Dec 20 21:59:06 2007
@@ -873,6 +873,8 @@
             minite = Integer.parseInt(source.substring(14, 16));
             second = Integer.parseInt(source.substring(17, 19));
 
+            int milliSecondPartLength = 0;
+
             if (source.length() > 19)  {
                 String rest = source.substring(19);
                 if (rest.startsWith(".")) {
@@ -881,19 +883,21 @@
                         // this is in gmt time zone
                         timeZoneOffSet = 0;
                         miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("Z")));
-
+                        milliSecondPartLength = rest.substring(1,rest.lastIndexOf("Z")).trim().length();
                     } else if ((rest.lastIndexOf("+") > 0) || (rest.lastIndexOf("-") > 0)) {
                         // this is given in a general time zione
                         String timeOffSet = null;
                         if (rest.lastIndexOf("+") > 0) {
                             timeOffSet = rest.substring(rest.lastIndexOf("+") + 1);
                             miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("+")));
+                            milliSecondPartLength = rest.substring(1, rest.lastIndexOf("+")).trim().length();
                             // we keep +1 or -1 to finally calculate the value
                             timeZoneOffSet = 1;
 
                         } else if (rest.lastIndexOf("-") > 0) {
                             timeOffSet = rest.substring(rest.lastIndexOf("-") + 1);
                             miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("-")));
+                            milliSecondPartLength = rest.substring(1, rest.lastIndexOf("-")).trim().length();
                             // we keep +1 or -1 to finally calculate the value
                             timeZoneOffSet = -1;
                         }
@@ -908,6 +912,7 @@
                     } else {
                         // i.e it does not have time zone
                         miliSecond = Integer.parseInt(rest.substring(1));
+                        milliSecondPartLength = rest.substring(1).trim().length();
                     }
 
                 } else {
@@ -938,6 +943,15 @@
             calendar.set(Calendar.HOUR_OF_DAY, hour);
             calendar.set(Calendar.MINUTE, minite);
             calendar.set(Calendar.SECOND, second);
+            if (milliSecondPartLength != 3){
+                // milisecond part represenst the fraction of the second so we have to
+                // find the fraction and multiply it by 1000. So if milisecond part
+                // has three digits nothing required
+                miliSecond = miliSecond * 1000;
+                for (int i = 0; i < milliSecondPartLength; i++) {
+                    miliSecond = miliSecond / 10;
+                }
+            }
             calendar.set(Calendar.MILLISECOND, miliSecond);
             calendar.set(Calendar.ZONE_OFFSET, timeZoneOffSet);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org