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