Author: aadamchik
Date: Tue Sep 11 01:23:11 2012
New Revision: 1383204
URL: http://svn.apache.org/viewvc?rev=1383204&view=rev
Log:
CAY-1737 ObjectContexts listening to DataChannel events must be non-blocking
(cherry picked from commit 6e34cbad5514c3f29df58e52c7a0ade77dee6d43)
Modified:
cayenne/main/branches/STABLE-3.1/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EventUtil.java
Modified:
cayenne/main/branches/STABLE-3.1/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EventUtil.java
URL:
http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.1/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EventUtil.java?rev=1383204&r1=1383203&r2=1383204&view=diff
==============================================================================
---
cayenne/main/branches/STABLE-3.1/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EventUtil.java
(original)
+++
cayenne/main/branches/STABLE-3.1/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EventUtil.java
Tue Sep 11 01:23:11 2012
@@ -87,7 +87,20 @@ public class EventUtil {
String fqSubject = subject.getSubjectName();
String method = fqSubject.substring(fqSubject.lastIndexOf('/') +
1);
- manager.addListener(listener, method, GraphEvent.class, subject,
sender);
+ // use non-blocking listeners for multi-threaded EM; blocking for
single
+ // threaded...
+
+ if (manager.isSingleThreaded()) {
+ manager.addListener(listener, method, GraphEvent.class,
subject, sender);
+ }
+ else {
+ manager.addNonBlockingListener(
+ listener,
+ method,
+ GraphEvent.class,
+ subject,
+ sender);
+ }
}
}