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

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

commit 8fc21319fdc8071f9088324da0790a134aa37e01
Author: Andrus Adamchik <[email protected]>
AuthorDate: Mon Jul 20 14:57:56 2026 +0200

    ObjectNameGenerator - ObjRelationship name is always derived from 
DbRelationship name
    
    no more join analysis for the Obj layer naming
---
 .../dbsync/merge/context/EntityMergeSupport.java   |   6 +-
 .../dbsync/naming/BaseObjectNameGenerator.java     |   8 +-
 .../cayenne/dbsync/naming/ObjectNameGenerator.java |   2 +-
 .../cayenne/dbsync/merge/EntityMergeSupportIT.java |   9 +-
 .../naming/DefaultObjectNameGeneratorTest.java     | 122 ++++++++++++---------
 .../naming/PatternObjectNameGeneratorTest.java     |   6 +-
 .../modeler/ui/action/CreateObjEntityAction.java   |  10 +-
 .../modeler/ui/action/DbEntitySyncAction.java      |  22 ----
 .../modeler/ui/action/ObjEntitySyncAction.java     |   2 -
 .../modeler/ui/entitysync/EntitySyncDialog.java    |  29 ++---
 10 files changed, 106 insertions(+), 110 deletions(-)

diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
index ca3326921..953672571 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
@@ -84,7 +84,7 @@ public class EntityMergeSupport {
         SQL_ADDITIONAL_TYPES_TO_JAVA_TYPE.put("geometry", Wkt.class.getName());
     }
 
-    private ObjectNameGenerator nameGenerator;
+    private final ObjectNameGenerator nameGenerator;
     private final List<EntityMergeListener> listeners;
     private final boolean removingMeaningfulFKs;
     private final NameFilter meaningfulPKsFilter;
@@ -527,8 +527,4 @@ public class EntityMergeSupport {
             listener.objRelationshipAdded(rel);
         }
     }
