You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ol...@apache.org on 2010/02/02 14:08:18 UTC

svn commit: r905616 [2/6] - in /cayenne/main/trunk/framework: cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/event/ cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/project/ cayenne-jdk1.5-unpublished/src/main/java/org/apach...

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java Tue Feb  2 13:06:56 2010
@@ -21,7 +21,6 @@
 
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.io.File;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Enumeration;
@@ -37,8 +36,6 @@
 import javax.swing.tree.TreePath;
 import javax.swing.tree.TreeSelectionModel;
 
-import org.apache.cayenne.access.DataDomain;
-import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.configuration.event.DataMapEvent;
 import org.apache.cayenne.configuration.event.DataMapListener;
 import org.apache.cayenne.configuration.event.DataNodeEvent;
@@ -49,6 +46,8 @@
 import org.apache.cayenne.configuration.event.ProcedureListener;
 import org.apache.cayenne.configuration.event.QueryEvent;
 import org.apache.cayenne.configuration.event.QueryListener;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.Embeddable;
@@ -63,7 +62,6 @@
 import org.apache.cayenne.modeler.action.CopyAction;
 import org.apache.cayenne.modeler.action.CreateDataMapAction;
 import org.apache.cayenne.modeler.action.CreateDbEntityAction;
-import org.apache.cayenne.modeler.action.CreateDomainAction;
 import org.apache.cayenne.modeler.action.CreateEmbeddableAction;
 import org.apache.cayenne.modeler.action.CreateNodeAction;
 import org.apache.cayenne.modeler.action.CreateObjEntityAction;
@@ -92,10 +90,11 @@
 import org.apache.cayenne.modeler.event.QueryDisplayListener;
 import org.apache.cayenne.modeler.util.CellRenderers;
 import org.apache.cayenne.modeler.util.Comparators;
-import org.apache.cayenne.project.Project;
 import org.apache.cayenne.project.ProjectPath;
