You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2010/06/11 20:51:48 UTC

svn commit: r953830 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java

Author: curtisr7
Date: Fri Jun 11 18:51:47 2010
New Revision: 953830

URL: http://svn.apache.org/viewvc?rev=953830&view=rev
Log:
OPENJPA-1692: Update method signature for BrokerFactory.getInstance(...) to take a classloader.

Modified:
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java?rev=953830&r1=953829&r2=953830&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java Fri Jun 11 18:51:47 2010
@@ -65,7 +65,7 @@ public class JDBCBrokerFactory
      * Factory method for obtaining a possibly-pooled factory from properties.
      * Invoked from {@link Bootstrap#getBrokerFactory}.
      */
-    public static JDBCBrokerFactory getInstance(ConfigurationProvider cp) {
+    public static JDBCBrokerFactory getInstance(ConfigurationProvider cp, ClassLoader loader) {
         Map<String, Object> props = cp.getProperties();
         Object key = toPoolKey(props);
         JDBCBrokerFactory factory = (JDBCBrokerFactory) getPooledFactoryForKey(key);
@@ -73,7 +73,7 @@ public class JDBCBrokerFactory
             return factory;
         
         // The creation of all BrokerFactories should be driven through Bootstrap.
-        factory = (JDBCBrokerFactory) Bootstrap.newBrokerFactory(cp, null);
+        factory = (JDBCBrokerFactory) Bootstrap.newBrokerFactory(cp, loader);
         pool(key, factory);
         return factory;
     }

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java?rev=953830&r1=953829&r2=953830&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java Fri Jun 11 18:51:47 2010
@@ -39,8 +39,11 @@ import org.apache.openjpa.util.UserExcep
  */
 public class Bootstrap {
 
-    private static final Class[] FACTORY_ARGS =
-        new Class[]{ ConfigurationProvider.class };
+    private static final Class<?>[] CONFIGURATION_ARG =
+        new Class<?>[]{ ConfigurationProvider.class };
+    
+    private static final Class<?>[] CONFIGURATION_CLASSLOADER_ARGS =
+        new Class<?>[] { ConfigurationProvider.class, ClassLoader.class };
 
     private static Localizer s_loc = Localizer.forPackage(Bootstrap.class);
 
@@ -59,7 +62,8 @@ public class Bootstrap {
     public static BrokerFactory newBrokerFactory(ConfigurationProvider conf,
         ClassLoader loader) {
         try {
-            BrokerFactory factory = invokeFactory(conf, loader, "newInstance");
+            BrokerFactory factory =
+                invokeFactory(conf, loader, "newInstance", CONFIGURATION_ARG, new Object[] { conf });
             factory.postCreationCallback();
             return factory;
         } catch (InvocationTargetException ite) {
@@ -89,7 +93,8 @@ public class Bootstrap {
     public static BrokerFactory getBrokerFactory(ConfigurationProvider conf,
         ClassLoader loader) {
         try {
-            return invokeFactory(conf, loader, "getInstance");
+            return invokeFactory(conf, loader, "getInstance", CONFIGURATION_CLASSLOADER_ARGS, new Object[] { conf,
+                loader });
         } catch (InvocationTargetException ite) {
             Throwable cause = ite.getTargetException();
             if (cause instanceof OpenJPAException)
@@ -103,7 +108,7 @@ public class Bootstrap {
     }
 
     private static BrokerFactory invokeFactory(ConfigurationProvider conf,
-        ClassLoader loader, String methodName)
+        ClassLoader loader, String methodName, Class<?>[] argTypes, Object[] args)
         throws InvocationTargetException, NoSuchMethodException,
             IllegalAccessException {
         if (conf == null)
@@ -113,17 +118,17 @@ public class Bootstrap {
         Class cls = getFactoryClass(conf, loader);
         Method meth;
         try {
-            meth = cls.getMethod(methodName, FACTORY_ARGS); 
+            meth = cls.getMethod(methodName, argTypes); 
         } catch (NoSuchMethodException nsme) {
             // handle cases where there is a mismatch between loaders by falling
             // back to the configuration's class loader for broker resolution
             cls = getFactoryClass(conf,
                 AccessController.doPrivileged(
                     J2DoPrivHelper.getClassLoaderAction(conf.getClass()))); 
-            meth = cls.getMethod(methodName, FACTORY_ARGS); 
+            meth = cls.getMethod(methodName, argTypes); 
         }
 
-        return (BrokerFactory) meth.invoke(null, new Object[]{ conf });
+        return (BrokerFactory) meth.invoke(null, args);
     }
 
     private static String getFactoryClassName(ConfigurationProvider conf,