-
-    public void setNameGenerator(ObjectNameGenerator nameGenerator) {
-        this.nameGenerator = nameGenerator;
-    }
 }
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/BaseObjectNameGenerator.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/BaseObjectNameGenerator.java
index 8d1a06a7d..a818642d6 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/BaseObjectNameGenerator.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/BaseObjectNameGenerator.java
@@ -25,6 +25,7 @@ import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.util.Util;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * The default strategy for converting DB-layer to Object-layer names.
@@ -52,9 +53,12 @@ public abstract class BaseObjectNameGenerator implements 
ObjectNameGenerator {
             throw new IllegalArgumentException("At least one relationship is 
expected");
         }
 
-        DbRelationship first = relationshipChain[0];
+        // the DbRelationship name is the source of truth for the Obj layer
         DbRelationship last = relationshipChain[relationshipChain.length - 1];
-        return Util.underscoredToJava(relationshipBase(first.getJoins(), 
last.getTargetEntityName(), isToMany(relationshipChain)), false);
+        String name = 
Util.underscoredToJava(Objects.requireNonNull(last.getName(), "Unnamed 
DbRelationship"), false);
+
+        // a to-many chain ending in a to-one (e.g. a flattened many-to-many) 
mirrors a singular name
+        return isToMany(relationshipChain) && !last.isToMany() ? 
EnglishInflector.pluralOf(name) : name;
     }
 
     @Override
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/ObjectNameGenerator.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/ObjectNameGenerator.java
index 81c3dfd39..26da836d3 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/ObjectNameGenerator.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/ObjectNameGenerator.java
@@ -43,7 +43,7 @@ public interface ObjectNameGenerator {
     String objAttributeName(DbAttribute dbAttribute);
 
     /**
-     * Generates a name for an ObjRelationship, derived from join semantics of 
a chain of connected DbRelationships.
+     * Generates a name for an ObjRelationship mapped to a chain of one or 
more connected DbRelationships.
      *
      * @since 5.0
      */
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java
 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java
index d88f2968c..0f0ad3577 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java
@@ -93,11 +93,12 @@ public class EntityMergeSupportIT extends MergeCase {
                                false);
                
assertTrue(entityMergeSupport.synchronizeWithDbEntities(Arrays.asList(objEntity1,
 objEntity2)));
                assertNotNull(objEntity1.getAttribute("name"));
-               assertNotNull(objEntity1.getRelationship("newTable2s"));
-               assertNotNull(objEntity2.getRelationship("newTable"));
 
-               
assertEquals(objEntity1.getRelationship("newTable2s").getDeleteRule(), 
DeleteRule.DEFAULT_DELETE_RULE_TO_MANY);
-               
assertEquals(objEntity2.getRelationship("newTable").getDeleteRule(), 
DeleteRule.DEFAULT_DELETE_RULE_TO_ONE);
+               assertNotNull(objEntity1.getRelationship("rel1To2"));
+               assertNotNull(objEntity2.getRelationship("rel2To1"));
+
+               assertEquals(DeleteRule.DEFAULT_DELETE_RULE_TO_MANY, 
objEntity1.getRelationship("rel1To2").getDeleteRule());
+               assertEquals(DeleteRule.DEFAULT_DELETE_RULE_TO_ONE, 
objEntity2.getRelationship("rel2To1").getDeleteRule());
 
                map.removeObjEntity(objEntity2.getName());
                map.removeObjEntity(objEntity1.getName());
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGeneratorTest.java
 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGeneratorTest.java
index 50c0a96a3..102f6917c 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGeneratorTest.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGeneratorTest.java
@@ -46,119 +46,141 @@ public class DefaultObjectNameGeneratorTest {
         return relationship;
     }
 
+    private String dbRelationshipName(DbRelationship relationship) {
+        return generator.dbRelationshipName(relationship.getJoins(), 
relationship.isToMany());
+    }
+
+    @Test
+    public void objRelationshipName_MirrorsDbRelationshipName() {
+
+        // the DbRelationship name is the source of truth for the 
ObjRelationship name
+        DbRelationship r1 = makeRelationship("painting", "artist_id", 
"artist", "artist_id", false);
+        r1.setName("creator");
+        assertEquals("creator", generator.objRelationshipName(r1));
+
+        // a to-many DbRelationship name is already plural and is mirrored 
as-is
+        DbRelationship r2 = makeRelationship("artist", "artist_id", 
"painting", "artist_id", true);
+        r2.setName("works");
+        assertEquals("works", generator.objRelationshipName(r2));
+
+        // underscored db names are converted to Java style
+        DbRelationship r3 = makeRelationship("TEAM", "TEAM_ID", "GAME", 
"HOME_TEAM_ID", true);
+        r3.setName("HOME_GAMES");
+        assertEquals("homeGames", generator.objRelationshipName(r3));
+
+        // even the NameBuilder placeholder is mirrored, not regenerated
+        DbRelationship r4 = makeRelationship("painting", "artist_id", 
"artist", "artist_id", false);
+        r4.setName("untitledRel2");
+        assertEquals("untitledRel2", generator.objRelationshipName(r4));
+    }
+
+    @Test
+    public void objRelationshipName_FlattenedChain() {
+
+        // flattened many-to-many: a to-many leg to the join table, then a 
to-one leg to the target;
+        // the last leg's singular name is mirrored and pluralized
+        DbRelationship r1 = makeRelationship("movie", "movie_id", 
"person_movie", "movie_id", true);
+        r1.setName("personMovies");
+
+        DbRelationship r2 = makeRelationship("person_movie", "actor_id", 
"person", "person_id", false);
+        r2.setName("actor");
+        assertEquals("actors", generator.objRelationshipName(r1, r2));
+
+        DbRelationship r3 = makeRelationship("person_movie", "director_id", 
"person", "person_id", false);
+        r3.setName("director");
+        assertEquals("directors", generator.objRelationshipName(r1, r3));
+    }
+
     @Test
-    public void objRelationshipName_LowerCase_Underscores() {
+    public void dbRelationshipName_LowerCase_Underscores() {
 
         DbRelationship r1 = makeRelationship("painting", "artist_id", 
"artist", "artist_id", false);
-        assertEquals("artist", generator.objRelationshipName(r1));
+        assertEquals("artist", dbRelationshipName(r1));
 
         DbRelationship r2 = makeRelationship("artist", "artist_id", 
"painting", "artist_id", true);
-        assertEquals("paintings", generator.objRelationshipName(r2));
+        assertEquals("paintings", dbRelationshipName(r2));
 
         DbRelationship r3 = makeRelationship("person", "mother_id", "person", 
"person_id", false);
-        assertEquals("mother", generator.objRelationshipName(r3));
+        assertEquals("mother", dbRelationshipName(r3));
 
         DbRelationship r4 = makeRelationship("person", "person_id", "person", 
"mother_id", true);
-        assertEquals("people", generator.objRelationshipName(r4));
+        assertEquals("people", dbRelationshipName(r4));
 
         DbRelationship r5 = makeRelationship("person", "shipping_address_id", 
"address", "id", false);
-        assertEquals("shippingAddress", generator.objRelationshipName(r5));
+        assertEquals("shippingAddress", dbRelationshipName(r5));
 
         DbRelationship r6 = makeRelationship("person", "id", "address", 
"person_id", true);
-        assertEquals("addresses", generator.objRelationshipName(r6));
+        assertEquals("addresses", dbRelationshipName(r6));
     }
 
     @Test
-    public void objRelationshipName_UpperCase_Underscores() {
+    public void dbRelationshipName_UpperCase_Underscores() {
 
         DbRelationship r1 = makeRelationship("PAINTING", "ARTIST_ID", 
"ARTIST", "ARTIST_ID", false);
-        assertEquals("artist", generator.objRelationshipName(r1));
+        assertEquals("artist", dbRelationshipName(r1));
 
         DbRelationship r2 = makeRelationship("ARTIST", "ARTIST_ID", 
"PAINTING", "ARTIST_ID", true);
-        assertEquals("paintings", generator.objRelationshipName(r2));
+        assertEquals("paintings", dbRelationshipName(r2));
 
         DbRelationship r3 = makeRelationship("PERSON", "MOTHER_ID", "PERSON", 
"PERSON_ID", false);
-        assertEquals("mother", generator.objRelationshipName(r3));
+        assertEquals("mother", dbRelationshipName(r3));
 
         DbRelationship r4 = makeRelationship("PERSON", "PERSON_ID", "PERSON", 
"MOTHER_ID", true);
-        assertEquals("people", generator.objRelationshipName(r4));
+        assertEquals("people", dbRelationshipName(r4));
 
         DbRelationship r5 = makeRelationship("PERSON", "SHIPPING_ADDRESS_ID", 
"ADDRESS", "ID", false);
-        assertEquals("shippingAddress", generator.objRelationshipName(r5));
+        assertEquals("shippingAddress", dbRelationshipName(r5));
 
         DbRelationship r6 = makeRelationship("PERSON", "ID", "ADDRESS", 
"PERSON_ID", true);
-        assertEquals("addresses", generator.objRelationshipName(r6));
+        assertEquals("addresses", dbRelationshipName(r6));
     }
 
     @Test
-    public void objRelationshipName_ToMany_RoleQualifiedFk() {
+    public void dbRelationshipName_ToMany_RoleQualifiedFk() {
 
         // two FKs from GAME to TEAM: the reverse collections take the role 
from the FK column
         DbRelationship r1 = makeRelationship("TEAM", "TEAM_ID", "GAME", 
"HOME_TEAM_ID", true);
-        assertEquals("homeGames", generator.objRelationshipName(r1));
+        assertEquals("homeGames", dbRelationshipName(r1));
 
         DbRelationship r2 = makeRelationship("TEAM", "TEAM_ID", "GAME", 
"AWAY_TEAM_ID", true);
-        assertEquals("awayGames", generator.objRelationshipName(r2));
+        assertEquals("awayGames", dbRelationshipName(r2));
 
         DbRelationship r3 = makeRelationship("team", "team_id", "game", 
"home_team_id", true);
-        assertEquals("homeGames", generator.objRelationshipName(r3));
+        assertEquals("homeGames", dbRelationshipName(r3));
 
         // FK without an ID suffix still carries the role
         DbRelationship r4 = makeRelationship("TEAM", "TEAM_ID", "GAME", 
"HOME_TEAM", true);
-        assertEquals("homeGames", generator.objRelationshipName(r4));
+        assertEquals("homeGames", dbRelationshipName(r4));
 
         // multi-word qualifier and entity name
         DbRelationship r5 = makeRelationship("ARTIST_GROUP", "ID", "EXHIBIT", 
"PRIMARY_ARTIST_GROUP_ID", true);
-        assertEquals("primaryExhibits", generator.objRelationshipName(r5));
+        assertEquals("primaryExhibits", dbRelationshipName(r5));
 
         // FK role unrelated to the source entity name gets no qualifier
         DbRelationship r6 = makeRelationship("PERSON", "PERSON_ID", "PERSON", 
"MOTHER_ID", true);
-        assertEquals("people", generator.objRelationshipName(r6));
+        assertEquals("people", dbRelationshipName(r6));
 
         // FK ending with the entity name without a "_" boundary gets no 
qualifier
         DbRelationship r7 = makeRelationship("TEAM", "TEAM_ID", "GAME", 
"STEAM_ID", true);
-        assertEquals("games", generator.objRelationshipName(r7));
+        assertEquals("games", dbRelationshipName(r7));
     }
 
     @Test
-    public void 
objRelationshipName_ToMany_RoleQualifiedFk_FkDropsTablePrefix() {
+    public void dbRelationshipName_ToMany_RoleQualifiedFk_FkDropsTablePrefix() 
{
 
         // FK columns matching a "_"-token suffix of the entity name still 
carry the role...
         DbRelationship r1 = makeRelationship("nhl_team", "id", "nhl_game", 
"home_team_id", true);
-        assertEquals("homeNhlGames", generator.objRelationshipName(r1));
+        assertEquals("homeNhlGames", dbRelationshipName(r1));
 
         DbRelationship r2 = makeRelationship("nhl_team", "id", "nhl_game", 
"visiting_team_id", true);
-        assertEquals("visitingNhlGames", generator.objRelationshipName(r2));
+        assertEquals("visitingNhlGames", dbRelationshipName(r2));
 
         // ... and a plain suffix reference gets no qualifier
         DbRelationship r3 = makeRelationship("nhl_team", "id", "nhl_award", 
"team_id", true);
-        assertEquals("nhlAwards", generator.objRelationshipName(r3));
+        assertEquals("nhlAwards", dbRelationshipName(r3));
 
         DbRelationship r4 = makeRelationship("nhl_game_type", "id", 
"nhl_game", "type_id", true);
-        assertEquals("nhlGames", generator.objRelationshipName(r4));
-    }
-
-    @Test
-    public void dbRelationshipName_ToMany_RoleQualifiedFk() {
-
-        DbRelationship r1 = makeRelationship("TEAM", "TEAM_ID", "GAME", 
"HOME_TEAM_ID", true);
-        assertEquals("homeGames", generator.dbRelationshipName(r1.getJoins(), 
r1.isToMany()));
-
-        DbRelationship r2 = makeRelationship("TEAM", "TEAM_ID", "GAME", 
"AWAY_TEAM_ID", true);
-        assertEquals("awayGames", generator.dbRelationshipName(r2.getJoins(), 
r2.isToMany()));
-    }
-
-    @Test
-    public void dbRelationshipName() {
-
-        DbRelationship r1 = makeRelationship("painting", "artist_id", 
"artist", "artist_id", false);
-        assertEquals("artist", generator.dbRelationshipName(r1.getJoins(), 
r1.isToMany()));
-
-        DbRelationship r2 = makeRelationship("artist", "artist_id", 
"painting", "artist_id", true);
-        assertEquals("paintings", generator.dbRelationshipName(r2.getJoins(), 
r2.isToMany()));
-
-        DbRelationship r3 = makeRelationship("person", "shipping_address_id", 
"address", "id", false);
-        assertEquals("shippingAddress", 
generator.dbRelationshipName(r3.getJoins(), r3.isToMany()));
+        assertEquals("nhlGames", dbRelationshipName(r4));
     }
 
     @Test
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/PatternObjectNameGeneratorTest.java
 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/PatternObjectNameGeneratorTest.java
index 468c8a86a..554aeeeb9 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/PatternObjectNameGeneratorTest.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/PatternObjectNameGeneratorTest.java
@@ -44,16 +44,16 @@ public class PatternObjectNameGeneratorTest {
     }
 
     @Test
-    public void objRelationshipName_ToMany_RoleQualifiedFk() {
+    public void dbRelationshipName_ToMany_RoleQualifiedFk() {
         PatternObjectNameGenerator generator = new 
PatternObjectNameGenerator("^AA_");
 
         // the stripped prefix is transparent to role qualifier matching...
         DbRelationship r1 = makeRelationship("AA_TEAM", "TEAM_ID", "AA_GAME", 
"HOME_TEAM_ID", true);
-        assertEquals("homeGames", generator.objRelationshipName(r1));
+        assertEquals("homeGames", generator.dbRelationshipName(r1.getJoins(), 
r1.isToMany()));
 
         // ... and doesn't itself become a qualifier when the FK column 
carries it too
         DbRelationship r2 = makeRelationship("AA_TEAM", "TEAM_ID", "AA_GAME", 
"AA_TEAM_ID", true);
-        assertEquals("games", generator.objRelationshipName(r2));
+        assertEquals("games", generator.dbRelationshipName(r2.getJoins(), 
r2.isToMany()));
     }
 
     @Test
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateObjEntityAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateObjEntityAction.java
index 0f0d10558..5a6e5f319 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateObjEntityAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateObjEntityAction.java
@@ -97,10 +97,12 @@ public class CreateObjEntityAction extends AppAction {
 
         dataMap.addObjEntity(entity);
 
-        // TODO: Modeler-controlled defaults for all the hardcoded boolean 
flags here.
-        EntityMergeSupport merger = new EntityMergeSupport(new 
DefaultObjectNameGenerator(),
-                NamePatternMatcher.EXCLUDE_ALL, true, false);
-        merger.setNameGenerator(new 
DbEntitySyncAction.PreserveRelationshipNameGenerator());
+        EntityMergeSupport merger = new EntityMergeSupport(
+                new DefaultObjectNameGenerator(),
+                NamePatternMatcher.EXCLUDE_ALL,
+                true,
+                false);
+
         
merger.addEntityMergeListener(DeleteRuleUpdater.getEntityMergeListener());
         merger.synchronizeWithDbEntity(entity);
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DbEntitySyncAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DbEntitySyncAction.java
index 30d81d15d..5270036cf 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DbEntitySyncAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DbEntitySyncAction.java
@@ -21,10 +21,8 @@ package org.apache.cayenne.modeler.ui.action;
 
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.dbsync.merge.context.EntityMergeSupport;
-import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.event.model.ObjEntityEvent;
@@ -79,8 +77,6 @@ public class DbEntitySyncAction extends AppAction {
                 return;
             }
 
-            merger.setNameGenerator(new PreserveRelationshipNameGenerator());
-
             DbEntitySyncUndoableEdit undoableEdit = new 
DbEntitySyncUndoableEdit(session,
                     (DataChannelDescriptor) session.project().getRootNode(), 
session.getSelectedDataMap());
 
@@ -124,22 +120,4 @@ public class DbEntitySyncAction extends AppAction {
     private void filterInheritedEntities(final Collection<ObjEntity> entities) 
{
         entities.removeIf(e -> e.getSuperEntity() != null);
     }
-
-    static class PreserveRelationshipNameGenerator extends 
DefaultObjectNameGenerator {
-
-        @Override
-        public String objRelationshipName(DbRelationship... relationshipChain) 
{
-            if (relationshipChain.length == 0) {
-                return super.objRelationshipName(relationshipChain);
-            }
-
-            DbRelationship last = relationshipChain[relationshipChain.length - 
1];
-            if (last.getName().startsWith("untitledRel")) {
-                return super.objRelationshipName(relationshipChain);
-            }
-
-            // keep manually set relationship name
-            return last.getName();
-        }
-    }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ObjEntitySyncAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ObjEntitySyncAction.java
index a96833b3e..5d05ab8f3 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ObjEntitySyncAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ObjEntitySyncAction.java
@@ -78,8 +78,6 @@ public class ObjEntitySyncAction extends AppAction {
                 return;
             }
 
-            merger.setNameGenerator(new 
DbEntitySyncAction.PreserveRelationshipNameGenerator());
-
             if (merger.synchronizeWithDbEntity(entity)) {
                 session
                         .fireObjEntityEvent(ObjEntityEvent.ofChange(this, 
entity));
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncDialog.java
index c0f4eb942..49f91441c 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncDialog.java
@@ -24,12 +24,11 @@ import com.jgoodies.forms.layout.CellConstraints;
 import com.jgoodies.forms.layout.FormLayout;
 import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
 import org.apache.cayenne.dbsync.merge.context.EntityMergeSupport;
-import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
 import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
+import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.NameGeneratorPreferences;
 import org.apache.cayenne.modeler.toolkit.AppDialog;
 
 import javax.swing.*;
@@ -86,37 +85,33 @@ public class EntitySyncDialog extends AppDialog {
             return null;
         }
 
-        ObjectNameGenerator namingStrategy;
-        try {
-            namingStrategy = 
NameGeneratorPreferences.getInstance().createNamingStrategy(app);
-        } catch (Throwable e) {
-            namingStrategy = new DefaultObjectNameGenerator();
-        }
+        ObjectNameGenerator nameGenerator = new DefaultObjectNameGenerator();
 
-        // TODO: Modeler-controlled defaults for all the hardcoded boolean 
flags here.
-        EntityMergeSupport merger = new EntityMergeSupport(namingStrategy, 
NamePatternMatcher.EXCLUDE_ALL, true, false);
+        EntityMergeSupport merger = new EntityMergeSupport(
+                nameGenerator,
+                NamePatternMatcher.EXCLUDE_ALL,
+                true,
+                false);
 
         for (ObjEntity entity : entities) {
             if (!merger.getMeaningfulFKs(entity).isEmpty()) {
-                return confirmMeaningfulFKs(namingStrategy);
+                return confirmMeaningfulFKs(nameGenerator);
             }
         }
 
         return merger;
     }
 
-    private EntityMergeSupport confirmMeaningfulFKs(ObjectNameGenerator 
namingStrategy) {
+    private EntityMergeSupport confirmMeaningfulFKs(ObjectNameGenerator 
nameGenerator) {
         pack();
         setDefaultCloseOperation(DISPOSE_ON_CLOSE);
         centerOnOwner();
         makeCloseableOnEscape();
         setVisible(true);
 
-        if (cancelled) {
-            return null;
-        }
-        // TODO: Modeler-controlled defaults for all the hardcoded flags here.
-        return new EntityMergeSupport(namingStrategy, 
NamePatternMatcher.EXCLUDE_ALL, removeFKs.isSelected(), false);
+        return cancelled
+                ? null
+                : new EntityMergeSupport(nameGenerator, 
NamePatternMatcher.EXCLUDE_ALL, removeFKs.isSelected(), false);
     }
 
     private Collection<ObjEntity> objEntities() {

Reply via email to