[Jython-checkins] jython (merge 2.5 -> default): Merge 2.5

frank.wierzbicki jython-checkins at python.org
Tue Jul 24 20:03:09 CEST 2012


http://hg.python.org/jython/rev/b38eb0998437
changeset:   6811:b38eb0998437
parent:      6804:bef3eb26155e
parent:      6810:f9ccaa02aa02
user:        Frank Wierzbicki <fwierzbicki at gmail.com>
date:        Wed Jul 18 16:36:00 2012 -0700
summary:
  Merge 2.5

files:
  Lib/datetime.py              |  104 +++++++++++-----------
  Lib/test/test_datetime_jy.py |   35 +++++++
  2 files changed, 85 insertions(+), 54 deletions(-)


diff --git a/Lib/datetime.py b/Lib/datetime.py
--- a/Lib/datetime.py
+++ b/Lib/datetime.py
@@ -18,6 +18,14 @@
 
 import time as _time
 import math as _math
+import sys as _sys
+
+if _sys.platform.startswith('java'):
+    from java.lang import Object
+    from java.sql import Date, Timestamp, Time
+    from java.util import Calendar
+    from org.python.core import Py
+
 
 MINYEAR = 1
 MAXYEAR = 9999
@@ -981,22 +989,18 @@
     def __reduce__(self):
         return (self.__class__, self.__getstate())
 
-    def __tojava__(self, java_class):
-        from java.lang import Object
-        from java.sql import Date
-        from java.util import Calendar
-        from org.python.core import Py
+    if _sys.platform.startswith('java'):
+        def __tojava__(self, java_class):
+            if java_class not in (Calendar, Date, Object):
+                return Py.NoConversion
 
-        if java_class not in (Calendar, Date, Object):
-            return Py.NoConversion
-
-        calendar = Calendar.getInstance()
-        calendar.clear()
-        calendar.set(self.year, self.month - 1, self.day)
-        if java_class == Calendar:
-            return calendar
-        else:
-            return Date(calendar.getTimeInMillis())
+            calendar = Calendar.getInstance()
+            calendar.clear()
+            calendar.set(self.year, self.month - 1, self.day)
+            if java_class == Calendar:
+                return calendar
+            else:
+                return Date(calendar.getTimeInMillis())
 
 
 _date_class = date  # so functions w/ args named "date" can get at the class
@@ -1364,26 +1368,22 @@
     def __reduce__(self):
         return (time, self.__getstate())
 
-    def __tojava__(self, java_class):
-        # TODO, if self.tzinfo is not None, convert time to UTC
-        from java.lang import Object
-        from java.sql import Time
-        from java.util import Calendar
-        from org.python.core import Py
+    if _sys.platform.startswith('java'):
+        def __tojava__(self, java_class):
+            # TODO, if self.tzinfo is not None, convert time to UTC
+            if java_class not in (Calendar, Time, Object):
+                return Py.NoConversion
 
-        if java_class not in (Calendar, Time, Object):
-            return Py.NoConversion
-
-        calendar = Calendar.getInstance()
-        calendar.clear()
-        calendar.set(Calendar.HOUR_OF_DAY, self.hour)
-        calendar.set(Calendar.MINUTE, self.minute)
-        calendar.set(Calendar.SECOND, self.second)
-        calendar.set(Calendar.MILLISECOND, self.microsecond // 1000)
-        if java_class == Calendar:
-            return calendar
-        else:
-            return Time(calendar.getTimeInMillis())
+            calendar = Calendar.getInstance()
+            calendar.clear()
+            calendar.set(Calendar.HOUR_OF_DAY, self.hour)
+            calendar.set(Calendar.MINUTE, self.minute)
+            calendar.set(Calendar.SECOND, self.second)
+            calendar.set(Calendar.MILLISECOND, self.microsecond // 1000)
+            if java_class == Calendar:
+                return calendar
+            else:
+                return Time(calendar.getTimeInMillis())
 
 
 _time_class = time  # so functions w/ args named "time" can get at the class
@@ -1839,28 +1839,24 @@
     def __reduce__(self):
         return (self.__class__, self.__getstate())
 
-    def __tojava__(self, java_class):
-        # TODO, if self.tzinfo is not None, convert time to UTC
-        from java.lang import Object
-        from java.sql import Timestamp
-        from java.util import Calendar
-        from org.python.core import Py
+    if _sys.platform.startswith('java'):
+        def __tojava__(self, java_class):
+            # TODO, if self.tzinfo is not None, convert time to UTC
+            if java_class not in (Calendar, Timestamp, Object):
+                return Py.NoConversion
 
-        if java_class not in (Calendar, Timestamp, Object):
-            return Py.NoConversion
+            calendar = Calendar.getInstance()
+            calendar.clear()
+            calendar.set(self.year, self.month - 1, self.day,
+                         self.hour, self.minute, self.second)
 
-        calendar = Calendar.getInstance()
-        calendar.clear()
-        calendar.set(self.year, self.month - 1, self.day,
-                     self.hour, self.minute, self.second)
-
-        if java_class == Calendar:
-            calendar.set(Calendar.MILLISECOND, self.microsecond // 1000)
-            return calendar
-        else:
-            timestamp = Timestamp(calendar.getTimeInMillis())
-            timestamp.setNanos(self.microsecond * 1000)
-            return timestamp
+            if java_class == Calendar:
+                calendar.set(Calendar.MILLISECOND, self.microsecond // 1000)
+                return calendar
+            else:
+                timestamp = Timestamp(calendar.getTimeInMillis())
+                timestamp.setNanos(self.microsecond * 1000)
+                return timestamp
 
 
 datetime.min = datetime(1, 1, 1)
diff --git a/Lib/test/test_datetime_jy.py b/Lib/test/test_datetime_jy.py
new file mode 100644
--- /dev/null
+++ b/Lib/test/test_datetime_jy.py
@@ -0,0 +1,35 @@
+import unittest
+from test import test_support
+
+from datetime import timedelta
+from datetime import tzinfo
+from datetime import time
+from datetime import date, datetime
+
+from java.util import Calendar
+from java.sql import Date
+
+
+class TestJavaDatetime(unittest.TestCase):
+
+    def test_datetime(self):
+        self.assertTrue(hasattr(datetime, "__tojava__"))
+        x = datetime(2007, 1, 3)
+        y = x.__tojava__(Calendar)
+        self.assertTrue(isinstance(y, Calendar))
+
+    def test_date(self):
+        self.assertTrue(hasattr(date, "__tojava__"))
+        x = date(2007, 1, 3)
+        y = x.__tojava__(Calendar)
+        self.assertTrue(isinstance(y, Calendar))
+
+    def test_time(self):
+        self.assertTrue(hasattr(time, "__tojava__"))
+        x = time(1, 3)
+        y = x.__tojava__(Calendar)
+        self.assertTrue(isinstance(y, Calendar))
+
+
+if __name__ == '__main__':
+    unittest.main()

-- 
Repository URL: http://hg.python.org/jython


More information about the Jython-checkins mailing list