+import org.apache.cayenne.project2.Project;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.reflect.PropertyUtils;
+import org.apache.cayenne.resource.Resource;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -199,11 +198,12 @@
     }
 
     private void initFromModel(Project project) {
+        
         // build model
         ProjectTreeModel model = new ProjectTreeModel(project);
-        setRootVisible(false);
+        setRootVisible(true);
         setModel(model);
-
+        
         // expand top level
         getSelectionModel().setSelectionMode(
                 TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
@@ -246,8 +246,9 @@
 
         // Project - return the name of top file
         if (value instanceof Project) {
-            File f = ((Project) value).getMainFile();
-            return (f != null) ? f.getPath() : "";
+
+            Resource resource = ((Project) value).getConfigurationResource();
+            return (resource != null) ? resource.getURL().getPath() : "";
         }
 
         // read name property
@@ -349,7 +350,8 @@
 
         DefaultMutableTreeNode node = getProjectModel().getNodeForObjectPath(
                 new Object[] {
-                        mediator.findDomain(e.getProcedure().getDataMap()),
+                       // mediator.findDomain(e.getProcedure().getDataMap()),
+                        (DataChannelDescriptor)mediator.getProject().getRootNode(),
                         e.getProcedure().getDataMap()
                 });
 
@@ -366,7 +368,7 @@
     public void procedureChanged(ProcedureEvent e) {
         if (e.isNameChange()) {
             Object[] path = new Object[] {
-                    mediator.findDomain(e.getProcedure().getDataMap()),
+                    (DataChannelDescriptor)mediator.getProject().getRootNode(),
                     e.getProcedure().getDataMap(), e.getProcedure()
             };
 
@@ -379,7 +381,7 @@
     public void procedureRemoved(ProcedureEvent e) {
 
         removeNode(new Object[] {
-                mediator.findDomain(e.getProcedure().getDataMap()),
+                (DataChannelDescriptor)mediator.getProject().getRootNode(),
                 e.getProcedure().getDataMap(), e.getProcedure()
         });
     }
@@ -388,8 +390,9 @@
 
         DefaultMutableTreeNode node = getProjectModel().getNodeForObjectPath(
                 new Object[] {
-                        e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                                .getDataMap()), e.getDataMap()
+                        e.getDomain() != null ? e.getDomain() : 
+                            (DataChannelDescriptor)mediator.getProject().getRootNode(),
+                                e.getDataMap()
                 });
 
         if (node == null) {
@@ -406,8 +409,9 @@
 
         if (e.isNameChange()) {
             Object[] path = new Object[] {
-                    e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                            .getDataMap()), e.getQuery()
+                    e.getDomain() != null ? e.getDomain() : 
+                        (DataChannelDescriptor)mediator.getProject().getRootNode(),
+                            e.getQuery()
             };
 
             updateNode(path);
@@ -418,8 +422,9 @@
 
     public void queryRemoved(QueryEvent e) {
         removeNode(new Object[] {
-                e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                        .getDataMap()), e.getDataMap(), e.getQuery()
+                e.getDomain() != null ? e.getDomain() : 
+                    (DataChannelDescriptor)mediator.getProject().getRootNode(),
+                        e.getDataMap(), e.getQuery()
         });
     }
 
@@ -437,26 +442,13 @@
         }
     }
 
-    public void domainAdded(DomainEvent e) {
-        DataDomain dataDomain = e.getDomain();
-        DefaultMutableTreeNode newNode = ProjectTreeModel.wrapProjectNode(dataDomain);
-
-        positionNode(null, newNode, Comparators.getNamedObjectComparator());
-        showNode(newNode);
-    }
-
-    public void domainRemoved(DomainEvent e) {
-        removeNode(new Object[] {
-            e.getDomain()
-        });
-    }
-
     public void dataNodeChanged(DataNodeEvent e) {
 
         DefaultMutableTreeNode node = getProjectModel().getNodeForObjectPath(
                 new Object[] {
-                        e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                                .getDataNode()), e.getDataNode()
+                        e.getDomain() != null ? e.getDomain() : 
+                            (DataChannelDescriptor)mediator.getProject().getRootNode(),
+                                e.getDataNode()
                 });
 
         if (node != null) {
@@ -470,10 +462,11 @@
 
                 getProjectModel().nodeChanged(node);
 
+                DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
+                
                 // check for DataMap additions/removals...
-
-                Object[] maps = e.getDataNode().getDataMaps().toArray();
-                int mapCount = maps.length;
+                Object[] mapsName = e.getDataNode().getDataMapNames().toArray();
+                int mapCount = mapsName.length;
 
                 // DataMap was linked
                 if (mapCount > node.getChildCount()) {
@@ -483,7 +476,7 @@
                         for (int j = 0; j < node.getChildCount(); j++) {
                             DefaultMutableTreeNode child = (DefaultMutableTreeNode) node
                                     .getChildAt(j);
-                            if (maps[i] == child.getUserObject()) {
+                            if (domain.getDataMap(mapsName[i].toString()) == child.getUserObject()) {
                                 found = true;
                                 break;
                             }
@@ -491,7 +484,7 @@
 
                         if (!found) {
                             DefaultMutableTreeNode newMapNode = new DefaultMutableTreeNode(
-                                    maps[i],
+                                    domain.getDataMap(mapsName[i].toString()),
                                     false);
                             positionNode(node, newMapNode, Comparators
                                     .getNamedObjectComparator());
@@ -507,7 +500,7 @@
                         child = (DefaultMutableTreeNode) node.getChildAt(j);
                         Object obj = child.getUserObject();
                         for (int i = 0; i < mapCount; i++) {
-                            if (maps[i] == obj) {
+                            if (domain.getDataMap(mapsName[i].toString()) == obj) {
                                 found = true;
                                 break;
                             }
@@ -529,16 +522,16 @@
 
         DefaultMutableTreeNode node = getProjectModel().getNodeForObjectPath(
                 new Object[] {
-                    e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                            .getDataNode())
+                    e.getDomain() != null ? e.getDomain() : 
+                        (DataChannelDescriptor)mediator.getProject().getRootNode()
                 });
 
         if (node == null) {
             return;
         }
 
-        DataNode dataNode = e.getDataNode();
-        DefaultMutableTreeNode currentNode = ProjectTreeModel.wrapProjectNode(dataNode);
+        DataNodeDescriptor dataNode = e.getDataNode();
+        DefaultMutableTreeNode currentNode = ProjectTreeFactory.wrapProjectNode(dataNode);
         positionNode(node, currentNode, Comparators.getDataDomainChildrenComparator());
         showNode(currentNode);
     }
@@ -549,16 +542,18 @@
         }
 
         removeNode(new Object[] {
-                e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                        .getDataNode()), e.getDataNode()
+                e.getDomain() != null ? e.getDomain() : 
+                    (DataChannelDescriptor)mediator.getProject().getRootNode(),
+                        e.getDataNode()
         });
     }
 
     public void dataMapChanged(DataMapEvent e) {
 
         Object[] path = new Object[] {
-                e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                        .getDataMap()), e.getDataMap()
+                e.getDomain() != null ? e.getDomain() : 
+                    (DataChannelDescriptor)mediator.getProject().getRootNode()
+                        , e.getDataMap()
         };
 
         updateNode(path);
@@ -572,11 +567,10 @@
     public void dataMapAdded(DataMapEvent e) {
         DefaultMutableTreeNode domainNode = getProjectModel().getNodeForObjectPath(
                 new Object[] {
-                    e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                            .getDataMap())
+                    e.getDomain() != null ? e.getDomain() : (DataChannelDescriptor)mediator.getProject().getRootNode()
                 });
 
-        DefaultMutableTreeNode newMapNode = ProjectTreeModel.wrapProjectNode(e
+        DefaultMutableTreeNode newMapNode = ProjectTreeFactory.wrapProjectNode(e
                 .getDataMap());
         positionNode(domainNode, newMapNode, Comparators
                 .getDataDomainChildrenComparator());
@@ -585,17 +579,15 @@
 
     public void dataMapRemoved(DataMapEvent e) {
         DataMap map = e.getDataMap();
-        DataDomain domain = e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                .getDataMap());
-
+        DataChannelDescriptor dataChannelDescriptor = (DataChannelDescriptor)Application.getProject().getRootNode();
         removeNode(new Object[] {
-                domain, map
+                dataChannelDescriptor, map
         });
 
         // Clean up map from the nodes
-        for (DataNode dataNode : new ArrayList<DataNode>(domain.getDataNodes())) {
+        for (DataNodeDescriptor dataNode : new ArrayList<DataNodeDescriptor>(dataChannelDescriptor.getNodeDescriptors())) {
             removeNode(new Object[] {
-                    domain, dataNode, map
+                    dataChannelDescriptor, dataNode, map
             });
         }
     }
@@ -635,9 +627,9 @@
     protected void entityChanged(EntityEvent e) {
         if (e.isNameChange()) {
             Object[] path = new Object[] {
-                    e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                            .getEntity()
-                            .getDataMap()), e.getEntity().getDataMap(), e.getEntity()
+                    e.getDomain() != null ? e.getDomain() : 
+                        (DataChannelDescriptor)mediator.getProject().getRootNode()
+                            , e.getEntity().getDataMap(), e.getEntity()
             };
 
             updateNode(path);
@@ -656,9 +648,9 @@
 
         DefaultMutableTreeNode mapNode = getProjectModel().getNodeForObjectPath(
                 new Object[] {
-                        e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                                .getEntity()
-                                .getDataMap()), e.getEntity().getDataMap()
+                        e.getDomain() != null ? e.getDomain() :
+                            (DataChannelDescriptor)mediator.getProject().getRootNode()
+                                , e.getEntity().getDataMap()
                 });
 
         if (mapNode == null) {
@@ -681,9 +673,9 @@
 
         // remove from DataMap tree
         removeNode(new Object[] {
-                e.getDomain() != null ? e.getDomain() : mediator.findDomain(e
-                        .getEntity()
-                        .getDataMap()), e.getEntity().getDataMap(), e.getEntity()
+                e.getDomain() != null ? e.getDomain() :
+                    (DataChannelDescriptor)mediator.getProject().getRootNode()
+                        , e.getEntity().getDataMap(), e.getEntity()
         });
     }
 
@@ -790,49 +782,51 @@
         Object[] data = getUserObjects(currentNode);
         if (data.length == 0) {
             // this should clear the right-side panel
-            mediator.fireDomainDisplayEvent(new DomainDisplayEvent(this, null));
+            DomainDisplayEvent domEvent = new DomainDisplayEvent(this, null);
+            domEvent.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
+            mediator.fireDomainDisplayEvent(domEvent);
             return;
         }
 
         Object obj = data[data.length - 1];
-        if (obj instanceof DataDomain) {
+        if (obj instanceof DataChannelDescriptor) {
             mediator
-                    .fireDomainDisplayEvent(new DomainDisplayEvent(this, (DataDomain) obj));
+                    .fireDomainDisplayEvent(new DomainDisplayEvent(this, (DataChannelDescriptor) obj));
         }
         else if (obj instanceof DataMap) {
-            if (data.length == 3) {
+            if (data.length == 2) {
                 mediator.fireDataMapDisplayEvent(new DataMapDisplayEvent(
                         this,
                         (DataMap) obj,
-                        (DataDomain) data[data.length - 3],
-                        (DataNode) data[data.length - 2]));
+                        (DataChannelDescriptor) mediator.getProject().getRootNode(),
+                        (DataNodeDescriptor) data[data.length - 2]));
             }
-            else if (data.length == 2) {
+            else if (data.length == 1) {
                 mediator.fireDataMapDisplayEvent(new DataMapDisplayEvent(
                         this,
                         (DataMap) obj,
-                        (DataDomain) data[data.length - 2]));
+                        (DataChannelDescriptor) mediator.getProject().getRootNode()));
             }
         }
-        else if (obj instanceof DataNode) {
-            if (data.length == 2) {
+        else if (obj instanceof DataNodeDescriptor) {
+            if (data.length == 1) {
                 mediator.fireDataNodeDisplayEvent(new DataNodeDisplayEvent(
                         this,
-                        (DataDomain) data[data.length - 2],
-                        (DataNode) obj));
+                        (DataChannelDescriptor) mediator.getProject().getRootNode() ,
+                        (DataNodeDescriptor) obj));
             }
         }
         else if (obj instanceof Entity) {
             EntityDisplayEvent e = new EntityDisplayEvent(this, (Entity) obj);
             e.setUnselectAttributes(true);
-            if (data.length == 4) {
+            if (data.length == 3) {
                 e.setDataMap((DataMap) data[data.length - 2]);
-                e.setDomain((DataDomain) data[data.length - 4]);
-                e.setDataNode((DataNode) data[data.length - 3]);
+                e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
+                e.setDataNode((DataNodeDescriptor) data[data.length - 3]);
             }
-            else if (data.length == 3) {
+            else if (data.length == 2) {
                 e.setDataMap((DataMap) data[data.length - 2]);
-                e.setDomain((DataDomain) data[data.length - 3]);
+                e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
             }
 
             if (obj instanceof ObjEntity) {
@@ -847,7 +841,7 @@
                     this,
                     (Embeddable) obj,
                     (DataMap) data[data.length - 2],
-                    (DataDomain) data[data.length - 3]);
+                    (DataChannelDescriptor) mediator.getProject().getRootNode());
             mediator.fireEmbeddableDisplayEvent(e);
         }
         else if (obj instanceof Procedure) {
@@ -855,7 +849,7 @@
                     this,
                     (Procedure) obj,
                     (DataMap) data[data.length - 2],
-                    (DataDomain) data[data.length - 3]);
+                    (DataChannelDescriptor) mediator.getProject().getRootNode());
             mediator.fireProcedureDisplayEvent(e);
         }
         else if (obj instanceof Query) {
@@ -863,7 +857,7 @@
                     this,
                     (Query) obj,
                     (DataMap) data[data.length - 2],
-                    (DataDomain) data[data.length - 3]);
+                    (DataChannelDescriptor) mediator.getProject().getRootNode());
             mediator.fireQueryDisplayEvent(e);
         }
 
