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 2009/12/10 17:46:17 UTC

svn commit: r889327 - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler: ProjectController.java dialog/objentity/ObjAttributeInfoDialog.java editor/ObjAttributeTableModel.java

Author: oltka
Date: Thu Dec 10 16:46:17 2009
New Revision: 889327

URL: http://svn.apache.org/viewvc?rev=889327&view=rev
Log:
CAY-1332

* fix Embeddable validation error in CM on custom Java types

Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java?rev=889327&r1=889326&r2=889327&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java Thu Dec 10 16:46:17 2009
@@ -26,6 +26,7 @@
 import java.util.Collections;
 import java.util.EventListener;
 import java.util.EventObject;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Vector;
@@ -1949,4 +1950,15 @@
             }
         }
     }
+    
+    public ArrayList<Embeddable> getEmbeddableNamesInCurRentDataDomain() {
+        DataDomain dd = getCurrentDataDomain();
+        Collection<DataMap> maps = dd.getDataMaps();
+        Iterator<DataMap> it = maps.iterator();
+        ArrayList<Embeddable> embs = new ArrayList<Embeddable>();
+        while(it.hasNext()){
+            embs.addAll(it.next().getEmbeddables());
+        }
+        return embs;
+    }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java?rev=889327&r1=889326&r2=889327&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java Thu Dec 10 16:46:17 2009
@@ -44,7 +44,6 @@
 import javax.swing.tree.TreePath;
 
 import org.apache.cayenne.map.Attribute;
-import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbRelationship;
@@ -67,7 +66,6 @@
 import org.apache.cayenne.modeler.util.EntityTreeFilter;
 import org.apache.cayenne.modeler.util.EntityTreeModel;
 import org.apache.cayenne.modeler.util.ModelerUtil;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.swing.BindingBuilder;
 import org.apache.cayenne.util.CayenneMapEntry;
 
@@ -101,18 +99,14 @@
         this.row = row;
         this.stringToEmbeddables = new HashMap<String, Embeddable>();
         this.embeddableNames = new ArrayList<String>();
-        
-        Iterator it = mediator.getCurrentDataDomain().getDataMaps().iterator();
-        while (it.hasNext()) {
-            DataMap dataMap = (DataMap) it.next();
-            Iterator<Embeddable> embs = dataMap.getEmbeddables().iterator();
-            while (embs.hasNext()) {
-                Embeddable emb = (Embeddable) embs.next();
-                stringToEmbeddables.put(emb.getClassName(), emb);
-                embeddableNames.add(emb.getClassName());
-            }
+
+        Iterator<Embeddable> embs = mediator.getEmbeddableNamesInCurRentDataDomain().iterator();
+        while (embs.hasNext()) {
+            Embeddable emb = (Embeddable) embs.next();
+            stringToEmbeddables.put(emb.getClassName(), emb);
+            embeddableNames.add(emb.getClassName());
         }
-        
+
         initController(model.getAttribute(row));
     }
 

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java?rev=889327&r1=889326&r2=889327&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java Thu Dec 10 16:46:17 2009
@@ -24,7 +24,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.List;
+import java.util.Iterator;
 
 import javax.swing.DefaultCellEditor;
 import javax.swing.JComboBox;
@@ -33,6 +33,7 @@
 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.Entity;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
@@ -262,7 +263,15 @@
             Collection<String> registeredTypesList =  Arrays.asList(registeredTypes); ;
             if(oldType!=null && newType!=null && ! (registeredTypesList.contains(oldType) == registeredTypesList.contains(newType))){
                 ObjAttribute attributeNew;
-                if(registeredTypesList.contains(newType)){
+                
+                ArrayList<Embeddable> embs = mediator.getEmbeddableNamesInCurRentDataDomain();
+                ArrayList<String> embNames = new ArrayList<String>();
+                Iterator<Embeddable> it = embs.iterator();
+                while (it.hasNext()) {
+                    embNames.add(it.next().getClassName());
+                }
+                
+                if(registeredTypesList.contains(newType) || !embNames.contains(newType)){
                     attributeNew = new ObjAttribute();
                 } else {
                     attributeNew = new EmbeddedAttribute();