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.

git-svn-id: https://svn.apache.org/repos/asf/harmony/enhanced/java/trunk@1028681 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/classlib/modules/sql/src/main/java/java/sql/Timestamp.java b/classlib/modules/sql/src/main/java/java/sql/Timestamp.java
index 342baa8..9c558b4 100644
--- a/classlib/modules/sql/src/main/java/java/sql/Timestamp.java
+++ b/classlib/modules/sql/src/main/java/java/sql/Timestamp.java
@@ -353,7 +353,9 @@
             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;
     }
 
     /**
diff --git a/classlib/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java b/classlib/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java
index adf39a9..ef1b3b5 100644
--- a/classlib/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java
+++ b/classlib/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimestampTest.java
@@ -679,4 +679,16 @@
     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