@@ -920,7 +914,6 @@
     private JPopupMenu createJPopupMenu() {
         JPopupMenu popup = new JPopupMenu();
 
-        popup.add(buildMenu(CreateDomainAction.getActionName()));
         popup.add(buildMenu(CreateNodeAction.getActionName()));
         popup.add(buildMenu(CreateDataMapAction.getActionName()));
 
@@ -984,7 +977,9 @@
 
         DefaultMutableTreeNode mapNode = getProjectModel().getNodeForObjectPath(
                 new Object[] {
-                        e.getDomain() != null ? e.getDomain() : mediator.findDomain(map),
+                        e.getDomain() != null ? e.getDomain() : 
+                            (DataChannelDescriptor)mediator.getProject().getRootNode(),
+                            //mediator.findDomain(map),
                         map
                 });
 
@@ -1000,7 +995,8 @@
     public void embeddableChanged(EmbeddableEvent e, DataMap map) {
         if (e.isNameChange()) {
             Object[] path = new Object[] {
-                    e.getDomain() != null ? e.getDomain() : mediator.findDomain(map),
+                    e.getDomain() != null ? e.getDomain() :
+                        (DataChannelDescriptor)mediator.getProject().getRootNode(),
                     map, e.getEmbeddable()
             };
 
@@ -1017,7 +1013,9 @@
 
         // remove from DataMap tree
         removeNode(new Object[] {
-                e.getDomain() != null ? e.getDomain() : mediator.findDomain(map), map,
+                e.getDomain() != null ? e.getDomain() : 
+                    (DataChannelDescriptor)mediator.getProject().getRootNode(),
+                    map,
                 e.getEmbeddable()
         });
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectWatchdog.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectWatchdog.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectWatchdog.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectWatchdog.java Tue Feb  2 13:06:56 2010
@@ -19,16 +19,17 @@
 package org.apache.cayenne.modeler;
 
 import java.io.File;
-import java.util.List;
+import java.util.Iterator;
 
 import javax.swing.JOptionPane;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.action.OpenProjectAction;
 import org.apache.cayenne.modeler.action.SaveAction;
 import org.apache.cayenne.modeler.dialog.FileDeletedDialog;
 import org.apache.cayenne.modeler.util.FileWatchdog;
-import org.apache.cayenne.project.Project;
-import org.apache.cayenne.project.ProjectFile;
+import org.apache.cayenne.project2.Project;
 
 /**
  * ProjectWatchdog class is responsible for tracking changes in cayenne.xml and other
@@ -61,14 +62,19 @@
         removeAllFiles();
 
         Project project = mediator.getProject();
+
         if (project != null // project opened
-                && project.getProjectDirectory() != null) // not new project
+                && project.getConfigurationResource() != null) // not new project
         {
-            String projectPath = project.getProjectDirectory().getPath() + File.separator;
+            String projectPath = project.getConfigurationResource().getURL().getPath() + File.separator;
+            addFile(projectPath);
 
-            List<ProjectFile> files = project.buildFileList();
-            for (ProjectFile pr : files)
-                addFile(projectPath + pr.getLocation());
+            Iterator<DataMap> it = ((DataChannelDescriptor)project.getRootNode()).getDataMaps().iterator();
+            while (it.hasNext()) {
+                DataMap dm = it.next();
+                addFile(dm.getConfigurationSource().getURL().getPath());
+            }
+            
         }
 
         resumeWatching();
@@ -82,10 +88,10 @@
              * Currently we are reloading all project
              */
             if (mediator.getProject() != null) {
+                
+                File fileDirectory = new File(mediator.getProject().getConfigurationResource().getURL().getPath());
                 ((OpenProjectAction) Application.getInstance().getAction(
-                        OpenProjectAction.getActionName())).openProject(mediator
-                        .getProject()
-                        .getMainFile());
+                        OpenProjectAction.getActionName())).openProject(fileDirectory);
             }
 
         }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java Tue Feb  2 13:06:56 2010
@@ -21,7 +21,7 @@
 
 import java.awt.event.ActionEvent;
 
-import org.apache.cayenne.access.DataDomain;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
@@ -95,13 +95,13 @@
             ObjAttribute attr = (ObjAttribute) NamedObjectFactory.createObject(
                     ObjAttribute.class,
                     objEntity);
-
-            createObjAttribute(mediator.getCurrentDataDomain(), mediator
+            
+            createObjAttribute(mediator
                     .getCurrentDataMap(), objEntity, attr);
 
             application.getUndoManager().addEdit(
                     new CreateAttributeUndoableEdit(
-                            mediator.getCurrentDataDomain(),
+                            (DataChannelDescriptor)mediator.getProject().getRootNode(),
                             mediator.getCurrentDataMap(),
                             objEntity,
                             attr));
@@ -113,12 +113,13 @@
                     DbAttribute.class,
                     dbEntity);
 
-            createDbAttribute(mediator.getCurrentDataDomain(), mediator
+            createDbAttribute(
+                    mediator
                     .getCurrentDataMap(), dbEntity, attr);
 
             application.getUndoManager().addEdit(
                     new CreateAttributeUndoableEdit(
-                            mediator.getCurrentDataDomain(),
+                            (DataChannelDescriptor)mediator.getProject().getRootNode(),
                             mediator.getCurrentDataMap(),
                             dbEntity,
                             attr));
@@ -148,20 +149,19 @@
                 embeddable,
                 attr,
                 mediator.getCurrentDataMap(),
-                mediator.getCurrentDataDomain());
+                (DataChannelDescriptor)mediator.getProject().getRootNode());
 
         mediator.fireEmbeddableAttributeDisplayEvent(e);
     }
 
     public void createObjAttribute(
-            DataDomain domain,
             DataMap map,
             ObjEntity objEntity,
             ObjAttribute attr) {
 
         ProjectController mediator = getProjectController();
         objEntity.addAttribute(attr);
-        fireObjAttributeEvent(this, mediator, domain, map, objEntity, attr);
+        fireObjAttributeEvent(this, mediator, map, objEntity, attr);
     }
 
     /**
@@ -170,7 +170,6 @@
     static void fireObjAttributeEvent(
             Object src,
             ProjectController mediator,
-            DataDomain domain,
             DataMap map,
             ObjEntity objEntity,
             ObjAttribute attr) {
@@ -180,6 +179,8 @@
                 attr,
                 objEntity,
                 MapEvent.ADD));
+        
+        DataChannelDescriptor domain = (DataChannelDescriptor)mediator.getProject().getRootNode();
 
         AttributeDisplayEvent ade = new AttributeDisplayEvent(
                 src,
@@ -192,13 +193,12 @@
     }
 
     public void createDbAttribute(
-            DataDomain domain,
             DataMap map,
             DbEntity dbEntity,
             DbAttribute attr) {
         dbEntity.addAttribute(attr);
         ProjectController mediator = getProjectController();
-        fireDbAttributeEvent(this, mediator, domain, map, dbEntity, attr);
+        fireDbAttributeEvent(this, mediator, map, dbEntity, attr);
     }
 
     /**
@@ -207,7 +207,6 @@
     static void fireDbAttributeEvent(
             Object src,
             ProjectController mediator,
-            DataDomain domain,
             DataMap map,
             DbEntity dbEntity,
             DbAttribute attr) {
@@ -222,7 +221,7 @@
                 attr,
                 dbEntity,
                 map,
-                domain);
+                (DataChannelDescriptor)mediator.getProject().getRootNode());
 
         mediator.fireDbAttributeDisplayEvent(ade);
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java Tue Feb  2 13:06:56 2010
@@ -21,7 +21,7 @@
 
 import java.awt.event.ActionEvent;
 
-import org.apache.cayenne.access.DataDomain;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
@@ -29,6 +29,7 @@
 import org.apache.cayenne.modeler.util.CayenneAction;
 import org.apache.cayenne.project.NamedObjectFactory;
 import org.apache.cayenne.project.ProjectPath;
+import org.apache.cayenne.resource.Resource;
 
 /**
  * Action that creates new DataMap in the project.
@@ -51,14 +52,15 @@
     }
 
     /** Calls addDataMap() or creates new data map if no data node selected. */
