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