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 2008/08/15 21:02:29 UTC

svn commit: r686321 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/

Author: kmenard
Date: Fri Aug 15 12:02:28 2008
New Revision: 686321

URL: http://svn.apache.org/viewvc?rev=686321&view=rev
Log:
Fixed CAY-1096: CayenneContext should support ThreadLocal operations

Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=686321&r1=686320&r2=686321&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Fri Aug 15 12:02:28 2008
@@ -30,6 +30,7 @@
 CAY-1070 Generating SelectQuery Access Code
 CAY-1085 Use standard JDBC API for writing Oracle LOBs
 CAY-1091 Upgrade to Hessian 3.1.6
+CAY-1096 CayenneContext should support ThreadLocal operations
 
 Bug fixes since M4:
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java?rev=686321&r1=686320&r2=686321&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java Fri Aug 15 12:02:28 2008
@@ -18,22 +18,17 @@
  ****************************************************************/
 package org.apache.cayenne;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
 import org.apache.cayenne.cache.MapQueryCache;
 import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.graph.GraphManager;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.ObjectIdQuery;
 import org.apache.cayenne.query.Query;
-import org.apache.cayenne.reflect.AttributeProperty;
-import org.apache.cayenne.reflect.ClassDescriptor;
-import org.apache.cayenne.reflect.Property;
-import org.apache.cayenne.reflect.PropertyVisitor;
-import org.apache.cayenne.reflect.ToManyProperty;
-import org.apache.cayenne.reflect.ToOneProperty;
+import org.apache.cayenne.reflect.*;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 
 /**
  * A common base superclass for Cayenne ObjectContext implementors.
@@ -43,6 +38,42 @@
  */
 public abstract class BaseContext implements ObjectContext {
 
+    /**
+     * A holder of a ObjectContext bound to the current thread.
+     *
+     * @since 3.0
+     */
+    protected static final ThreadLocal<ObjectContext> threadObjectContext = new ThreadLocal<ObjectContext>();
+
+    /**
+     * Returns the ObjectContext bound to the current thread.
+     *
+     * @since 3.0
+     * @return the ObjectContext associated with caller thread.
+     * @throws IllegalStateException if there is no ObjectContext bound to the current
+     *             thread.
+     * @see org.apache.cayenne.conf.WebApplicationContextFilter
+     */
+    public static ObjectContext getThreadObjectContext() throws IllegalStateException {
+        ObjectContext context = threadObjectContext.get();
+        if (context == null) {
+            throw new IllegalStateException("Current thread has no bound DataContext.");
+        }
+
+        return context;
+    }
+
+    /**
+     * Binds a ObjectContext to the current thread. ObjectContext can later be retrieved by
+     * users in the same thread by calling {@link BaseContext#getThreadObjectContext}.
+     * Using null parameter will unbind currently bound ObjectContext.
+     *
+     * @since 3.0
+     */
+    public static void bindThreadObjectContext(ObjectContext context) {
+        threadObjectContext.set(context);
+    }
+
     // if we are to pass the context around, channel should be left alone and
     // reinjected later if needed
     protected transient DataChannel channel;

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java?rev=686321&r1=686320&r2=686321&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java Fri Aug 15 12:02:28 2008
@@ -19,31 +19,7 @@
 
 package org.apache.cayenne.access;
 
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.cayenne.BaseContext;
-import org.apache.cayenne.CayenneException;
-import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.DataChannel;
-import org.apache.cayenne.DataObject;
-import org.apache.cayenne.DataObjectUtils;
-import org.apache.cayenne.DataRow;
-import org.apache.cayenne.DeleteDenyException;
-import org.apache.cayenne.Fault;
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.ObjectId;
-import org.apache.cayenne.PersistenceState;
-import org.apache.cayenne.Persistent;
-import org.apache.cayenne.QueryResponse;
+import org.apache.cayenne.*;
 import org.apache.cayenne.access.util.IteratedSelectObserver;
 import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.cache.QueryCacheFactory;
@@ -53,28 +29,19 @@
 import org.apache.cayenne.graph.GraphDiff;
 import org.apache.cayenne.graph.GraphEvent;
 import org.apache.cayenne.graph.GraphManager;
-import org.apache.cayenne.map.DbJoin;
-import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.map.LifecycleEvent;
-import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.ObjRelationship;
-import org.apache.cayenne.query.NamedQuery;
-import org.apache.cayenne.query.ObjectIdQuery;
-import org.apache.cayenne.query.Query;
-import org.apache.cayenne.query.QueryMetadata;
-import org.apache.cayenne.query.RefreshQuery;
-import org.apache.cayenne.reflect.AttributeProperty;
-import org.apache.cayenne.reflect.ClassDescriptor;
-import org.apache.cayenne.reflect.PropertyVisitor;
-import org.apache.cayenne.reflect.ToManyProperty;
-import org.apache.cayenne.reflect.ToOneProperty;
+import org.apache.cayenne.map.*;
+import org.apache.cayenne.query.*;
+import org.apache.cayenne.reflect.*;
 import org.apache.cayenne.util.EventUtil;
 import org.apache.cayenne.util.GenericResponse;
 import org.apache.cayenne.util.ObjectContextGraphAction;
 import org.apache.cayenne.util.Util;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.*;
+
 /**
  * The most common implementation of {@link ObjectContext}. DataContext is an isolated
  * container of an object graph, in a sense that any uncommitted changes to persistent
@@ -85,13 +52,6 @@
  */
 public class DataContext extends BaseContext implements DataChannel {
 
-    /**
-     * A holder of a DataContext bound to the current thread.
-     * 
-     * @since 1.1
-     */
-    protected static final ThreadLocal<DataContext> threadDataContext = new ThreadLocal<DataContext>();
-
     // Set of DataContextDelegates to be notified.
     private DataContextDelegate delegate;
 
@@ -130,14 +90,15 @@
      * @throws IllegalStateException if there is no DataContext bound to the current
      *             thread.
      * @see org.apache.cayenne.conf.WebApplicationContextFilter
+     * @deprecated since 3.0, replaced by BaseContex#getThreadObjectContext().
      */
     public static DataContext getThreadDataContext() throws IllegalStateException {
-        DataContext dc = threadDataContext.get();
-        if (dc == null) {
+        try {
+            return (DataContext) BaseContext.getThreadObjectContext();
+        }
+        catch(final IllegalStateException ex) {
             throw new IllegalStateException("Current thread has no bound DataContext.");
         }
-
-        return dc;
     }
 
     /**
@@ -146,9 +107,10 @@
      * Using null parameter will unbind currently bound DataContext.
      * 
      * @since 1.1
+     * @deprecated since 3.0, replaced by BaseContex#getThreadObjectContext().
      */
     public static void bindThreadDataContext(DataContext context) {
-        threadDataContext.set(context);
+        BaseContext.bindThreadObjectContext(context);
     }
 
     /**



Re: svn commit: r686321 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/

Posted by Andrus Adamchik <an...@objectstyle.org>.
On Aug 16, 2008, at 3:45 PM, Kevin Menard wrote:

> I'l clean that back up.

I actually already committed that. That's how much time I am able to  
dedicate to Cayenne these days. Anything beyond Command-Shift-O is too  
time consuming :-/

Andrus


Re: svn commit: r686321 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/

Posted by Kevin Menard <ni...@gmail.com>.
IDEA preference.  Upgrading my version must have reset the preference to
auto-cleanup on commit.  I'l clean that back up.
-- 
Kevin


On Sat, Aug 16, 2008 at 2:55 AM, Andrus Adamchik <an...@objectstyle.org>wrote:

> Is this Eclipse preferences driven? I'd rather we import all classes
> instead of wildcard imports.
>
> Andrus
>
>
> On Aug 15, 2008, at 10:02 PM, kmenard@apache.org wrote:
>
>  -import org.apache.cayenne.map.DbJoin;
>> -import org.apache.cayenne.map.DbRelationship;
>> -import org.apache.cayenne.map.EntityResolver;
>> -import org.apache.cayenne.map.LifecycleEvent;
>> -import org.apache.cayenne.map.ObjAttribute;
>> -import org.apache.cayenne.map.ObjEntity;
>> -import org.apache.cayenne.map.ObjRelationship;
>> -import org.apache.cayenne.query.NamedQuery;
>> -import org.apache.cayenne.query.ObjectIdQuery;
>> -import org.apache.cayenne.query.Query;
>> -import org.apache.cayenne.query.QueryMetadata;
>> -import org.apache.cayenne.query.RefreshQuery;
>> -import org.apache.cayenne.reflect.AttributeProperty;
>> -import org.apache.cayenne.reflect.ClassDescriptor;
>> -import org.apache.cayenne.reflect.PropertyVisitor;
>> -import org.apache.cayenne.reflect.ToManyProperty;
>> -import org.apache.cayenne.reflect.ToOneProperty;
>> +import org.apache.cayenne.map.*;
>> +import org.apache.cayenne.query.*;
>> +import org.apache.cayenne.reflect.*;
>>
>
>

Re: svn commit: r686321 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/

Posted by Andrus Adamchik <an...@objectstyle.org>.
Is this Eclipse preferences driven? I'd rather we import all classes  
instead of wildcard imports.

Andrus

On Aug 15, 2008, at 10:02 PM, kmenard@apache.org wrote:

> -import org.apache.cayenne.map.DbJoin;
> -import org.apache.cayenne.map.DbRelationship;
> -import org.apache.cayenne.map.EntityResolver;
> -import org.apache.cayenne.map.LifecycleEvent;
> -import org.apache.cayenne.map.ObjAttribute;
> -import org.apache.cayenne.map.ObjEntity;
> -import org.apache.cayenne.map.ObjRelationship;
> -import org.apache.cayenne.query.NamedQuery;
> -import org.apache.cayenne.query.ObjectIdQuery;
> -import org.apache.cayenne.query.Query;
> -import org.apache.cayenne.query.QueryMetadata;
> -import org.apache.cayenne.query.RefreshQuery;
> -import org.apache.cayenne.reflect.AttributeProperty;
> -import org.apache.cayenne.reflect.ClassDescriptor;
> -import org.apache.cayenne.reflect.PropertyVisitor;
> -import org.apache.cayenne.reflect.ToManyProperty;
> -import org.apache.cayenne.reflect.ToOneProperty;
> +import org.apache.cayenne.map.*;
> +import org.apache.cayenne.query.*;
> +import org.apache.cayenne.reflect.*;