-    public void createDataMap(DataDomain domain, DataMap map) {
+    public void createDataMap(DataMap map) {
         ProjectController mediator = getProjectController();
         mediator.addDataMap(this, map);
     }
 
     public void performAction(ActionEvent e) {
         ProjectController mediator = getProjectController();
-        DataDomain currentDomain = mediator.getCurrentDataDomain();
+       
+        DataChannelDescriptor currentDomain =  (DataChannelDescriptor)mediator.getProject().getRootNode();
 
         // use domain name as DataMap base, as map names must be unique across the
         // project...
@@ -67,7 +69,15 @@
                 currentDomain,
                 currentDomain.getName() + "Map");
 
-        createDataMap(currentDomain, map);
+        // set configuration source for new dataMap 
+        Resource baseResource = currentDomain.getConfigurationSource();
+
+        Resource dataMapResource = baseResource
+                .getRelativeResource(map.getName());
+        
+        map.setConfigurationSource(dataMapResource);
+        
+        createDataMap(map);
 
         application.getUndoManager().addEdit(
                 new CreateDataMapUndoableEdit(currentDomain, map));
@@ -81,6 +91,6 @@
             return false;
         }
 
-        return path.firstInstanceOf(DataDomain.class) != null;
+        return path.firstInstanceOf(DataChannelDescriptor.class) != null;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java Tue Feb  2 13:06:56 2010
@@ -21,6 +21,7 @@
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.event.EntityEvent;
@@ -77,8 +78,7 @@
     static void fireDbEntityEvent(Object src, ProjectController mediator, DbEntity entity) {
         mediator.fireDbEntityEvent(new EntityEvent(src, entity, MapEvent.ADD));
         EntityDisplayEvent displayEvent = new EntityDisplayEvent(src, entity, mediator
-                .getCurrentDataMap(), mediator.getCurrentDataNode(), mediator
-                .getCurrentDataDomain());
+                .getCurrentDataMap(), mediator.getCurrentDataNode(),  (DataChannelDescriptor)mediator.getProject().getRootNode());
         displayEvent.setMainTabFocus(true);
         mediator.fireDbEntityDisplayEvent(displayEvent);
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java Tue Feb  2 13:06:56 2010
@@ -20,6 +20,7 @@
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.Embeddable;
 import org.apache.cayenne.map.event.EmbeddableEvent;
@@ -81,7 +82,7 @@
                 src,
                 embeddable,
                 dataMap,
-                mediator.getCurrentDataDomain());
+                (DataChannelDescriptor)mediator.getProject().getRootNode());
         displayEvent.setMainTabFocus(true);
         mediator.fireEmbeddableDisplayEvent(displayEvent);
 

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java Tue Feb  2 13:06:56 2010
@@ -21,13 +21,11 @@
 
 import java.awt.event.ActionEvent;
 
-import javax.sql.DataSource;
-
-import org.apache.cayenne.access.DataDomain;
-import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy;
 import org.apache.cayenne.conf.DriverDataSourceFactory;
 import org.apache.cayenne.configuration.event.DataNodeEvent;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.conn.DataSourceInfo;
 import org.apache.cayenne.map.event.MapEvent;
 import org.apache.cayenne.modeler.Application;
@@ -35,9 +33,7 @@
 import org.apache.cayenne.modeler.event.DataNodeDisplayEvent;
 import org.apache.cayenne.modeler.undo.CreateNodeUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.modeler.util.ModelerDbAdapter;
 import org.apache.cayenne.project.NamedObjectFactory;
-import org.apache.cayenne.project.ProjectDataSource;
 import org.apache.cayenne.project.ProjectPath;
 
 /**
@@ -67,15 +63,15 @@
      * @see org.apache.cayenne.modeler.util.CayenneAction#performAction(ActionEvent)
      */
     public void performAction(ActionEvent e) {
-        DataNode node = buildDataNode();
-        createDataNode(getProjectController().getCurrentDataDomain(), node);
+        DataNodeDescriptor node = buildDataNode();
+        createDataNode(node);
         application.getUndoManager().addEdit(
-                new CreateNodeUndoableEdit(application, getProjectController()
-                        .getCurrentDataDomain(), node));
+                new CreateNodeUndoableEdit(application,node));
     }
 
-    public void createDataNode(DataDomain domain, DataNode node) {
-        domain.addNode(node);
+    public void createDataNode(DataNodeDescriptor node) {
+        DataChannelDescriptor domain = (DataChannelDescriptor)getProjectController().getProject().getRootNode();
+        domain.getNodeDescriptors().add(node);
         getProjectController().fireDataNodeEvent(
                 new DataNodeEvent(this, node, MapEvent.ADD));
         getProjectController().fireDataNodeDisplayEvent(
@@ -90,27 +86,26 @@
             return false;
         }
 
-        return path.firstInstanceOf(DataDomain.class) != null;
+        return path.firstInstanceOf(DataChannelDescriptor.class) != null;
     }
 
     /**
      * Creates a new DataNode, adding to the current domain, but doesn't send any events.
      */
-    public DataNode buildDataNode() {
+    public DataNodeDescriptor buildDataNode() {
         ProjectController mediator = getProjectController();
-        DataDomain domain = mediator.getCurrentDataDomain();
+        DataChannelDescriptor domain =  (DataChannelDescriptor)mediator.getProject().getRootNode();
 
         // use domain name as DataNode base, as node names must be unique across the
         // project...
-        DataNode node = buildDataNode(domain);
-
-        ProjectDataSource src = new ProjectDataSource(new DataSourceInfo());
-        node.setDataSource(src);
-        node.setAdapter(new ModelerDbAdapter(src));
+        DataNodeDescriptor node =  buildDataNode(domain);
 
+        DataSourceInfo src = new DataSourceInfo();
+        node.setDataSourceDescriptor(src);
+        
         // by default create JDBC Node
-        node.setDataSourceFactory(DriverDataSourceFactory.class.getName());
-        node.setSchemaUpdateStrategyName(SkipSchemaUpdateStrategy.class.getName());
+        node.setDataSourceFactoryType(DriverDataSourceFactory.class.getName());
+        node.setSchemaUpdateStrategyType(SkipSchemaUpdateStrategy.class.getName());
 
         return node;
     }
@@ -118,17 +113,19 @@
     /**
      * A factory method that makes a new DataNode.
      */
-    DataNode buildDataNode(DataDomain domain) {
-        String name = NamedObjectFactory.createName(DataNode.class, domain, domain
+    DataNodeDescriptor buildDataNode(DataChannelDescriptor domain) {
+        String name = NamedObjectFactory.createName(DataNodeDescriptor.class, domain, domain
                 .getName()
                 + "Node");
 
+        
         // ensure that DataNode exposes DataSource directly, so that UI widgets could work
         // with it.
-        return new DataNode(name) {
+        return new DataNodeDescriptor(name) 
+        {
 
-            public DataSource getDataSource() {
-                return dataSource;
+            public DataSourceInfo getDataSourceDescriptor() {
+                return dataSourceDescriptor;
             }
         };
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java Tue Feb  2 13:06:56 2010
@@ -21,6 +21,7 @@
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.ObjEntity;
@@ -143,7 +144,7 @@
                 entity,
                 dataMap,
                 mediator.getCurrentDataNode(),
-                mediator.getCurrentDataDomain());
+                (DataChannelDescriptor)mediator.getProject().getRootNode());
         displayEvent.setMainTabFocus(true);
         mediator.fireObjEntityDisplayEvent(displayEvent);
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java Tue Feb  2 13:06:56 2010
@@ -21,6 +21,7 @@
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.event.ProcedureEvent;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.Procedure;
@@ -76,7 +77,7 @@
                 src,
                 procedure,
                 mediator.getCurrentDataMap(),
-                mediator.getCurrentDataDomain()));
+                (DataChannelDescriptor)mediator.getProject().getRootNode()));
     }
 
     public void createProcedure(DataMap map, Procedure procedure) {

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java Tue Feb  2 13:06:56 2010
@@ -21,6 +21,7 @@
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.event.ProcedureParameterEvent;
 import org.apache.cayenne.map.Procedure;
 import org.apache.cayenne.map.ProcedureParameter;
@@ -91,7 +92,7 @@
                     parameter,
                     procedure,
                     mediator.getCurrentDataMap(),
-                    mediator.getCurrentDataDomain()));
+                    (DataChannelDescriptor)mediator.getProject().getRootNode()));
     }
 
     /**

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateQueryAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateQueryAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateQueryAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateQueryAction.java Tue Feb  2 13:06:56 2010
@@ -21,7 +21,7 @@
 
 import java.awt.event.ActionEvent;
 
-import org.apache.cayenne.access.DataDomain;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.event.QueryEvent;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.event.MapEvent;
@@ -62,7 +62,7 @@
         new QueryTypeController(getProjectController()).startup();
     }
     
-    public void createQuery(DataDomain domain, DataMap dataMap, Query query) {
+    public void createQuery(DataChannelDescriptor domain, DataMap dataMap, Query query) {
         dataMap.addQuery(query);
         // notify listeners
         fireQueryEvent(this, getProjectController(), domain, dataMap, query);
@@ -71,7 +71,7 @@
     /**
      * Fires events when a query was added
      */
