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;
}
/**