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/05/19 20:39:57 UTC
svn commit: r946332 - in /openjpa/trunk:
openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetaDataRepository.java
Author: curtisr7
Date: Wed May 19 18:39:56 2010
New Revision: 946332
URL: http://svn.apache.org/viewvc?rev=946332&view=rev
Log:
OPENJPA-1670: PCRegistry should not save duplicate listeners.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetaDataRepository.java
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java?rev=946332&r1=946331&r2=946332&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java Wed May 19 18:39:56 2010
@@ -20,6 +20,7 @@ package org.apache.openjpa.enhance;
import java.util.Collection;
import java.util.Collections;
+import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Map;
@@ -44,7 +45,7 @@ public class PCRegistry {
ReferenceMap.HARD);
// register class listeners
- private static final Collection<RegisterClassListener> _listeners = new LinkedList<RegisterClassListener>();
+ private static final Collection<RegisterClassListener> _listeners = new LinkedHashSet<RegisterClassListener>();
/**
* Register a {@link RegisterClassListener}.
@@ -67,9 +68,9 @@ public class PCRegistry {
/**
* Removes a {@link RegisterClassListener}.
*/
- public static void removeRegisterClassListener(RegisterClassListener rcl) {
+ public static boolean removeRegisterClassListener(RegisterClassListener rcl) {
synchronized (_listeners) {
- _listeners.remove(rcl);
+ return _listeners.remove(rcl);
}
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetaDataRepository.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetaDataRepository.java?rev=946332&r1=946331&r2=946332&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetaDataRepository.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetaDataRepository.java Wed May 19 18:39:56 2010
@@ -20,11 +20,11 @@ package org.apache.openjpa.persistence.m
import java.util.Collection;
+import org.apache.openjpa.enhance.PCRegistry;
+import org.apache.openjpa.enhance.PCRegistry.RegisterClassListener;
import org.apache.openjpa.meta.ClassMetaData;
-import org.apache.openjpa.meta.FieldMetaData;
import org.apache.openjpa.meta.MetaDataRepository;
import org.apache.openjpa.meta.QueryMetaData;
-import org.apache.openjpa.meta.XMLMetaData;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
import org.apache.openjpa.persistence.test.AbstractPersistenceTestCase;
import org.apache.openjpa.persistence.xmlmapping.entities.Customer;
@@ -74,6 +74,16 @@ public class TestMetaDataRepository exte
}
}
}
+
+ public void testPreloadCleanUp() {
+ OpenJPAEntityManagerFactorySPI emf = null;
+ emf = createNamedEMF(PU_NAME, "openjpa.MetaDataRepository", "Preload=true");
+ MetaDataRepository repo = emf.getConfiguration().getMetaDataRepositoryInstance();
+ emf.createEntityManager();
+ emf.close();
+ assertFalse("The PCRegistry should no longer reference the MetaDataRepository.", PCRegistry
+ .removeRegisterClassListener(repo));
+ }
public void testXmlMappingPreload() {
OpenJPAEntityManagerFactorySPI emf = null;