Author: aadamchik
Date: Fri Aug 18 08:42:07 2006
New Revision: 432621

URL: http://svn.apache.org/viewvc?rev=432621&view=rev
Log:
CAY-633  - creating common abstract superclass for DC and CC. There is not much 
in there right now; we'll port common functionality as we go

Added:
    
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/BaseContext.java
Modified:
    
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/CayenneContext.java
    
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/access/DataContext.java

Added: 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/BaseContext.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/BaseContext.java?rev=432621&view=auto
==============================================================================
--- 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/BaseContext.java
 (added)
+++ 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/BaseContext.java
 Fri Aug 18 08:42:07 2006
@@ -0,0 +1,81 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.cayenne.graph.GraphManager;
+import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.query.Query;
+
+/**
+ * A common base superclass for Cayenne ObjectContext implementors.
+ * 
+ * @since 3.0
+ * @author Andrus Adamchik
+ */
+public abstract class BaseContext implements ObjectContext {
+
+    // if we are to pass CayenneContext around, channel should be left alone 
and
+    // reinjected later if needed
+    protected transient DataChannel channel;
+
+    public abstract void commitChanges();
+
+    public abstract void commitChangesToParent();
+
+    public abstract void deleteObject(Persistent object) throws 
DeleteDenyException;
+
+    public abstract Collection deletedObjects();
+
+    public DataChannel getChannel() {
+        return channel;
+    }
+
+    public abstract EntityResolver getEntityResolver();
+
+    public abstract GraphManager getGraphManager();
+
+    public abstract Persistent localObject(ObjectId id, Persistent prototype);
+
+    public abstract Collection modifiedObjects();
+
+    public abstract Persistent newObject(Class persistentClass);
+
+    public abstract Collection newObjects();
+
+    public abstract QueryResponse performGenericQuery(Query query);
+
+    public abstract List performQuery(Query query);
+
+    public abstract void prepareForAccess(Persistent object, String property);
+
+    public abstract void propertyChanged(
+            Persistent object,
+            String property,
+            Object oldValue,
+            Object newValue);
+
+    public abstract void rollbackChanges();
+
+    public abstract void rollbackChangesLocally();
+
+    public abstract Collection uncommittedObjects();
+}

Modified: 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/CayenneContext.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/CayenneContext.java?rev=432621&r1=432620&r2=432621&view=diff
==============================================================================
--- 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/CayenneContext.java
 (original)
+++ 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/CayenneContext.java
 Fri Aug 18 08:42:07 2006
@@ -46,11 +46,8 @@
  * @since 1.2
  * @author Andrus Adamchik
  */
-public class CayenneContext implements ObjectContext {
+public class CayenneContext extends BaseContext {
 
-    // if we are to pass CayenneContext around, channel should be left alone 
and
-    // reinjected later if needed
-    protected transient DataChannel channel;
     protected EntityResolver entityResolver;
 
     CayenneContextGraphManager graphManager;
@@ -63,7 +60,7 @@
 
     // object that merges "backdoor" changes that come from the channel.
     CayenneContextMergeHandler mergeHandler;
-    
+
     QueryCache queryCache;
 
     /**
@@ -98,7 +95,7 @@
 
         setChannel(channel);
     }
-    
+
     /**
      * Returns [EMAIL PROTECTED] QueryCache}, creating it on the fly if needed.
      * 
@@ -119,10 +116,6 @@
         return queryCache;
     }
 
-    public DataChannel getChannel() {
-        return channel;
-    }
-
     /**
      * Sets the context channel, setting up a listener for channel events.
      */
@@ -269,7 +262,7 @@
 
         return commitDiff;
     }
-    
+
     public void commitChangesToParent() {
         doCommitChanges(false);
     }

Modified: 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/access/DataContext.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/access/DataContext.java?rev=432621&r1=432620&r2=432621&view=diff
==============================================================================
--- 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/access/DataContext.java
 (original)
+++ 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/main/java/org/apache/cayenne/access/DataContext.java
 Fri Aug 18 08:42:07 2006
@@ -22,7 +22,6 @@
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -31,6 +30,7 @@
 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;
@@ -102,7 +102,7 @@
  * 
  * @author Andrus Adamchik
  */
-public class DataContext implements ObjectContext, DataChannel, Serializable {
+public class DataContext extends BaseContext implements DataChannel {
 
     // DataContext events
     public static final EventSubject WILL_COMMIT = EventSubject.getSubject(
@@ -137,8 +137,6 @@
     protected ObjectStore objectStore;
     protected QueryCache queryCache;
 
-    protected transient DataChannel channel;
-
     // note that entity resolver is initialized from the parent channel the 
first time it
     // is accessed, and later cached in the context
     protected transient EntityResolver entityResolver;
@@ -290,10 +288,10 @@
                 }
             }
         }
-        
+
         return queryCache;
     }
-    
+
     /**
      * Sets a QueryCache to be used for storing cached query results.
      * 
@@ -358,15 +356,6 @@
      */
     public void setUserProperty(String key, Object value) {
         getUserProperties().put(key, value);
-    }
-
-    /**
-     * Returns parent DataChannel, that is normally a DataDomain or another 
DataContext.
-     * 
-     * @since 1.2
-     */
-    public DataChannel getChannel() {
-        return channel;
     }
 
     /**


Reply via email to