some tidy up

git-svn-id: https://svn.apache.org/repos/asf/xmlbeans/trunk@1935163 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/xmlbeans/GDate.java b/src/main/java/org/apache/xmlbeans/GDate.java
index 2f18fbb..c2308e5 100644
--- a/src/main/java/org/apache/xmlbeans/GDate.java
+++ b/src/main/java/org/apache/xmlbeans/GDate.java
@@ -151,7 +151,11 @@
                         throw new IllegalArgumentException("year value starting with zero must be 4 or less digits: " + string);
                     }
 
-                    value = value * 10 + digitVal(ch);
+                    long newValue = value * 10L + digitVal(ch);
+                    if (newValue > Integer.MAX_VALUE) {
+                        throw new IllegalArgumentException("date value causes overflow: " + string);
+                    }
+                    value = Math.toIntExact(newValue);
                     start += 1;
                 }
                 digits += start;
diff --git a/src/main/java/org/apache/xmlbeans/GDateBuilder.java b/src/main/java/org/apache/xmlbeans/GDateBuilder.java
index fe78811..2d82527 100644
--- a/src/main/java/org/apache/xmlbeans/GDateBuilder.java
+++ b/src/main/java/org/apache/xmlbeans/GDateBuilder.java
@@ -1098,7 +1098,7 @@
     static Date dateForGDate(GDateSpecification date) {
         long jDate = julianDateForGDate(date);
         long to1970Date = jDate - 2440588;
-        long to1970Ms = 1000 * 60 * 60 * 24 * to1970Date;
+        long to1970Ms = Math.multiplyExact(1000 * 60 * 60 * 24, to1970Date);
 
         to1970Ms += date.getMillisecond();
         to1970Ms += date.getSecond() * 1000L;
diff --git a/src/main/java/org/apache/xmlbeans/GDuration.java b/src/main/java/org/apache/xmlbeans/GDuration.java
index 42498a3..eb9255d 100644
--- a/src/main/java/org/apache/xmlbeans/GDuration.java
+++ b/src/main/java/org/apache/xmlbeans/GDuration.java
@@ -121,9 +121,10 @@
                 if (!GDate.isDigit(ch))
                     break;
                 int digit = GDate.digitVal(ch);
-                if (value > (Integer.MAX_VALUE - digit) / 10)
+                long newValue = value * 10L + digit;
+                if (newValue > Integer.MAX_VALUE)
                     throw new IllegalArgumentException("duration field value out of range: " + str);
-                value = value * 10 + digit;
+                value = Math.toIntExact(newValue);
             }
             if (ch == '.')
             {
diff --git a/src/main/java/org/apache/xmlbeans/impl/util/XsTypeConverter.java b/src/main/java/org/apache/xmlbeans/impl/util/XsTypeConverter.java
index adc2b2b..8124f32 100644
--- a/src/main/java/org/apache/xmlbeans/impl/util/XsTypeConverter.java
+++ b/src/main/java/org/apache/xmlbeans/impl/util/XsTypeConverter.java
@@ -399,7 +399,7 @@
             prefix = charSeq.subSequence(0, firstcolon).toString();
             localname = charSeq.subSequence(firstcolon + 1, charSeq.length()).toString();
             if (firstcolon == 0) {
-                throw new InvalidLexicalValueException("invalid xsd:QName '" + charSeq.toString() + "'");
+                throw new InvalidLexicalValueException("invalid xsd:QName '" + charSeq + "'");
             }
         } else {
             prefix = EMPTY_PREFIX;
@@ -590,7 +590,7 @@
         // int parser on a CharSequence
         int length = ch.length();
         if (length < 1) {
-            throw new NumberFormatException("For input string: \"" + ch.toString() + "\"");
+            throw new NumberFormatException("For input string: \"" + ch + "\"");
         }
 
         int sign = 1;
@@ -620,17 +620,17 @@
             int v = (c >= '0' && c <= '9') ? c - '0' : -1;
 
             if (v < 0) {
-                throw new NumberFormatException("For input string: \"" + ch.toString() + "\"");
+                throw new NumberFormatException("For input string: \"" + ch + "\"");
             }
 
             if (result < limit || (result == limit && v > limit2)) {
-                throw new NumberFormatException("For input string: \"" + ch.toString() + "\"");
+                throw new NumberFormatException("For input string: \"" + ch + "\"");
             }
 
-            result = result * 10 - v;
+            result = Math.toIntExact(result * 10L - v);
         }
 
-        return sign * result;
+        return Math.multiplyExact(sign, result);
     }
 
     // ======================== anyURI ========================