You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ch...@apache.org on 2010/10/29 14:19:28 UTC

svn commit: r1028713 - in /harmony/enhanced/java/branches/java6/classlib/modules/sql/src: main/java/java/sql/Timestamp.java test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java

Author: chope
Date: Fri Oct 29 12:19:28 2010
New Revision: 1028713

URL: http://svn.apache.org/viewvc?rev=1028713&view=rev
Log:
Add fix to allow overriding of the Timestamp class to create an immutable class, by removing a call to a public method in the Timestamp constructor.  Regression testcase included.

Modified:
    harmony/enhanced/java/branches/java6/classlib/modules/sql/src/main/java/java/sql/Timestamp.java
    harmony/enhanced/java/branches/java6/classlib/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java

Modified: harmony/enhanced/java/branches/java6/classlib/modules/sql/src/main/java/java/sql/Timestamp.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/java6/classlib/modules/sql/src/main/java/java/sql/Timestamp.java?rev=1028713&r1=1028712&r2=1028713&view=diff
==============================================================================
--- harmony/enhanced/java/branches/java6/classlib/modules/sql/src/main/java/java/sql/Timestamp.java (original)
+++ harmony/enhanced/java/branches/java6/classlib/modules/sql/src/main/java/java/sql/Timestamp.java Fri Oct 29 12:19:28 2010
@@ -352,7 +352,9 @@ public class Timestamp extends Date {
             milliseconds = 1000 + milliseconds;
         }
         super.setTime(theTime);
-        setNanos(milliseconds * 1000000);
+        // bounds checking not required as the value will be
+        // between 0 and 999999999 from the construction
+        nanos = milliseconds * 1000000;
     }
 
     /**

Modified: harmony/enhanced/java/branches/java6/classlib/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/java6/classlib/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java?rev=1028713&r1=1028712&r2=1028713&view=diff
==============================================================================
--- harmony/enhanced/java/branches/java6/classlib/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java (original)
+++ harmony/enhanced/java/branches/java6/classlib/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java Fri Oct 29 12:19:28 2010
@@ -679,4 +679,16 @@ public class TimestampTest extends TestC
     protected void tearDown(){
     	TimeZone.setDefault(defaultTimeZone);
     }
+
+    /**
+     * @tests overriding Timestamp to create an immutable class.
+     */
+    public void testOverridingTimestamp() {
+        Timestamp ts = new Timestamp(8392418){
+            @Override
+            public void setNanos(int n) {
+                throw new RuntimeException("Overridden method shouldn't be called");
+            }
+        };
+    }
 } // end class TimestampTest