Index: subversion/bindings/javahl/native/LogMessageCallback.cpp
===================================================================
--- subversion/bindings/javahl/native/LogMessageCallback.cpp	(revision 24623)
+++ subversion/bindings/javahl/native/LogMessageCallback.cpp	(working copy)
@@ -87,7 +87,7 @@
         }
         sm_mid = env->GetMethodID(clazz, "singleMessage",
             "([L"JAVA_PACKAGE"/ChangePath;JLjava/lang/String;"
-            "Ljava/util/Date;Ljava/lang/String;)V");
+            "JLjava/lang/String;)V");
         if (JNIUtil::isJavaExceptionThrown())
         {
            return SVN_NO_ERROR;
@@ -116,17 +116,10 @@
         }
     }
 
-    jobject jdate = NULL;
+    apr_time_t commit_time = 0;
     if (date != NULL && *date != '\0')
     {
-        apr_time_t timeTemp;
-
-        SVN_ERR(svn_time_from_cstring(&timeTemp, date, pool));
-        jdate = JNIUtil::createDate(timeTemp);
-        if (JNIUtil::isJavaExceptionThrown())
-        {
-           return SVN_NO_ERROR;
-        }
+        SVN_ERR(svn_time_from_cstring(&commit_time, date, pool));
     }
 
     jstring jauthor = JNIUtil::makeJString(author);
@@ -211,7 +204,7 @@
     }
 
     env->CallVoidMethod(m_callback, sm_mid, jChangedPaths, (jlong)rev, jauthor,
-                        jdate, jmessage);
+                        (jlong)commit_time, jmessage);
     if (JNIUtil::isJavaExceptionThrown())
     {
        return SVN_NO_ERROR;
Index: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessageCallback.java
===================================================================
--- subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessageCallback.java	(revision 24623)
+++ subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessageCallback.java	(working copy)
@@ -17,8 +17,6 @@
  */
 package org.tigris.subversion.javahl;
 
-import java.util.Date;
-
 /**
  * This interface is used to receive every log message for the log
  * messages found by a SVNClientInterface.logMessages call.
@@ -31,9 +29,13 @@
      * @param changedPaths the paths that were changed
      * @param revision     the revision of the commit
      * @param author       the author of the commit
-     * @param date         the date of the commit
+     * @param timeMicros the time of the commit measured in the number
+     *        of microseconds since 00:00:00 January 1, 1970 UTC
      * @param message      the log message for the commit
      */
-    public void singleMessage(ChangePath[] changedPaths, long revision,
-                              String author, Date date, String message);
+    public void singleMessage(ChangePath[] changedPaths,
+                              long revision,
+                              String author,
+                              long timeMicros,
+                              String message);
 }
Index: subversion/bindings/javahl/src/org/tigris/subversion/javahl/tests/BasicTests.java
===================================================================
--- subversion/bindings/javahl/src/org/tigris/subversion/javahl/tests/BasicTests.java	(revision 24623)
+++ subversion/bindings/javahl/src/org/tigris/subversion/javahl/tests/BasicTests.java	(working copy)
@@ -1876,6 +1876,18 @@
         assertEquals("wrong copy source rev", -1, cp[0].getCopySrcRevision());
         assertNull("wrong copy source path", cp[0].getCopySrcPath());
         assertEquals("wrong action", 'A', cp[0].getAction());
+        assertEquals("wrong time with getTimeMicros()",
+                     lm[0].getTimeMicros()/1000,
+                     lm[0].getDate().getTime());
+        assertEquals("wrong time with getTimeMillis()",
+                     lm[0].getTimeMillis(),
+                     lm[0].getDate().getTime());
+        assertEquals("wrong date with getTimeMicros()",
+                     lm[0].getDate(),
+                     new java.util.Date(lm[0].getTimeMicros()/1000));
+        assertEquals("wrong date with getTimeMillis()",
+                     lm[0].getDate(),
+                     new java.util.Date(lm[0].getTimeMillis()));
     }
 
     /**
Index: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessage.java
===================================================================
--- subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessage.java	(revision 24623)
+++ subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessage.java	(working copy)
@@ -32,10 +32,12 @@
     private String message;
 
     /**
-     * The date of the commit.
+     * The time of the commit measured in the number of microseconds
+     * since 00:00:00 January 1, 1970 UTC.
      */
-    private Date date;
+    private long timeMicros;
 
+
     /**
      * The number of the revision.
      */
@@ -54,23 +56,47 @@
     private ChangePath[] changedPaths;
 
     /**
-     * This constructor is only called only from the thin wrapper.
+     * This constructor is the original constructor from Subversion
+     * 1.4 and older.
+     *
      * @param m     the log message text
      * @param d     the date of the commit
      * @param r     the number of the revision
      * @param a     the author of the commit
      * @param cp    the items changed by this commit
+     * @deprecated Use the constructor that takes the number of
+     *             microseconds since 00:00:00 January 1, 1970 UTC
      */
     LogMessage(ChangePath[] cp, long r, String a, Date d, String m)
     {
         message = m;
-        date = d;
+        timeMicros = 1000*d.getTime();
         revision = r;
         author = a;
         changedPaths = cp;
     }
 
     /**
+     * This constructor is only called only from the thin wrapper.
+     *
+     * @param m     the log message text
+     * @param t     the time of the commit measured in the number of
+     *              microseconds since 00:00:00 January 1, 1970 UTC
+     * @param r     the number of the revision
+     * @param a     the author of the commit
+     * @param cp    the items changed by this commit
+     * @since 1.5
+     */
+    LogMessage(ChangePath[] cp, long r, String a, long t, String m)
+    {
+        message = m;
+        timeMicros = t;
+        revision = r;
+        author = a;
+        changedPaths = cp;
+    }
+
+    /**
      * Return the log message text
      * @return the log message text
      */
@@ -80,12 +106,34 @@
     }
 
     /**
+     * Returns the time of the commit
+     * @return the time of the commit measured in the number of
+     *         microseconds since 00:00:00 January 1, 1970 UTC
+     * @since 1.5
+     */
+    public long getTimeMicros()
+    {
+        return timeMicros;
+    }
+
+    /**
+     * Returns the time of the commit
+     * @return the time of the commit measured in the number of
+     *         milliseconds since 00:00:00 January 1, 1970 UTC
+     * @since 1.5
+     */
+    public long getTimeMillis()
+    {
+        return timeMicros/1000;
+    }
+
+    /**
      * Returns the date of the commit
      * @return the date of the commit
      */
     public Date getDate()
     {
-        return date;
+        return new java.util.Date(timeMicros/1000);
     }
 
     /**
Index: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
===================================================================
--- subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java	(revision 24623)
+++ subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java	(working copy)
@@ -1856,11 +1856,17 @@
     {
         private List messages = new ArrayList();
 
-        public void singleMessage(ChangePath[] changedPaths, long revision,
-                                  String author, Date date, String message)
+        public void singleMessage(ChangePath[] changedPaths,
+                                  long revision,
+                                  String author,
+                                  long timeMicros,
+                                  String message)
         {
-            LogMessage msg = new LogMessage(changedPaths, revision, author,
-                                            date, message);
+            LogMessage msg = new LogMessage(changedPaths,
+                                            revision,
+                                            author,
+                                            timeMicros,
+                                            message);
             messages.add(msg);
         }
 