-    public static void fireQueryEvent(Object src, ProjectController mediator, DataDomain domain,
+    public static void fireQueryEvent(Object src, ProjectController mediator, DataChannelDescriptor domain,
             DataMap dataMap, Query query) {
         mediator.fireQueryEvent(new QueryEvent(src, query, MapEvent.ADD, dataMap));
         mediator.fireQueryDisplayEvent(new QueryDisplayEvent(src, query, dataMap, domain));

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java Tue Feb  2 13:06:56 2010
@@ -21,6 +21,7 @@
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.Entity;
@@ -126,7 +127,7 @@
                 rel,
                 objEntity,
                 mediator.getCurrentDataMap(),
-                mediator.getCurrentDataDomain());
+                (DataChannelDescriptor)mediator.getProject().getRootNode());
 
         mediator.fireObjRelationshipDisplayEvent(rde);
     }
@@ -160,7 +161,7 @@
                 rel,
                 dbEntity,
                 mediator.getCurrentDataMap(),
-                mediator.getCurrentDataDomain());
+                (DataChannelDescriptor)mediator.getProject().getRootNode());
 
         mediator.fireDbRelationshipDisplayEvent(rde);
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DBWizardAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DBWizardAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DBWizardAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DBWizardAction.java Tue Feb  2 13:06:56 2010
@@ -19,16 +19,17 @@
 
 package org.apache.cayenne.modeler.action;
 
-import org.apache.cayenne.access.DataNode;
+import java.util.Collection;
+
 import org.apache.cayenne.conf.DriverDataSourceFactory;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
 import org.apache.cayenne.modeler.pref.DataNodeDefaults;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.modeler.util.ModelerDbAdapter;
-import org.apache.cayenne.project.ProjectDataSource;
 
 /**
  */
@@ -40,15 +41,21 @@
 
     // ==== Guessing user preferences... *****
 
-    protected DataNode getPreferredNode() {
+    protected DataNodeDescriptor getPreferredNode() {
         ProjectController projectController = getProjectController();
-        DataNode node = projectController.getCurrentDataNode();
+        DataNodeDescriptor node = projectController.getCurrentDataNode();
 
         // try a node that belongs to the current DataMap ...
         if (node == null) {
             DataMap map = projectController.getCurrentDataMap();
             if (map != null) {
-                node = projectController.getCurrentDataDomain().lookupDataNode(map);
+                Collection<DataNodeDescriptor> nodes = ((DataChannelDescriptor)projectController.getProject().getRootNode()).getNodeDescriptors();
+                for(DataNodeDescriptor n:nodes){
+                    if(n.getDataMapNames().contains(map.getName())){
+                        node = n;
+                        break;
+                    }
+                }
             }
         }
 
@@ -59,9 +66,9 @@
         if (nodeInfo == null) {
 
             // only driver nodes have meaningful connection info set
-            DataNode node = getPreferredNode();
+            DataNodeDescriptor node = getPreferredNode();
             return (node != null && DriverDataSourceFactory.class.getName().equals(
-                    node.getDataSourceFactory())) ? "DataNode Connection Info" : null;
+                    node.getDataSourceFactoryType())) ? "DataNode Connection Info" : null;
         }
 
         return nodeInfo.getNodeName();
