This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new 91e768a9a Remove exception cause in Cayenne Modeler (#582)
91e768a9a is described below

commit 91e768a9a4214b0e7ed790cf3c2600fb43ac1702
Author: Aliaksei Peraverzeu <61758946+aperaver...@users.noreply.github.com>
AuthorDate: Tue Jun 18 15:26:57 2024 +0300

    Remove exception cause in Cayenne Modeler (#582)
    
    * Remove exception cause in Cayenne Modeler
    
    * Fix creation of EmbeddedAttribute in Modeler
    
    ---------
    
    Co-authored-by: Nikita Timofeev <stari...@users.noreply.github.com>
---
 .../modeler/editor/ObjAttributeTableModel.java     | 43 ++++++++++------------
 .../editor/wrapper/ObjAttributeWrapper.java        |  2 +-
 2 files changed, 21 insertions(+), 24 deletions(-)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
index c4986388a..b8d1cea37 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
@@ -210,20 +210,26 @@ public class ObjAttributeTableModel extends 
CayenneTableModel<ObjAttributeWrappe
 
     private String getDBAttributeType(ObjAttributeWrapper attribute, 
DbAttribute dbAttribute) {
         int type;
-        if (dbAttribute == null) {
-            if (!(attribute.getValue() instanceof EmbeddedAttribute)) {
+        if (dbAttribute != null) {
+            type = dbAttribute.getType();
+        } else {
+            if (attribute.getValue() instanceof EmbeddedAttribute) {
+                return null;
+            } else {
                 try {
-                    type = 
TypesMapping.getSqlTypeByJava(attribute.getJavaClass());
+                    Class<?> objAttributeClass;
+                    try {
+                        objAttributeClass = attribute.getObjAttributeClass();
+                    } catch (DIRuntimeException e) {
+                        return null;
+                    }
+                    type = TypesMapping.getSqlTypeByJava(objAttributeClass);
                     // have to catch the exception here to make sure that 
exceptional situations
                     // (class doesn't exist, for example) don't prevent the 
gui from properly updating.
-                } catch (CayenneRuntimeException | DIRuntimeException cre) {
+                } catch (CayenneRuntimeException cre) {
                     return null;
                 }
-            } else {
-                return null;
             }
-        } else {
-            type = dbAttribute.getType();
         }
         return TypesMapping.getSqlNameByType(type);
     }
@@ -274,32 +280,23 @@ public class ObjAttributeTableModel extends 
CayenneTableModel<ObjAttributeWrappe
     }
 
     private void setObjAttributeType(ObjAttributeWrapper attribute, Object 
value) {
-        String oldType = attribute.getType();
         String newType = value != null ? value.toString() : null;
-
         attribute.setType(newType);
-        if (oldType == null || newType == null) {
-            return;
-        }
 
-        String[] registeredTypes = ModelerUtil.getRegisteredTypeNames();
-        Collection<String> registeredTypesList = 
Arrays.asList(registeredTypes);
-        if (registeredTypesList.contains(oldType) == 
registeredTypesList.contains(newType)) {
+        if 
(Arrays.asList(ModelerUtil.getRegisteredTypeNames()).contains(newType) || 
newType == null) {
             return;
         }
 
-        ObjEntity entity = attribute.getEntity();
-
         ObjAttribute attributeNew;
-        if (registeredTypesList.contains(newType) ||
-                
!mediator.getEmbeddableNamesInCurrentDataDomain().contains(newType)) {
-            attributeNew = new ObjAttribute();
-            attributeNew.setDbAttributePath(attribute.getDbAttributePath());
-        } else {
+        if 
(mediator.getEmbeddableNamesInCurrentDataDomain().contains(newType)) {
             attributeNew = new EmbeddedAttribute();
             attributeNew.setDbAttributePath((String)null);
+        } else {
+            attributeNew = new ObjAttribute();
+            attributeNew.setDbAttributePath(attribute.getDbAttributePath());
         }
 
+        ObjEntity entity = attribute.getEntity();
         attributeNew.setName(attribute.getName());
         attributeNew.setEntity(entity);
         attributeNew.setParent(attribute.getParent());
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/wrapper/ObjAttributeWrapper.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/wrapper/ObjAttributeWrapper.java
index f3d723d18..e8027422d 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/wrapper/ObjAttributeWrapper.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/wrapper/ObjAttributeWrapper.java
@@ -118,7 +118,7 @@ public class ObjAttributeWrapper implements 
Wrapper<ObjAttribute> {
         objAttribute.setParent(parent);
     }
 
-    public Class<?> getJavaClass() {
+    public Class<?> getObjAttributeClass() {
         return objAttribute.getJavaClass();
     }
 

Reply via email to