db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From e...@jpox.org
Subject JDOHelper patch
Date Sat, 16 Jul 2005 16:43:46 GMT
Hi,

There are two issues in JDOHelper.getPersistenceManagerFactory

1 - the JDOHelper.getPMF raises will raise an exception if there is no
getPMF(Properties) or getPMF(Map) in the implementation. The exception for the
properties method is not raised, but in its place the exception for the map
method.

2 - a try catch block is hidding JDOExceptions.

Here is the patch:

Index: C:/trunck/api20/test/java/javax/jdo/JDOHelperTest.java
===================================================================
--- C:/trunck/api20/test/java/javax/jdo/JDOHelperTest.java	(revision 219338)
+++ C:/trunck/api20/test/java/javax/jdo/JDOHelperTest.java	(working copy)
@@ -18,14 +18,14 @@

 import java.io.File;
 import java.io.InputStream;
-
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;

 import javax.jdo.pc.PCPoint;
+import javax.jdo.spi.I18NHelper;
 import javax.jdo.util.AbstractTest;
 import javax.jdo.util.BatchTestRunner;
-
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -38,6 +38,9 @@
  * TBD: getPMF for valid PMF class
  */
 public class JDOHelperTest extends AbstractTest {
+    /** The Internationalization message helper.
+     */
+    private final static I18NHelper msg = I18NHelper.getInstance
("javax.jdo.Bundle"); //NOI18N

     /** */
     public static void main(String args[]) {
@@ -130,6 +133,7 @@
         // TBD test JDOHelper.isDeleted(pc) for persistent instance
     }

+
     /** Test null String resource with no class loader.
      */
     public void testGetPMFNullResource() {
@@ -401,7 +405,21 @@
         catch (JDOFatalInternalException ex) {
             if (verbose)
                 println("Caught expected exception " + ex);
+            assertEquals(msg.msg("EXC_GetPMFNoSuchMethod"),ex.getMessage());
         }
+        Map map = new HashMap();
+        map.put("javax.jdo.PersistenceManagerFactoryClass",
+                "javax.jdo.JDOHelperTest$BadPMFNoGetPMFMethod");
+        try {
+            pmf = JDOHelper.getPersistenceManagerFactory(map);
+            fail("Bad PersistenceManagerFactoryClass should result in
JDOFatalUserException ");
+        }
+        catch (JDOFatalInternalException ex) {
+            if (verbose)
+                println("Caught expected exception " + ex);
+            assertEquals(msg.msg("EXC_GetPMFNoSuchMethod"),ex.getMessage());
+        }
+
     }

     /** Test bad PMF class non-static getPMF method.
Index: C:/trunck/api20/src/java/javax/jdo/JDOHelper.java
===================================================================
--- C:/trunck/api20/src/java/javax/jdo/JDOHelper.java	(revision 219338)
+++ C:/trunck/api20/src/java/javax/jdo/JDOHelper.java	(working copy)
@@ -24,26 +24,21 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.InputStream;
 import java.io.IOException;
-
-import java.lang.reflect.Method;
+import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
-
+import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.Map;
 import java.util.Properties;

-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
 import javax.jdo.spi.I18NHelper;
 import javax.jdo.spi.PersistenceCapable;
-import javax.jdo.spi.StateManager; // for javadoc
-
+import javax.jdo.spi.StateManager;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
-
 import javax.rmi.PortableRemoteObject;


@@ -338,7 +333,7 @@
                 } else if (propsMethod != null) {
                     pmfMethod = propsMethod;
                 } else {
-                    throw mapGetMethodException;
+                    throw propsGetMethodException;
                 }
             }
             return (PersistenceManagerFactory) pmfMethod.invoke (null, new
Object[] {props});
@@ -357,6 +352,8 @@
             throw new JDOFatalInternalException
(msg.msg("EXC_GetPMFNullPointerException", pmfClassName), e); //NOI18N
         } catch (ClassCastException e) {
             throw new JDOFatalInternalException
(msg.msg("EXC_GetPMFClassCastException", pmfClassName), e); //NOI18N
+        } catch (JDOException jdoex) {
+            throw jdoex;
         } catch (Exception e) {
             throw new JDOFatalInternalException
(msg.msg("EXC_GetPMFUnexpectedException"), e); //NOI18N
         }


Mime
View raw message