Author: pcl
Date: Wed Nov 21 01:20:56 2007
New Revision: 597002

URL: http://svn.apache.org/viewvc?rev=597002&view=rev
Log:
While looking at dynamic class loading, I noticed that we create a separate 
MappingRepository when doing an in-process schema redefinion. This seems to 
lead to potentially-out-of-sync states in the main configuration 
MappingRepository; this change shares the Configuration's repository with the 
MappingTool.

It looks like the old behavior was somewhat implicit, so I'm hoping that it 
wasn't necessary, and that this change will be a step forward.

Modified:
    
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.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=597002&r1=597001&r2=597002&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
 Wed Nov 21 01:20:56 2007
@@ -26,6 +26,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
+import org.apache.openjpa.jdbc.meta.MappingRepository;
 import org.apache.openjpa.jdbc.meta.MappingTool;
 import org.apache.openjpa.kernel.AbstractBrokerFactory;
 import org.apache.openjpa.kernel.Bootstrap;
@@ -145,14 +146,16 @@
         if (StringUtils.isEmpty(action))
             return;
 
-        Collection classes = conf.getMetaDataRepositoryInstance().
-            loadPersistentTypes(false, loader);
+        MappingRepository repo = conf.getMappingRepositoryInstance();
+        Collection classes = repo.loadPersistentTypes(false, loader);
         if (classes.isEmpty())
             return;
 
         String props = Configurations.getProperties(action);
         action = Configurations.getClassName(action);
         MappingTool tool = new MappingTool(conf, action, false);
+        tool.setRepository(repo);
+        tool.setSchemaGroup(tool.getSchemaGroup());
         Configurations.configureInstance(tool, conf, props,
             "SynchronizeMappings");
 


Reply via email to