@@ -71,7 +78,7 @@
      * Determines the most reasonable default DataSource choice.
      */
     protected DBConnectionInfo preferredDataSource() {
-        DataNode node = getPreferredNode();
+        DataNodeDescriptor node = getPreferredNode();
 
         // no current node...
         if (node == null) {
@@ -98,20 +105,16 @@
         }
 
         // extract data from the node
-        if (!DriverDataSourceFactory.class.getName().equals(node.getDataSourceFactory())) {
+        if (!DriverDataSourceFactory.class.getName().equals(node.getDataSourceFactoryType())) {
             return null;
         }
 
         // create transient object..
         DBConnectionInfo nodeInfo = new DBConnectionInfo();
 
-        nodeInfo.copyFrom(((ProjectDataSource) node.getDataSource()).getDataSourceInfo());
+        nodeInfo.copyFrom(node.getDataSourceDescriptor());
 
-        nodeInfo.setDbAdapter(null);
-        if (node.getAdapter() instanceof ModelerDbAdapter) {
-            nodeInfo.setDbAdapter(((ModelerDbAdapter) node.getAdapter())
-                    .getAdapterClassName());
-        }
+        nodeInfo.setDbAdapter(node.getAdapterType());
 
         return nodeInfo;
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java Tue Feb  2 13:06:56 2010
@@ -22,6 +22,7 @@
 import java.awt.event.ActionEvent;
 import java.util.Iterator;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.event.EntityEvent;
@@ -80,8 +81,8 @@
                 return;
             }
 
-            DbEntitySyncUndoableEdit undoableEdit = new DbEntitySyncUndoableEdit(mediator
-                    .getCurrentDataDomain(), mediator.getCurrentDataMap());
+            DbEntitySyncUndoableEdit undoableEdit = new DbEntitySyncUndoableEdit((DataChannelDescriptor)mediator.getProject().getRootNode()
+                    , mediator.getCurrentDataMap());
 
             while (it.hasNext()) {
                 ObjEntity entity = (ObjEntity) it.next();

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java Tue Feb  2 13:06:56 2010
@@ -27,17 +27,19 @@
 
 import javax.swing.JTextField;
 
-import org.apache.cayenne.map.Attribute;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.Embeddable;
 import org.apache.cayenne.map.EmbeddableAttribute;
-import org.apache.cayenne.map.Entity;
+import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.Relationship;
+import org.apache.cayenne.map.ObjRelationship;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.dialog.FindDialog;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.query.Query;
 
 public class FindAction extends CayenneAction {
@@ -62,23 +64,93 @@
         if (!source.getText().trim().equals("")) {
             Pattern pattern = Pattern.compile(source.getText().trim(), Pattern.CASE_INSENSITIVE);
 
-            Iterator it = getProjectController().getProject().treeNodes();
+            Iterator<DataMap> it = ((DataChannelDescriptor)getProjectController().getProject().getRootNode()).getDataMaps().iterator();
+            
             while(it.hasNext()) {
-                ProjectPath path = (ProjectPath) it.next();
                 
-                Object o = path.getObject();
-                if ((o instanceof ObjEntity || o instanceof DbEntity) && matchFound(((Entity) o).getName(), pattern))
-                    paths.add(path.getPath());
-                else if (o instanceof Attribute && matchFound(((Attribute) o).getName(), pattern))
-                    paths.add(path.getPath());
-                else if (o instanceof Relationship && matchFound(((Relationship) o).getName(), pattern))
-                    paths.add(path.getPath());
-                else if (o instanceof Query && matchFound(((Query) o).getName(), pattern))
-                    paths.add(path.getPath());
-                else if (o instanceof Embeddable && matchFound(((Embeddable) o).getClassName(), pattern))
-                    paths.add(path.getPath());
-                else if (o instanceof EmbeddableAttribute && matchFound(((EmbeddableAttribute) o).getName(), pattern))
-                    paths.add(path.getPath());
+                  DataMap dm = it.next();
+                 
+                  Iterator<Query> querIterator = dm.getQueries().iterator();
+                  
+                  while(querIterator.hasNext()) {
+                      Query q = querIterator.next();
+                      if(matchFound(q.getName(), pattern)){
+                          paths.add(q);
+                      }
+                  }
+                  
+                  Iterator<Embeddable> embIterator = dm.getEmbeddables().iterator();
+                  
+                  while(embIterator.hasNext()) {
+                      Embeddable emb = embIterator.next();
+                      if(matchFound(emb.getClassName(), pattern)){
+                          paths.add(emb);
+                      }
+                      
+                      Iterator<EmbeddableAttribute> attrIterator = emb.getAttributes().iterator();
+                      
+                      while(attrIterator.hasNext()) {
+                          EmbeddableAttribute attr = attrIterator.next();
+                          if(matchFound(attr.getName(), pattern)){
+                              paths.add(attr);
+                          }
+                      }
+                  }
+                  
+                  
+                  Iterator<DbEntity> dbEntIterator = dm.getDbEntities().iterator();
+                  
+                  while(dbEntIterator.hasNext()) {
+                      DbEntity ent = dbEntIterator.next();
+                      if(matchFound(ent.getName(), pattern)){
+                          paths.add(ent);
+                      }
+                      
+                      Iterator<DbAttribute> attrIterator = ent.getAttributes().iterator();
+                      
+                      while(attrIterator.hasNext()) {
+                          DbAttribute attr = attrIterator.next();
+                          if(matchFound(attr.getName(), pattern)){
+                              paths.add(attr);
+                          }
+                      }
+                      
+                      Iterator<DbRelationship> relIterator = ent.getRelationships().iterator();
+                      
+                      while(relIterator.hasNext()) {
+                          DbRelationship rel = relIterator.next();
+                          if(matchFound(rel.getName(), pattern)){
+                              paths.add(rel);
+                          }
+                      }
+                  }
+                  
+                  Iterator<ObjEntity> entIterator = dm.getObjEntities().iterator();
+                  
+                  while(entIterator.hasNext()) {
+                      ObjEntity ent = entIterator.next();
+                      if(matchFound(ent.getName(), pattern)){
+                          paths.add(ent);
+                      }
+                      
+                      Iterator<ObjAttribute> attrIterator = ent.getAttributes().iterator();
+                      
+                      while(attrIterator.hasNext()) {
+                          ObjAttribute attr = attrIterator.next();
+                          if(matchFound(attr.getName(), pattern)){
+                              paths.add(attr);
+                          }
+                      }
+                      
+                      Iterator<ObjRelationship> relIterator = ent.getRelationships().iterator();
+                      
+                      while(relIterator.hasNext()) {
+                          ObjRelationship rel = relIterator.next();
+                          if(matchFound(rel.getName(), pattern)){
+                              paths.add(rel);
+                          }
+                      }
+                  }
             }
         }
      
@@ -91,7 +163,7 @@
             Iterator it = paths.iterator();
             int index = 0;
             if (it.hasNext()) {
-                Object[] path = (Object[]) it.next();
+                Object path = it.next();
                 FindDialog.jumpToResult(path);
             }   
         }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDBAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDBAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDBAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDBAction.java Tue Feb  2 13:06:56 2010
@@ -24,7 +24,7 @@
 
 import javax.swing.SwingUtilities;
 
-import org.apache.cayenne.access.DataDomain;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.dialog.db.ConnectionWizard;
@@ -104,6 +104,6 @@
             return false;
         }
 
-        return path.firstInstanceOf(DataDomain.class) != null;
+        return path.firstInstanceOf(DataChannelDescriptor.class) != null;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java Tue Feb  2 13:06:56 2010
@@ -26,7 +26,7 @@
 import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;
 
-import org.apache.cayenne.access.DataDomain;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.MapLoader;
 import org.apache.cayenne.modeler.Application;
@@ -80,7 +80,7 @@
             };
 
             DataMap newMap = mapLoader.loadDataMap(dataMapFile.getAbsolutePath());
-            DataDomain domain = getProjectController().getCurrentDataDomain();
+            DataChannelDescriptor domain = (DataChannelDescriptor)getProjectController().getProject().getRootNode();
 
             if (newMap.getName() != null) {
                 newMap.setName(NamedObjectFactory.createName(

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java Tue Feb  2 13:06:56 2010
@@ -33,14 +33,13 @@
 import javax.swing.JFileChooser;
 import javax.swing.filechooser.FileFilter;
 
-import org.apache.cayenne.access.DataDomain;
-import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.conf.DriverDataSourceFactory;
 import org.apache.cayenne.conf.JNDIDataSourceFactory;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.configuration.event.DataNodeEvent;
 import org.apache.cayenne.configuration.event.QueryEvent;
 import org.apache.cayenne.conn.DataSourceInfo;
-import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.event.EntityEvent;
@@ -55,7 +54,6 @@
 import org.apache.cayenne.modeler.util.CayenneAction;
 import org.apache.cayenne.modeler.util.FileFilters;
 import org.apache.cayenne.project.NamedObjectFactory;
-import org.apache.cayenne.project.ProjectDataSource;
 import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.wocompat.EOModelProcessor;
@@ -148,12 +146,12 @@
 
             // this should make created node current, resulting in the new map being added
             // to the node automatically once it is loaded
-            DataNode node = nodeBuilder.buildDataNode();
+            DataNodeDescriptor node = nodeBuilder.buildDataNode();
 
             // configure node...
             if ("JNDI".equalsIgnoreCase(adapter)) {
-                node.setDataSourceFactory(JNDIDataSourceFactory.class.getName());
-                node.setDataSourceLocation((String) connection.get("serverUrl"));
+                node.setDataSourceFactoryType(JNDIDataSourceFactory.class.getName());
+                node.setParameters((String) connection.get("serverUrl"));
             }
             else {
                 // guess adapter from plugin or driver
@@ -166,17 +164,16 @@
                         Class adapterClass = getApplication()
                                 .getClassLoadingService()
                                 .loadClass(cayenneAdapter);
-                        node.setAdapter((DbAdapter) adapterClass.newInstance());
+                        node.setAdapterType(adapterClass.toString());
                     }
                     catch (Throwable ex) {
                         // ignore...
                     }
                 }
 
-                node.setDataSourceFactory(DriverDataSourceFactory.class.getName());
+                node.setDataSourceFactoryType(DriverDataSourceFactory.class.getName());
 
-                DataSourceInfo dsi = ((ProjectDataSource) node.getDataSource())
-                        .getDataSourceInfo();
+                DataSourceInfo dsi = node.getDataSourceDescriptor();
                 
                 
                 
@@ -190,8 +187,7 @@
             getProjectController().fireDataNodeEvent(
                     new DataNodeEvent(this, node, MapEvent.ADD));
             getProjectController().fireDataNodeDisplayEvent(
-                    new DataNodeDisplayEvent(this, getProjectController()
-                            .getCurrentDataDomain(), node));
+                    new DataNodeDisplayEvent(this, (DataChannelDescriptor)getProjectController().getProject().getRootNode(), node));
         }
     }
     
@@ -210,7 +206,7 @@
             return false;
         }
 
-        return path.firstInstanceOf(DataDomain.class) != null;
+        return path.firstInstanceOf(DataChannelDescriptor.class) != null;
     }
 
     /**
@@ -295,12 +291,12 @@
             }
 
             mediator.fireDataMapDisplayEvent(new DataMapDisplayEvent(Application
-                    .getFrame(), map, mediator.getCurrentDataDomain(), mediator
+                    .getFrame(), map, (DataChannelDescriptor)mediator.getProject().getRootNode(), mediator
                     .getCurrentDataNode()));
         }
         else {
             // fix DataMap name, as there maybe a map with the same name already
-            DataDomain domain = mediator.getCurrentDataDomain();
+            DataChannelDescriptor domain = (DataChannelDescriptor)mediator.getProject().getRootNode();
             map.setName(NamedObjectFactory.createName(DataMap.class, domain, map
                     .getName()));
 

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java Tue Feb  2 13:06:56 2010
@@ -25,14 +25,13 @@
 
 import javax.swing.KeyStroke;
 
-import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.conf.Configuration;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.CayenneModelerController;
 import org.apache.cayenne.modeler.event.DomainDisplayEvent;
-import org.apache.cayenne.modeler.util.ModelerUtil;
-import org.apache.cayenne.project.ApplicationProject;
 import org.apache.cayenne.project.NamedObjectFactory;
+import org.apache.cayenne.project2.Project;
 
 /**
  */
