Hi Craig,

I tried your patch and it works with my environment using German as the default locale.

Regards Michael

------------------------------------------------------------------------

Index: test/java/javax/jdo/identity/ObjectIdentityTest.java
===================================================================
--- test/java/javax/jdo/identity/ObjectIdentityTest.java        (revision 
209692)
+++ test/java/javax/jdo/identity/ObjectIdentityTest.java        (working copy)
@@ -27,12 +27,22 @@
import java.io.Serializable;

import java.math.BigDecimal;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+import java.text.SimpleDateFormat;
+import java.text.DateFormat;
+
import java.util.Currency;
import java.util.Date;
import java.util.Locale;

import javax.jdo.JDOUserException;
import javax.jdo.JDONullIdentityException;
+
+import javax.jdo.spi.JDOImplHelper;
+
import javax.jdo.util.BatchTestRunner;

/**
@@ -40,6 +50,17 @@
 */
public class ObjectIdentityTest extends SingleFieldIdentityTest {
+ /** The JDOImplHelper instance used for Date formatting.
+     */
+    private static JDOImplHelper helper = (JDOImplHelper)
+        AccessController.doPrivileged(
+            new PrivilegedAction () {
+                public Object run () {
+                    return JDOImplHelper.getInstance();
+                }
+            }
+        );
+ /** Creates a new instance of ObjectIdentityTest */
    public ObjectIdentityTest() {
    }
@@ -199,10 +220,21 @@
    }

    public void testStringDateConstructor() {
+        SimpleDateFormat usDateFormat = new SimpleDateFormat
+                ("MMM dd, yyyy hh:mm:ss a", Locale.US);
+        helper.registerDateFormat(usDateFormat);
Object c1 = new ObjectIdentity(Object.class, "java.util.Date:Jan 01, 1970 00:00:00 AM");
+        helper.registerDateFormat(DateFormat.getDateTimeInstance());
    }

+    public void testStringDefaultDateConstructor() {
+        DateFormat dateFormat = DateFormat.getDateTimeInstance();
+        String rightNow = dateFormat.format(new Date());
+ Object c1 = new ObjectIdentity(Object.class, + "java.util.Date:" + rightNow);
+    }
+
    public void testBadStringDateConstructor() {
        try {
ObjectIdentity c1 = new ObjectIdentity(Object.class, Index: src/java/javax/jdo/spi/JDOImplHelper.java
===================================================================
--- src/java/javax/jdo/spi/JDOImplHelper.java   (revision 209692)
+++ src/java/javax/jdo/spi/JDOImplHelper.java   (working copy)
@@ -89,14 +89,20 @@
     */
    private final static I18NHelper msg = I18NHelper.getInstance 
("javax.jdo.Bundle"); //NOI18N
+ /** The DateFormat pattern.
+     */
+    private static String dateFormatPattern;
+
    /** The default DateFormat instance.
     */
-    static DateFormat dateFormat = DateFormat.getDateTimeInstance();
+    private static DateFormat dateFormat;

-    /** The DateFormat pattern, set to the default.
+    /** Register the default DateFormat instance.
     */
-    static String dateFormatPattern = "MMM d, yyyy hh:mm:ss a";  //NOI18N
-
+    static {
+        jdoImplHelper.registerDateFormat(DateFormat.getDateTimeInstance());
+    }
+ /** Creates new JDOImplHelper */
    private JDOImplHelper() {
    }
@@ -631,7 +637,7 @@
     * for error messages.
     * @param df the DateFormat instance to use
     */
-    synchronized void registerDateFormat(DateFormat df) {
+    public synchronized void registerDateFormat(DateFormat df) {
        dateFormat = df;
        if (df instanceof SimpleDateFormat) {
            dateFormatPattern = ((SimpleDateFormat)df).toPattern();

------------------------------------------------------------------------


Craig Russell

Architect, Sun Java Enterprise System http://java.sun.com/products/jdo

408 276-5638 mailto:[EMAIL PROTECTED]

P.S. A good JDO? O, Gasp!




--
Michael Bouschen                [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED]        http://www.tech.spree.de/
Tel.:++49/30/235 520-33         Buelowstr. 66                   
Fax.:++49/30/2175 2012          D-10783 Berlin                  

Reply via email to