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");
+    }
 }


Reply via email to