@@ -65,16 +64,18 @@
         }
 
         Configuration config = buildProjectConfiguration(null);
-        ApplicationProject project = ModelerUtil.createModelerProject(null, config, getProjectController());
+        
+        DataChannelDescriptor domain = new DataChannelDescriptor();
+        
+        String name = NamedObjectFactory.createName(
+                DataChannelDescriptor.class,
+                domain);
+        
+        domain.setName(name);
+        
+        Project project = new Project(domain);
 
-        // stick a DataDomain
-        DataDomain domain = (DataDomain) NamedObjectFactory.createObject(
-                DataDomain.class,
-                config);
-        domain.getEntityResolver().setIndexedByClass(false);
-        config.addDomain(domain);
-
-        controller.projectOpenedAction(project);
+        controller.projectOpenedAction(project, config);
 
         // select default domain
         getProjectController().fireDomainDisplayEvent(

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntitySyncAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntitySyncAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntitySyncAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntitySyncAction.java Tue Feb  2 13:06:56 2010
@@ -25,6 +25,7 @@
 
 import javax.swing.KeyStroke;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.event.EntityEvent;
 import org.apache.cayenne.map.event.MapEvent;
@@ -88,7 +89,7 @@
                         this,
                         entity,
                         entity.getDataMap(),
-                        mediator.getCurrentDataDomain()));
+                        (DataChannelDescriptor)mediator.getProject().getRootNode()));
             }
         }
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java Tue Feb  2 13:06:56 2010
@@ -23,17 +23,23 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.io.File;
+import java.net.URL;
 
 import javax.swing.JOptionPane;
 import javax.swing.KeyStroke;
 
 import org.apache.cayenne.conf.Configuration;
 import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.CayenneModelerController;
 import org.apache.cayenne.modeler.dialog.ErrorDebugDialog;
-import org.apache.cayenne.modeler.util.ModelerUtil;
-import org.apache.cayenne.project.ApplicationProject;
-import org.apache.cayenne.project.Project;
-import org.apache.cayenne.project.ProjectException;
+import org.apache.cayenne.project2.Project;
+import org.apache.cayenne.project2.ProjectLoader;
+import org.apache.cayenne.project2.upgrade.ProjectUpgrader;
+import org.apache.cayenne.project2.upgrade.UpgradeHandler;
+import org.apache.cayenne.project2.upgrade.UpgradeMetaData;
+import org.apache.cayenne.project2.upgrade.UpgradeType;
+import org.apache.cayenne.resource.Resource;
+import org.apache.cayenne.resource.URLResource;
 import org.apache.cayenne.swing.control.FileMenuItem;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -74,13 +80,13 @@
         if (getProjectController() != null && !checkSaveOnClose()) {
             return;
         }
-       
+
         File f = null;
         if (e.getSource() instanceof FileMenuItem) {
             FileMenuItem menu = (FileMenuItem) e.getSource();
             f = menu.getFile();
         }
-        else if(e.getSource() instanceof File) {
+        else if (e.getSource() instanceof File) {
             f = (File) e.getSource();
         }
 
@@ -102,31 +108,43 @@
 
             openProject(f);
         }
