Author: andrey
Date: Thu May 21 12:39:56 2009
New Revision: 777095
URL: http://svn.apache.org/viewvc?rev=777095&view=rev
Log:
CAY-1230 Refactoring & unification of "ROP" and "classic" class groups. Making
CDO subclass of PersistentObject
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneDataObject.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/PersistentObject.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/PersistentObjectTest.java
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneDataObject.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneDataObject.java?rev=777095&r1=777094&r2=777095&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneDataObject.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneDataObject.java
Thu May 21 12:39:56 2009
@@ -42,10 +42,7 @@
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
-import org.apache.cayenne.reflect.ClassDescriptor;
-import org.apache.cayenne.reflect.Property;
import org.apache.cayenne.reflect.PropertyUtils;
-import org.apache.cayenne.reflect.ToManyMapProperty;
import org.apache.cayenne.validation.BeanValidationFailure;
import org.apache.cayenne.validation.ValidationFailure;
import org.apache.cayenne.validation.ValidationResult;
@@ -58,13 +55,10 @@
* of Cayenne persistent objects.
*
*/
-public class CayenneDataObject implements DataObject, Validating,
XMLSerializable {
+public class CayenneDataObject extends PersistentObject implements DataObject,
Validating, XMLSerializable {
protected long snapshotVersion = DEFAULT_VERSION;
- protected ObjectId objectId;
- protected transient int persistenceState = PersistenceState.TRANSIENT;
- protected transient ObjectContext objectContext;
protected Map<String, Object> values = new HashMap<String, Object>();
/**
@@ -98,30 +92,7 @@
}
}
- /**
- * Returns mapped ObjEntity for this object. If an object is transient or
is not
- * mapped returns null.
- *
- * @since 1.2
- */
- public ObjEntity getObjEntity() {
- return (getObjectContext() != null) ? getObjectContext()
- .getEntityResolver()
- .lookupObjEntity(this) : null;
- }
-
- public ObjectId getObjectId() {
- return objectId;
- }
-
- public void setObjectId(ObjectId objectId) {
- this.objectId = objectId;
- }
-
- public int getPersistenceState() {
- return persistenceState;
- }
-
+ @Override
public void setPersistenceState(int persistenceState) {
this.persistenceState = persistenceState;
@@ -160,7 +131,7 @@
*/
Collection<Object> result = property instanceof List ?
new ArrayList<Object>() : new HashSet<Object>() ;
- for (Object obj : (Collection) property) {
+ for (Object obj : (Collection<?>) property) {
if (obj instanceof CayenneDataObject) {
Object rest = readNestedProperty((CayenneDataObject) obj,
path, tokenizedPath,
tokenIndex + 1, tokenIndex);
@@ -169,7 +140,7 @@
* We don't want nested collections.
* E.g.
readNestedProperty("paintingArray.paintingTitle") should return List<String>
*/
- result.addAll((Collection) rest);
+ result.addAll((Collection<?>) rest);
}
else {
result.add(rest);
@@ -392,32 +363,6 @@
}
/**
- * Returns a map key for a given object and relationship.
- *
- * @since 3.0
- */
- private Object getMapKey(String relationshipName, Object value) {
-
- EntityResolver resolver = objectContext.getEntityResolver();
- ClassDescriptor descriptor = resolver
- .getClassDescriptor(objectId.getEntityName());
-
- if (descriptor == null) {
- throw new IllegalStateException("DataObject's entity is unmapped,
objectId: "
- + objectId);
- }
-
- Property property = descriptor.getProperty(relationshipName);
- if (property instanceof ToManyMapProperty) {
- return ((ToManyMapProperty) property).getMapKey(value);
- }
-
- throw new IllegalArgumentException("Relationship '"
- + relationshipName
- + "' is not a to-many Map");
- }
-
- /**
* Removes current object from reverse relationship of object
<code>val</code> to
* this object.
*/
@@ -792,17 +737,9 @@
}
/**
- * Returns this object's DataContext.
- *
- * @since 1.2
- */
- public ObjectContext getObjectContext() {
- return objectContext;
- }
-
- /**
* @since 1.2
*/
+ @Override
public void setObjectContext(ObjectContext objectContext) {
this.objectContext = objectContext;
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/PersistentObject.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/PersistentObject.java?rev=777095&r1=777094&r2=777095&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/PersistentObject.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/PersistentObject.java
Thu May 21 12:39:56 2009
@@ -20,6 +20,7 @@
package org.apache.cayenne;
import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.reflect.ClassDescriptor;
import org.apache.cayenne.reflect.Property;
import org.apache.cayenne.reflect.ToManyMapProperty;
@@ -123,4 +124,16 @@
return buffer.toString();
}
+
+ /**
+ * Returns mapped ObjEntity for this object. If an object is transient or
is not
+ * mapped returns null.
+ *
+ * @since 1.2
+ */
+ public ObjEntity getObjEntity() {
+ return (getObjectContext() != null) ? getObjectContext()
+ .getEntityResolver()
+ .lookupObjEntity(this) : null;
+ }
}
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/PersistentObjectTest.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/PersistentObjectTest.java?rev=777095&r1=777094&r2=777095&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/PersistentObjectTest.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/PersistentObjectTest.java
Thu May 21 12:39:56 2009
@@ -21,6 +21,9 @@
import junit.framework.TestCase;
+import org.apache.art.Artist;
+import org.apache.cayenne.access.DataContext;
+
/**
*/
@@ -51,4 +54,12 @@
object.setObjectId(id);
assertSame(id, object.getObjectId());
}
+
+ public void testGetObjEntity() throws Exception {
+ PersistentObject a = new Artist();
+ assertEquals(a.getObjEntity(), null);
+
+ DataContext.createDataContext().registerNewObject(a);
+ assertEquals(a.getObjEntity().getName(), "Artist");
+ }
}