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));