You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mi...@apache.org on 2009/09/22 16:45:26 UTC
svn commit: r817679 - in /openjpa/trunk:
openjpa-kernel/src/main/java/org/apache/openjpa/conf/
openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/
Author: mikedd
Date: Tue Sep 22 14:45:26 2009
New Revision: 817679
URL: http://svn.apache.org/viewvc?rev=817679&view=rev
Log:
OPENJPA-1298:
Remove WriteBehindCallbackManager which 'shared' a single callback with multiple EMFs unintentionally
Removed:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindCallbackManager.java
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/AbstractWriteBehindTestCase.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/TestWriteBehindConfiguration.java
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java?rev=817679&r1=817678&r2=817679&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java Tue Sep 22 14:45:26 2009
@@ -74,7 +74,6 @@
import org.apache.openjpa.writebehind.WriteBehindCacheManager;
import org.apache.openjpa.writebehind.WriteBehindCacheManagerImpl;
import org.apache.openjpa.writebehind.WriteBehindCallback;
-import org.apache.openjpa.writebehind.WriteBehindCallbackManager;
/**
* Implementation of the {@link OpenJPAConfiguration} interface.
@@ -1759,16 +1758,9 @@
}
public WriteBehindCallback getWriteBehindCallbackInstance() {
- WriteBehindCallback callback =
- (WriteBehindCallback) writeBehindCallbackPlugin.get();
-
+ WriteBehindCallback callback = (WriteBehindCallback) writeBehindCallbackPlugin.get();
if (callback == null) {
- WriteBehindCallbackManager manager = WriteBehindCallbackManager.getInstance();
- callback = manager.getCallback(getWriteBehindCallback());
- if (callback == null) {
- callback = (WriteBehindCallback) writeBehindCallbackPlugin.instantiate(WriteBehindCallback.class, this);
- manager.putCallback(getWriteBehindCallback(), callback);
- }
+ callback = (WriteBehindCallback) writeBehindCallbackPlugin.instantiate(WriteBehindCallback.class, this);
}
return callback;
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/AbstractWriteBehindTestCase.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/AbstractWriteBehindTestCase.java?rev=817679&r1=817678&r2=817679&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/AbstractWriteBehindTestCase.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/AbstractWriteBehindTestCase.java Tue Sep 22 14:45:26 2009
@@ -27,7 +27,6 @@
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
import org.apache.openjpa.persistence.test.AbstractCachedEMFTestCase;
-import org.apache.openjpa.persistence.test.PersistenceTestCase;
import org.apache.openjpa.writebehind.WriteBehindCache;
import org.apache.openjpa.writebehind.WriteBehindCacheManager;
import org.apache.openjpa.writebehind.WriteBehindCallback;
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/TestWriteBehindConfiguration.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/TestWriteBehindConfiguration.java?rev=817679&r1=817678&r2=817679&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/TestWriteBehindConfiguration.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/TestWriteBehindConfiguration.java Tue Sep 22 14:45:26 2009
@@ -18,12 +18,13 @@
*/
package org.apache.openjpa.jdbc.writebehind;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.Persistence;
-import javax.persistence.PersistenceException;
+import org.apache.openjpa.conf.OpenJPAConfigurationImpl;
import org.apache.openjpa.datacache.DataCacheStoreManager;
import org.apache.openjpa.kernel.DelegatingStoreManager;
import org.apache.openjpa.persistence.EntityManagerImpl;
@@ -33,7 +34,6 @@
import org.apache.openjpa.writebehind.WriteBehindCache;
import org.apache.openjpa.writebehind.WriteBehindCacheManager;
import org.apache.openjpa.writebehind.WriteBehindCallback;
-import org.apache.openjpa.writebehind.WriteBehindException;
import org.apache.openjpa.writebehind.WriteBehindStoreManager;
public class TestWriteBehindConfiguration extends AbstractWriteBehindTestCase {
@@ -104,6 +104,42 @@
callback instanceof CustomWriteBehindCallback);
}
+
+ public void testWriteBehindCallbackCreatedForEachConfiguration() {
+ OpenJPAEntityManagerFactorySPI emf1 = emf;
+ ArrayList<Object> clonedProps = new ArrayList<Object>();
+ for(Object o : writeBehindProps) {
+ // quick and dirty way to alter the properties, this should prevent the cached EMF from being reused.
+ if(o.toString().equals("unsupported")) {
+ // just change the runtimeUnenhancedClasses value.
+ clonedProps.add("supported");
+ }
+ else {
+ clonedProps.add(o);
+ }
+ }
+ OpenJPAEntityManagerFactorySPI emf2 = createEMF(clonedProps.toArray());
+ assertNotNull("Unable to create first EntityManager ", emf1);
+ assertNotNull("Unable to create second EntityManager ", emf2);
+ assertNotSame("Test is invalid if the same EMF is used", emf1, emf2);
+
+ OpenJPAConfigurationImpl conf1 = (OpenJPAConfigurationImpl) emf1.getConfiguration();
+ OpenJPAConfigurationImpl conf2 = (OpenJPAConfigurationImpl) emf2.getConfiguration();
+
+ assertNotNull(conf1);
+ assertNotNull(conf2);
+ assertNotSame("Configuration objects for different EMFs should not be the same", conf1, conf2);
+
+ assertNotSame("Each Configuration should have its own WriteBehindCallbackPlugins",
+ conf1.writeBehindCallbackPlugin, conf2.writeBehindCallbackPlugin);
+
+ WriteBehindCallback wbc1 = conf1.getWriteBehindCallbackInstance();
+ WriteBehindCallback wbc2 = conf2.getWriteBehindCallbackInstance();
+ assertNotNull(wbc1);
+ assertNotNull(wbc2);
+ assertNotSame("Each Configuration should have its own WriteBehindCallback", wbc1, wbc2);
+ }
+
public OpenJPAEntityManagerFactorySPI getCustomFactory(
Map<String, Object> extraProps) {
Map<String, Object> props = getPropertiesMap(getDefaultWriteBehindProperties());