-        
+
         application.getUndoManager().discardAllEdits();
     }
 
     /** Opens specified project file. File must already exist. */
     public void openProject(File file) {
-
         try {
             if (!file.exists()) {
-                JOptionPane.showMessageDialog(Application.getFrame(),
-                        "Can't open project - file \"" + file.getPath() + "\" does not exist",
-                        "Can't Open Project", JOptionPane.OK_OPTION);
+                JOptionPane.showMessageDialog(
+                        Application.getFrame(),
+                        "Can't open project - file \""
+                                + file.getPath()
+                                + "\" does not exist",
+                        "Can't Open Project",
+                        JOptionPane.OK_OPTION);
                 return;
             }
-            
-            getApplication().getFrameController().addToLastProjListAction(
-                    file.getAbsolutePath());
+
+            CayenneModelerController controller = Application
+                    .getInstance()
+                    .getFrameController();
+            controller.addToLastProjListAction(file.getAbsolutePath());
 
             Configuration config = buildProjectConfiguration(file);
-            ApplicationProject project = ModelerUtil.createModelerProject(file, config, getProjectController());
-            getProjectController().setProject(project);
 
-            // if upgrade was canceled
-            int upgradeStatus = project.getUpgradeStatus();
-            if (upgradeStatus > 0) {
+            URL url = file.toURL();
+            Resource rootSource = new URLResource(url);
+
+            ProjectUpgrader upgrader = getApplication().getInjector().getInstance(
+                    ProjectUpgrader.class);
+            UpgradeHandler handler = upgrader.getUpgradeHandler(rootSource);
+            UpgradeMetaData md = handler.getUpgradeMetaData();
+
+            Project project = getApplication().getInjector().getInstance(
+                    ProjectLoader.class).loadProject(rootSource);
+
+            if (UpgradeType.DOWNGRADE_NEEDED == md.getUpgradeType()) {
                 JOptionPane
                         .showMessageDialog(
                                 Application.getFrame(),
@@ -135,16 +153,39 @@
                                 JOptionPane.OK_OPTION);
                 closeProject(false);
             }
-            else if (upgradeStatus < 0) {
-                if (processUpgrades(project)) {
-                    getApplication().getFrameController().projectOpenedAction(project);
-                }
-                else {
-                    closeProject(false);
+            else if (UpgradeType.UPGRADE_NEEDED == md.getUpgradeType()) {
+                if (processUpgrades(md)) {
+                    // perform upgrade
+                    logObj.info("Will upgrade project "
+                            + project.getConfigurationResource().getURL().getPath());
+                    Resource upgraded = handler.performUpgrade();
+                    if (upgraded != null) {
+                        project = getApplication().getInjector().getInstance(
+                                ProjectLoader.class).loadProject(upgraded);
+
+                        controller.projectOpenedAction(project, config);
+
+                        getProjectController().getProjectWatcher().pauseWatching();
+                        getProjectController().getProjectWatcher().reconfigure();
+
+                        // if project file name changed
+                        // need upgrade all
+                        if (!file.getAbsolutePath().equals(
+                                project.getConfigurationResource().getURL().getPath())) {
+                            controller.changePathInLastProjListAction(file
+                                    .getAbsolutePath(), project
+                                    .getConfigurationResource()
+                                    .getURL()
+                                    .getPath());
+                        }
+                    }
+                    else {
+                        closeProject(false);
+                    }
                 }
             }
             else {
-                getApplication().getFrameController().projectOpenedAction(project);
+                controller.projectOpenedAction(project, config);
             }
         }
         catch (Exception ex) {
@@ -153,24 +194,18 @@
         }
     }
 
-    protected boolean processUpgrades(Project project) throws ProjectException {
-        // must really concat all messages, this is a temp hack...
-        String msg = project.getUpgradeMessages().get(0);
+    protected boolean processUpgrades(UpgradeMetaData md) {
         // need an upgrade
         int returnCode = JOptionPane.showConfirmDialog(
                 Application.getFrame(),
-                "Project needs an upgrade to a newer version. " + msg + ". Upgrade?",
+                "Project needs an upgrade to a newer version. "
+                        + md.getSupportedVersion()
+                        + ". Upgrade?",
                 "Upgrade Needed",
                 JOptionPane.YES_NO_OPTION);
         if (returnCode == JOptionPane.NO_OPTION) {
             return false;
         }
-
-        // perform upgrade
-        logObj.info("Will upgrade project " + project.getMainFile());
-        getProjectController().getProjectWatcher().pauseWatching();
-        project.upgrade();
-        getProjectController().getProjectWatcher().reconfigure();
         return true;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java Tue Feb  2 13:06:56 2010
@@ -31,8 +31,8 @@
 import javax.swing.JOptionPane;
 import javax.swing.KeyStroke;
 
-import org.apache.cayenne.access.DataDomain;
-import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
@@ -104,7 +104,8 @@
             if (content != null && currentObject != null) {
                 
                 PasteCompoundUndoableEdit undoableEdit = new PasteCompoundUndoableEdit();
-                DataDomain domain = getProjectController().getCurrentDataDomain();
+                
+                DataChannelDescriptor domain = (DataChannelDescriptor)getProjectController().getProject().getRootNode();
                 DataMap map = getProjectController().getCurrentDataMap();
                 
                 if (content instanceof List) {
@@ -130,13 +131,13 @@
     }
     
     private void paste(Object where, Object content) {
-    	paste(where, content, getProjectController().getCurrentDataDomain(), getProjectController().getCurrentDataMap()); 
+    	paste(where, content, (DataChannelDescriptor)getProjectController().getProject().getRootNode(), getProjectController().getCurrentDataMap()); 
     }
 
     /**
      * Pastes single object
      */
-    public void paste(Object where, Object content, DataDomain domain, DataMap map) {
+    public void paste(Object where, Object content, DataChannelDescriptor domain, DataMap map) {
         final ProjectController mediator = getProjectController();
       
 
@@ -148,7 +149,7 @@
             where = mediator.getCurrentDataMap();
         }
 
-        if ((where instanceof DataDomain || where instanceof DataNode)
+        if ((where instanceof DataChannelDescriptor || where instanceof DataNodeDescriptor)
                 && content instanceof DataMap) {
             // paste DataMap to DataDomain or DataNode
             DataMap dataMap = ((DataMap) content);
@@ -312,8 +313,7 @@
                 query.setDataMap(dataMap);
 
                 dataMap.addQuery(query);
-                QueryTypeController.fireQueryEvent(this, mediator, mediator
-                        .getCurrentDataDomain(), dataMap, query);
+                QueryTypeController.fireQueryEvent(this, mediator, dataMap, query);
             }
             else if (content instanceof Procedure) {
                 // paste Procedure to DataMap
@@ -347,7 +347,7 @@
 
                 dbEntity.addAttribute(attr);
                 CreateAttributeAction
-                        .fireDbAttributeEvent(this, mediator, domain, mediator.getCurrentDataMap(), dbEntity, attr);
+                        .fireDbAttributeEvent(this, mediator, mediator.getCurrentDataMap(), dbEntity, attr);
             }
             else if (content instanceof DbRelationship) {
                 DbRelationship rel = (DbRelationship) content;
@@ -380,7 +380,8 @@
                 objEntity.addAttribute(attr);
                 CreateAttributeAction.fireObjAttributeEvent(
                         this,
-                        mediator, domain, mediator.getCurrentDataMap(), 
+                        mediator,
+                        mediator.getCurrentDataMap(),
                         objEntity,
                         attr);
             }
@@ -509,7 +510,7 @@
              * Checking all avaliable pairs source-pasting object
              */
 
-            return ((currentObject instanceof DataDomain || currentObject instanceof DataNode) && content instanceof DataMap)
+            return ((currentObject instanceof DataChannelDescriptor || currentObject instanceof DataNodeDescriptor) && content instanceof DataMap)
                     ||
 
                     (currentObject instanceof DataMap && isTreeLeaf(content))
@@ -565,14 +566,14 @@
      */
     class DataMapNameChecker implements FreeNameChecker {
 
-        DataDomain domain;
+        DataChannelDescriptor domain;
 
-        public DataMapNameChecker(DataDomain domain) {
+        public DataMapNameChecker(DataChannelDescriptor domain) {
             this.domain = domain;
         }
 
         public boolean isNameFree(String name) {
-            return domain.getMap(name) == null;
+            return domain.getDataMap(name) == null;
         }
     }
 
@@ -581,16 +582,16 @@
      */
     class DbEntityNameChecker implements FreeNameChecker {
 
-        DataDomain domain;
+        DataChannelDescriptor domain;
 
-        public DbEntityNameChecker(DataDomain domain) {
+        public DbEntityNameChecker(DataChannelDescriptor domain) {
             this.domain = domain;
         }
 
         public boolean isNameFree(String name) {
             /**
              * Name mast be unique through all DataDomain, for EntityResolver to work
-             * correctly
+             * correctlys
              */
             for (DataMap map : domain.getDataMaps()) {
                 if (map.getDbEntity(name) != null) {
@@ -607,9 +608,9 @@
      */
     class ObjEntityNameChecker implements FreeNameChecker {
 
-        DataDomain domain;
+        DataChannelDescriptor domain;
 
-        public ObjEntityNameChecker(DataDomain domain) {
+        public ObjEntityNameChecker(DataChannelDescriptor domain) {
             this.domain = domain;
         }
 
@@ -630,9 +631,9 @@
 
     class EmbeddableNameChecker implements FreeNameChecker {
 
-        DataDomain domain;
+        DataChannelDescriptor domain;
 
-        public EmbeddableNameChecker(DataDomain domain) {
+        public EmbeddableNameChecker(DataChannelDescriptor domain) {
             this.domain = domain;
         }
 
@@ -656,9 +657,9 @@
      */
     class ProcedureNameChecker implements FreeNameChecker {
 
-        DataDomain domain;
+        DataChannelDescriptor domain;
 
-        public ProcedureNameChecker(DataDomain domain) {
+        public ProcedureNameChecker(DataChannelDescriptor domain) {
             this.domain = domain;
         }
 
@@ -682,9 +683,9 @@
      */
     class QueryNameChecker implements FreeNameChecker {
 
-        DataDomain domain;
+        DataChannelDescriptor domain;
 
-        public QueryNameChecker(DataDomain domain) {
+        public QueryNameChecker(DataChannelDescriptor domain) {
             this.domain = domain;
         }
 

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java Tue Feb  2 13:06:56 2010
@@ -28,7 +28,6 @@
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.dialog.UnsavedChangesDialog;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectConfiguration;
 import org.apache.cayenne.project.ProjectPath;
 
 /**
@@ -65,10 +64,7 @@
      * @since 1.2
      */
     protected Configuration buildProjectConfiguration(File projectFile) {
-        ProjectConfiguration config = new ModelerProjectConfiguration(projectFile);
-        config.setLoaderDelegate(new ModelerProjectLoadDelegate(config));
-        config.setSaverDelegate(new ModelerProjectSaveDelegate(config));
-        return config;
+        return new ModelerProjectConfiguration(projectFile);
     }
 
     /** Returns true if successfully closed project, false otherwise. */

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectOpener.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectOpener.java?rev=905616&r1=905615&r2=905616&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectOpener.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectOpener.java Tue Feb  2 13:06:56 2010
@@ -26,12 +26,11 @@
 import javax.swing.filechooser.FileFilter;
 
 import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.conf.Configuration;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.dialog.OverwriteDialog;
 import org.apache.cayenne.modeler.util.FileFilters;
-import org.apache.cayenne.project.ApplicationProject;
-import org.apache.cayenne.project.Project;
+import org.apache.cayenne.project2.Project;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -47,9 +46,14 @@
      * Selects a directory to store the project.
      */
     File newProjectDir(Frame f, Project p) {
-        if (p instanceof ApplicationProject) {
+        if (p instanceof Project) {
+            StringBuilder nameProject = new StringBuilder("cayenne");
+            if(((DataChannelDescriptor)p.getRootNode()).getName()!=null){
+                nameProject.append("-").append(((DataChannelDescriptor)p.getRootNode()).getName());
+            }
+            nameProject.append(".xml");
             // configure for application project
-            return newProjectDir(f, Configuration.DEFAULT_DOMAIN_FILE, FileFilters
+            return newProjectDir(f, nameProject.toString(), FileFilters
                     .getApplicationFilter());
         }
         else {