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/02/18 00:00:51 UTC
svn commit: r911213 - in /openjpa/trunk:
openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestLifecycleEventManager.java
Author: curtisr7
Date: Wed Feb 17 23:00:50 2010
New Revision: 911213
URL: http://svn.apache.org/viewvc?rev=911213&view=rev
Log:
OPENJPA-1517: Reduce synchronization in LifecycleEventManager.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestLifecycleEventManager.java
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java?rev=911213&r1=911212&r2=911213&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java Wed Feb 17 23:00:50 2010
@@ -233,7 +233,7 @@
* Return true if any listeners are registered for the given source and
* event type.
*/
- private synchronized boolean hasListeners(Object source,
+ private boolean hasListeners(Object source,
ClassMetaData meta, int type) {
if (meta.getLifecycleMetaData().getIgnoreSystemListeners())
return false;
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestLifecycleEventManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestLifecycleEventManager.java?rev=911213&r1=911212&r2=911213&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestLifecycleEventManager.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestLifecycleEventManager.java Wed Feb 17 23:00:50 2010
@@ -19,12 +19,10 @@
package org.apache.openjpa.persistence.event;
-import java.lang.Thread.UncaughtExceptionHandler;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
+import org.apache.openjpa.persistence.event.common.apps.RuntimeTest1;
+import org.apache.openjpa.persistence.event.common.apps.RuntimeTest2;
+import org.apache.openjpa.persistence.event.common.apps.RuntimeTest4;
+import org.apache.openjpa.persistence.common.utils.AbstractTestCase;
import org.apache.openjpa.event.LifecycleEvent;
import org.apache.openjpa.event.LifecycleEventManager;
import org.apache.openjpa.event.LoadListener;
@@ -32,10 +30,7 @@
import org.apache.openjpa.meta.ClassMetaData;
import org.apache.openjpa.meta.MetaDataRepository;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
-import org.apache.openjpa.persistence.common.utils.AbstractTestCase;
-import org.apache.openjpa.persistence.event.common.apps.RuntimeTest1;
-import org.apache.openjpa.persistence.event.common.apps.RuntimeTest2;
-import org.apache.openjpa.persistence.event.common.apps.RuntimeTest4;
+import org.apache.openjpa.persistence.OpenJPAPersistence;
/**
* <p>Test the {@link LifecycleEventManager}.</p>
@@ -43,14 +38,18 @@
* @author Abe White
*/
public class TestLifecycleEventManager
- extends AbstractTestCase implements UncaughtExceptionHandler{
+ extends AbstractTestCase {
public TestLifecycleEventManager(String s) {
super(s, "eventcactusapp");
}
- public void atestAllClassListener() {
- MetaDataRepository repos = getMDR();
+ public void testAllClassListener() {
+ MetaDataRepository repos =
+ ((OpenJPAEntityManagerFactorySPI) OpenJPAPersistence.cast(
+ OpenJPAPersistence.createEntityManagerFactory("TestConv2", "")))
+ .
+ getConfiguration().getMetaDataRepositoryInstance();
ClassMetaData meta = repos.getMetaData(RuntimeTest2.class, null, true);
LifecycleEventManager mgr = new LifecycleEventManager();
RuntimeTest2 pc = new RuntimeTest2();
@@ -119,8 +118,12 @@
assertEquals(2, listener.store);
}
- public void atestBaseClassListener() {
- MetaDataRepository repos = getMDR();
+ public void testBaseClassListener() {
+ MetaDataRepository repos =
+ ((OpenJPAEntityManagerFactorySPI) OpenJPAPersistence.cast(
+ OpenJPAPersistence.createEntityManagerFactory("TestConv2", "")))
+ .
+ getConfiguration().getMetaDataRepositoryInstance();
ClassMetaData meta = repos.getMetaData(RuntimeTest2.class, null, true);
LifecycleEventManager mgr = new LifecycleEventManager();
@@ -191,62 +194,6 @@
assertEquals(3, listener.load);
assertEquals(1, listener.store);
}
-
- public void testMultiThreaded() throws Exception{
-
- for(int z = 0; z < 1000; z++){
-
- final LifecycleEventManager mgr = new LifecycleEventManager();
- final List<Listener> listeners = new ArrayList<Listener>();
- final ClassMetaData meta = getMDR().getMetaData(RuntimeTest2.class, null, true);
- final RuntimeTest2 pc = new RuntimeTest2();
-
- for(int i = 0 ; i<10000;i++){
- Listener l = new Listener();
- mgr.addListener(l, null);
- listeners.add(l);
- }
-
- Thread removerThread = new Thread(){
- public void run() {
- for(Listener l : listeners){
- mgr.removeListener(l);
- }
- }
- };
- Thread hasLoadListenersThread = new Thread(){
- @Override
- public void run() {
- for(Listener l : listeners){
- if(mgr.hasLoadListeners(pc, meta) == false){
- System.out.println("false!");
- }
-
- }
- }
- };
- removerThread.setUncaughtExceptionHandler(this);
- hasLoadListenersThread.setUncaughtExceptionHandler(this);
-
- hasLoadListenersThread.start();
- removerThread.start();
-
- removerThread.join();
- hasLoadListenersThread.join();
-
- Throwable t = exceptions.get(hasLoadListenersThread);
- assertNull(t);
- }
- }
- Map<Thread, Throwable> exceptions = new HashMap<Thread, Throwable>();
- public void uncaughtException(Thread thread, Throwable throwable) {
- exceptions.put(thread, throwable);
-
- }
-
- private MetaDataRepository getMDR() {
- return ((OpenJPAEntityManagerFactorySPI)getEmf()).getConfiguration().getMetaDataRepositoryInstance();
- }
private static class Listener
implements LoadListener, StoreListener {