You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by km...@apache.org on 2007/12/14 17:27:44 UTC

svn commit: r604216 - /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContextGraphAction.java

Author: kmenard
Date: Fri Dec 14 08:27:43 2007
New Revision: 604216

URL: http://svn.apache.org/viewvc?rev=604216&view=rev
Log:
Fixed an issue with the ThreadLocal not being initialized for all threads.

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContextGraphAction.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContextGraphAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContextGraphAction.java?rev=604216&r1=604215&r2=604216&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContextGraphAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContextGraphAction.java Fri Dec 14 08:27:43 2007
@@ -35,12 +35,14 @@
  */
 class CayenneContextGraphAction extends ObjectContextGraphAction {
 
-    ThreadLocal<Boolean> arcChangeInProcess;
+    static final ThreadLocal<Boolean> arcChangeInProcess = new ThreadLocal<Boolean>() {
+        protected synchronized Boolean initialValue() {
+            return Boolean.FALSE;
+        }
+    };
 
     CayenneContextGraphAction(ObjectContext context) {
         super(context);
-        this.arcChangeInProcess = new ThreadLocal<Boolean>();
-        this.arcChangeInProcess.set(Boolean.FALSE);
     }
 
     protected void handleArcPropertyChange(



Re: svn commit: r604216 - /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/ apache/cayenne/CayenneContextGraphAction.java

Posted by Kevin Menard <km...@servprise.com>.
I'm pretty sure this fixed the issue I was talking about on the user list.
Before I go ahead and backport it to the other branches, could someone more
familiar with the code take a quick look at the change?

I'm a little skeptical because this strikes me as something one of the other
ROP users would have run into at some point.

Thanks,
Kevin


On 12/14/07 11:27 AM, "kmenard@apache.org" <km...@apache.org> wrote:

> Author: kmenard
> Date: Fri Dec 14 08:27:43 2007
> New Revision: 604216
> 
> URL: http://svn.apache.org/viewvc?rev=604216&view=rev
> Log:
> Fixed an issue with the ThreadLocal not being initialized for all threads.
> 
> Modified:
>     
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apac
> he/cayenne/CayenneContextGraphAction.java
> 
> Modified: 
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apac
> he/cayenne/CayenneContextGraphAction.java
> URL: 
> http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpub
> lished/src/main/java/org/apache/cayenne/CayenneContextGraphAction.java?rev=604
> 216&r1=604215&r2=604216&view=diff
> ==============================================================================
> --- 
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apac
> he/cayenne/CayenneContextGraphAction.java (original)
> +++ 
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apac
> he/cayenne/CayenneContextGraphAction.java Fri Dec 14 08:27:43 2007
> @@ -35,12 +35,14 @@
>   */
>  class CayenneContextGraphAction extends ObjectContextGraphAction {
>  
> -    ThreadLocal<Boolean> arcChangeInProcess;
> +    static final ThreadLocal<Boolean> arcChangeInProcess = new
> ThreadLocal<Boolean>() {
> +        protected synchronized Boolean initialValue() {
> +            return Boolean.FALSE;
> +        }
> +    };
>  
>      CayenneContextGraphAction(ObjectContext context) {
>          super(context);
> -        this.arcChangeInProcess = new ThreadLocal<Boolean>();
> -        this.arcChangeInProcess.set(Boolean.FALSE);
>      }
>  
>      protected void handleArcPropertyChange(
> 
>