Author: aadamchik
Date: Sun Oct  8 16:11:28 2006
New Revision: 454231

URL: http://svn.apache.org/viewvc?view=rev&rev=454231
Log:
Refactoring CayenneDataObject xml decoding method. 
It still uses a Configuration singleton, which is bad idea, but at least 
doesn't access DataNode anymore.

Modified:
    
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java

Modified: 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java?view=diff&rev=454231&r1=454230&r2=454231
==============================================================================
--- 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java
 (original)
+++ 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java
 Sun Oct  8 16:11:28 2006
@@ -31,12 +31,12 @@
 import java.util.StringTokenizer;
 
 import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.conf.Configuration;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbJoin;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.map.LifecycleEventCallback;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
@@ -697,27 +697,18 @@
     }
 
     public void decodeFromXML(XMLDecoder decoder) {
-        ObjEntity object = null;
 
-        // TODO: relying on singleton Configuration is a bad idea...
-        // Probably decoder itself can optionally store a DataContext or an 
EntityResolver
-        // to provide "context" appropriate for a given environment
-        for (Iterator it = Configuration
+        // TODO: (andrus, long time ago) relying on singleton Configuration 
and a single
+        // DataDomain is a very bad idea... Decoder itself can optionally 
store a
+        // DataContext or an EntityResolver to provide the context appropriate 
for a given
+        // environment
+        EntityResolver resolver = Configuration
                 .getSharedConfiguration()
                 .getDomain()
-                .getDataNodes()
-                .iterator(); it.hasNext();) {
-            DataNode dn = (DataNode) it.next();
+                .getEntityResolver();
+        ObjEntity objectEntity = resolver.lookupObjEntity(getClass());
 
-            EntityResolver er = dn.getEntityResolver();
-            object = er.lookupObjEntity(getClass());
-
-            if (null != object) {
-                break;
-            }
-        }
-
-        for (Iterator it = object.getDeclaredAttributes().iterator(); 
it.hasNext();) {
+        for (Iterator it = objectEntity.getDeclaredAttributes().iterator(); 
it.hasNext();) {
             ObjAttribute att = (ObjAttribute) it.next();
             String name = att.getName();
             writeProperty(name, decoder.decodeObject(name));


Reply via email to