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


The following commit(s) were added to refs/heads/master by this push:
     new ab400891f Modeler cleanup
ab400891f is described below

commit ab400891fa7a08c9d2214a432bd57dfcf4149f64
Author: Andrus Adamchik <[email protected]>
AuthorDate: Wed Apr 29 17:17:12 2026 -0400

    Modeler cleanup
---
 .../cayenne/modeler/pref/DBConnectionInfo.java     | 628 ++++++++++-----------
 .../modeler/ui/action/ImportEOModelAction.java     |   2 +-
 .../modeler/ui/action/ModelerAbstractAction.java   |   2 +-
 .../modeler/ui/action/OpenProjectAction.java       |   2 +-
 .../cayenne/modeler/ui/action/PasteAction.java     |   2 +-
 .../cayenne/modeler/ui/action/RemoveAction.java    |   2 +-
 .../InferRelationshipsController.java              |   6 +-
 .../autorelationship/InferRelationshipsDialog.java |   2 +-
 .../ui/confirmremove/ConfirmRemoveDialog.java      |  16 +-
 .../ui/datasource/DataSourceController.java        |   2 +-
 .../ui/dbgen/DBGeneratorOptionsController.java     |   2 +-
 .../ui/dbmerge/MergerOptionsController.java        |   2 +-
 .../ui/entitysync/EntitySyncController.java        |   4 +-
 .../modeler/ui/errors/ErrorsController.java        |   8 +-
 .../datamap/dbimport/DatabaseSchemaLoader.java     |  11 +-
 .../dbimport/ReverseEngineeringConfigPanel.java    |   4 +-
 .../dbimport/action/LoadDbSchemaAction.java        |   6 +-
 .../dbimport/runner/ModelerDbLoaderContext.java    |   2 +-
 .../modeler/util/NameGeneratorPreferences.java     |  34 +-
 19 files changed, 354 insertions(+), 383 deletions(-)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DBConnectionInfo.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DBConnectionInfo.java
index d08bc1443..e334cd3e9 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DBConnectionInfo.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DBConnectionInfo.java
@@ -21,9 +21,9 @@ package org.apache.cayenne.modeler.pref;
 
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.configuration.DataSourceDescriptor;
+import org.apache.cayenne.configuration.runtime.DbAdapterFactory;
 import org.apache.cayenne.datasource.DriverDataSource;
 import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.service.classloader.ModelerClassLoader;
 import org.apache.cayenne.util.Util;
 
@@ -38,330 +38,304 @@ import java.util.prefs.Preferences;
 
 public class DBConnectionInfo extends CayennePreference {
 
-       private static final String EMPTY_STRING = "";
-       public static final String DB_ADAPTER_PROPERTY = "dbAdapter";
-       public static final String JDBC_DRIVER_PROPERTY = "jdbcDriver";
-       public static final String PASSWORD_PROPERTY = "password";
-       public static final String URL_PROPERTY = "url";
-       public static final String USER_NAME_PROPERTY = "userName";
-       private static final String DB_CONNECTION_INFO = "dbConnectionInfo";
-
-       private String nodeName;
-
-       private String dbAdapter;
-       private String jdbcDriver;
-       private String password;
-       private String url;
-       private String userName;
-
-       private boolean allowDataSourceFailure;
-
-       public DBConnectionInfo() {
-               this.currentPreference = 
CayennePreference.getRoot().node(DB_CONNECTION_INFO);
-       };
-
-       public DBConnectionInfo(final String nameNode, final boolean 
initFromPreferences) {
-               this();
-               setNodeName(nameNode);
-               if (initFromPreferences) {
-                       initObjectPreference();
-               }
-       };
-
-       @Override
-       public Preferences getCurrentPreference() {
-               if (getNodeName() == null) {
-                       return super.getCurrentPreference();
-               }
-               return currentPreference.node(getNodeName());
-       }
-
-       public void setAllowDataSourceFailure(boolean allowDataSourceFailure) {
-               this.allowDataSourceFailure = allowDataSourceFailure;
-       }
-
-       @Override
-       public void saveObjectPreference() {
-               if (getCurrentPreference() != null) {
-                       if (getDbAdapter() != null) {
-                               getCurrentPreference().put(DB_ADAPTER_PROPERTY, 
getDbAdapter());
-                       }
-                       if (getUrl() != null) {
-                               getCurrentPreference().put(URL_PROPERTY, 
getUrl());
-                       }
-                       if (getUserName() != null) {
-                               getCurrentPreference().put(USER_NAME_PROPERTY, 
getUserName());
-                       }
-                       if (getPassword() != null) {
-                               getCurrentPreference().put(PASSWORD_PROPERTY, 
getPassword());
-                       }
-                       if (getJdbcDriver() != null) {
-                               
getCurrentPreference().put(JDBC_DRIVER_PROPERTY, getJdbcDriver());
-                       }
-               }
-       }
-
-       public void initObjectPreference() {
-               if (getCurrentPreference() != null) {
-                       
setDbAdapter(getCurrentPreference().get(DB_ADAPTER_PROPERTY, null));
-                       setUrl(getCurrentPreference().get(URL_PROPERTY, null));
-                       
setUserName(getCurrentPreference().get(USER_NAME_PROPERTY, null));
-                       
setPassword(getCurrentPreference().get(PASSWORD_PROPERTY, null));
-                       
setJdbcDriver(getCurrentPreference().get(JDBC_DRIVER_PROPERTY, null));
-                       setNodeName(getCurrentPreference().name());
-               }
-       }
-
-       public String getNodeName() {
-               return nodeName;
-       }
-
-       public void setNodeName(final String nodeName) {
-               this.nodeName = nodeName;
-       }
-
-       public String getDbAdapter() {
-               return dbAdapter;
-       }
-
-       public void setDbAdapter(final String dbAdapter) {
-               this.dbAdapter = dbAdapter;
-       }
-
-       public String getJdbcDriver() {
-               return jdbcDriver;
-       }
-
-       public void setJdbcDriver(final String jdbcDriver) {
-               this.jdbcDriver = jdbcDriver;
-       }
-
-       public String getPassword() {
-               return password == null ? EMPTY_STRING : password;
-       }
-
-       public void setPassword(final String password) {
-               this.password = password;
-       }
-
-       public String getUrl() {
-               return url;
-       }
-
-       public void setUrl(final String url) {
-               this.url = url;
-       }
-
-       public String getUserName() {
-               return userName == null ? EMPTY_STRING : userName;
-       }
-
-       public void setUserName(final String userName) {
-               this.userName = userName;
-       }
-
-       /**
-        * Creates a DbAdapter based on configured values.
-        */
-       public DbAdapter makeAdapter(final ModelerClassLoader classLoader) 
throws Exception {
-               DataNodeDescriptor descriptor = new DataNodeDescriptor();
-               descriptor.setAdapterType(getDbAdapter());
-               DataSource dataSource = makeDataSource(classLoader);
-               return 
Application.getInstance().getDbAdapterFactory().createAdapter(descriptor, 
dataSource);
-       }
-
-       /**
-        * Returns a DataSource that uses connection information from this 
object.
-        * Returned DataSource is not pooling its connections. It can be 
wrapped in
-        * PoolManager if pooling is needed.
-        */
-       public DataSource makeDataSource(final ModelerClassLoader classLoader) 
throws SQLException {
-
-               // validate...
-               if (getJdbcDriver() == null) {
-                       if(allowDataSourceFailure) {
-                               return new DeferredDataSource(classLoader);
-                       }
-                       throw new SQLException("No JDBC driver set.");
-               }
-
-               if (getUrl() == null) {
-                       if(allowDataSourceFailure) {
-                               return new DeferredDataSource(classLoader);
-                       }
-                       throw new SQLException("No DB URL set.");
-               }
-
-               if (!Util.isBlank(getPassword()) && 
Util.isBlank(getUserName())) {
-                       throw new SQLException("No username when password is 
set.");
-               }
-
-               // load driver...
-               Driver driver = null;
-
-               try {
-                       driver = classLoader.loadClass(Driver.class, 
getJdbcDriver()).getDeclaredConstructor().newInstance();
-               } catch (Throwable th) {
-                       throw new SQLException("Driver load error: " + 
Util.unwindException(th).getLocalizedMessage());
-               }
-
-               return new DriverDataSource(driver, getUrl(), getUserName(), 
getPassword());
-       }
-
-       /**
-        * Updates another DBConnectionInfo with this object's values.
-        */
-       public boolean copyTo(final DBConnectionInfo dataSourceInfo) {
-               boolean updated = false;
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getUrl(), getUrl())) {
-                       dataSourceInfo.setUrl(getUrl());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getUserName(), 
getUserName())) {
-                       dataSourceInfo.setUserName(getUserName());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getPassword(), 
getPassword())) {
-                       dataSourceInfo.setPassword(getPassword());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getJdbcDriver(), 
getJdbcDriver())) {
-                       dataSourceInfo.setJdbcDriver(getJdbcDriver());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getDbAdapter(), 
getDbAdapter())) {
-                       dataSourceInfo.setDbAdapter(getDbAdapter());
-                       updated = true;
-               }
-
-               return updated;
-       }
-
-       /**
-        * Updates DataSourceInfo with this object's values.
-        * <p>
-        * <i>Currently doesn't set the adapter property. Need to change the UI 
to
-        * handle adapter via DataSourceInfo first, and then it should be safe 
to do
-        * an adapter update here. </i>
-        * </p>
-        */
-       public boolean copyTo(final DataSourceDescriptor dataSourceInfo) {
-               boolean updated = false;
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getDataSourceUrl(), 
getUrl())) {
-                       dataSourceInfo.setDataSourceUrl(getUrl());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getUserName(), 
getUserName())) {
-                       dataSourceInfo.setUserName(getUserName());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getPassword(), 
getPassword())) {
-                       dataSourceInfo.setPassword(getPassword());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getJdbcDriver(), 
getJdbcDriver())) {
-                       dataSourceInfo.setJdbcDriver(getJdbcDriver());
-                       updated = true;
-               }
-
-               return updated;
-       }
-
-       public boolean copyFrom(final DataSourceDescriptor dataSourceInfo) {
-               boolean updated = false;
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getDataSourceUrl(), 
getUrl())) {
-                       setUrl(dataSourceInfo.getDataSourceUrl());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getUserName(), 
getUserName())) {
-                       setUserName(dataSourceInfo.getUserName());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getPassword(), 
getPassword())) {
-                       setPassword(dataSourceInfo.getPassword());
-                       updated = true;
-               }
-
-               if (!Util.nullSafeEquals(dataSourceInfo.getJdbcDriver(), 
getJdbcDriver())) {
-                       setJdbcDriver(dataSourceInfo.getJdbcDriver());
-                       updated = true;
-               }
-
-               return updated;
-       }
-
-       private class DeferredDataSource implements DataSource {
-
-               private final ModelerClassLoader classLoader;
-
-               public DeferredDataSource(ModelerClassLoader classLoader) {
-                       this.classLoader = classLoader;
-               }
-
-               DataSource getDeferredDataSource() throws SQLException {
-                       allowDataSourceFailure = false;
-                       return makeDataSource(classLoader);
-               }
-
-               @Override
-               public Connection getConnection() throws SQLException {
-                       return getDeferredDataSource().getConnection();
-               }
-
-               @Override
-               public Connection getConnection(String username, String 
password) throws SQLException {
-                       return getDeferredDataSource().getConnection(username, 
password);
-               }
-
-               @Override
-               public PrintWriter getLogWriter() throws SQLException {
-                       return getDeferredDataSource().getLogWriter();
-               }
-
-               @Override
-               public void setLogWriter(PrintWriter out) throws SQLException {
-                       getDeferredDataSource().setLogWriter(out);
-               }
-
-               @Override
-               public void setLoginTimeout(int seconds) throws SQLException {
-                       getDeferredDataSource().setLoginTimeout(seconds);
-               }
-
-               @Override
-               public int getLoginTimeout() throws SQLException {
-                       return getDeferredDataSource().getLoginTimeout();
-               }
-
-               @Override
-               public <T> T unwrap(Class<T> iface) throws SQLException {
-                       return getDeferredDataSource().unwrap(iface);
-               }
-
-               @Override
-               public boolean isWrapperFor(Class<?> iface) throws SQLException 
{
-                       return getDeferredDataSource().isWrapperFor(iface);
-               }
-
-               @Override
-               public Logger getParentLogger() throws 
SQLFeatureNotSupportedException {
-                       try {
-                               return 
getDeferredDataSource().getParentLogger();
-                       } catch (SQLException e) {
-                               throw new SQLFeatureNotSupportedException(e);
-                       }
-               }
-       }
+    private static final String EMPTY_STRING = "";
+    public static final String DB_ADAPTER_PROPERTY = "dbAdapter";
+    public static final String JDBC_DRIVER_PROPERTY = "jdbcDriver";
+    public static final String PASSWORD_PROPERTY = "password";
+    public static final String URL_PROPERTY = "url";
+    public static final String USER_NAME_PROPERTY = "userName";
+    private static final String DB_CONNECTION_INFO = "dbConnectionInfo";
+
+    private String nodeName;
+
+    private String dbAdapter;
+    private String jdbcDriver;
+    private String password;
+    private String url;
+    private String userName;
+
+    private boolean allowDataSourceFailure;
+
+    public DBConnectionInfo() {
+        this.currentPreference = 
CayennePreference.getRoot().node(DB_CONNECTION_INFO);
+    }
+
+    public DBConnectionInfo(String nameNode, boolean initFromPreferences) {
+        this();
+        setNodeName(nameNode);
+        if (initFromPreferences) {
+            initObjectPreference();
+        }
+    }
+
+    @Override
+    public Preferences getCurrentPreference() {
+        if (getNodeName() == null) {
+            return super.getCurrentPreference();
+        }
+        return currentPreference.node(getNodeName());
+    }
+
+    public void setAllowDataSourceFailure(boolean allowDataSourceFailure) {
+        this.allowDataSourceFailure = allowDataSourceFailure;
+    }
+
+    @Override
+    public void saveObjectPreference() {
+        if (getCurrentPreference() != null) {
+            if (getDbAdapter() != null) {
+                getCurrentPreference().put(DB_ADAPTER_PROPERTY, 
getDbAdapter());
+            }
+            if (getUrl() != null) {
+                getCurrentPreference().put(URL_PROPERTY, getUrl());
+            }
+            if (getUserName() != null) {
+                getCurrentPreference().put(USER_NAME_PROPERTY, getUserName());
+            }
+            if (getPassword() != null) {
+                getCurrentPreference().put(PASSWORD_PROPERTY, getPassword());
+            }
+            if (getJdbcDriver() != null) {
+                getCurrentPreference().put(JDBC_DRIVER_PROPERTY, 
getJdbcDriver());
+            }
+        }
+    }
+
+    public void initObjectPreference() {
+        if (getCurrentPreference() != null) {
+            setDbAdapter(getCurrentPreference().get(DB_ADAPTER_PROPERTY, 
null));
+            setUrl(getCurrentPreference().get(URL_PROPERTY, null));
+            setUserName(getCurrentPreference().get(USER_NAME_PROPERTY, null));
+            setPassword(getCurrentPreference().get(PASSWORD_PROPERTY, null));
+            setJdbcDriver(getCurrentPreference().get(JDBC_DRIVER_PROPERTY, 
null));
+            setNodeName(getCurrentPreference().name());
+        }
+    }
+
+    public String getNodeName() {
+        return nodeName;
+    }
+
+    public void setNodeName(final String nodeName) {
+        this.nodeName = nodeName;
+    }
+
+    public String getDbAdapter() {
+        return dbAdapter;
+    }
+
+    public void setDbAdapter(final String dbAdapter) {
+        this.dbAdapter = dbAdapter;
+    }
+
+    public String getJdbcDriver() {
+        return jdbcDriver;
+    }
+
+    public void setJdbcDriver(final String jdbcDriver) {
+        this.jdbcDriver = jdbcDriver;
+    }
+
+    public String getPassword() {
+        return password == null ? EMPTY_STRING : password;
+    }
+
+    public void setPassword(final String password) {
+        this.password = password;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(final String url) {
+        this.url = url;
+    }
+
+    public String getUserName() {
+        return userName == null ? EMPTY_STRING : userName;
+    }
+
+    public void setUserName(final String userName) {
+        this.userName = userName;
+    }
+
+    /**
+     * Creates a DbAdapter based on configured values.
+     */
+    public DbAdapter makeAdapter(ModelerClassLoader classLoader, 
DbAdapterFactory adapterFactory) throws Exception {
+        DataNodeDescriptor descriptor = new DataNodeDescriptor();
+        descriptor.setAdapterType(getDbAdapter());
+        DataSource dataSource = makeDataSource(classLoader);
+        return adapterFactory.createAdapter(descriptor, dataSource);
+    }
+
+    /**
+     * Returns a DataSource that uses connection information from this object.
+     * Returned DataSource is not pooling its connections. It can be wrapped in
+     * PoolManager if pooling is needed.
+     */
+    public DataSource makeDataSource(ModelerClassLoader classLoader) throws 
SQLException {
+
+        // validate...
+        if (getJdbcDriver() == null) {
+            if (allowDataSourceFailure) {
+                return new DeferredDataSource(classLoader);
+            }
+            throw new SQLException("No JDBC driver set.");
+        }
+
+        if (getUrl() == null) {
+            if (allowDataSourceFailure) {
+                return new DeferredDataSource(classLoader);
+            }
+            throw new SQLException("No DB URL set.");
+        }
+
+        if (!Util.isBlank(getPassword()) && Util.isBlank(getUserName())) {
+            throw new SQLException("No username when password is set.");
+        }
+
+        // load driver...
+        Driver driver;
+
+        try {
+            driver = classLoader.loadClass(Driver.class, 
getJdbcDriver()).getDeclaredConstructor().newInstance();
+        } catch (Throwable th) {
+            throw new SQLException("Driver load error: " + 
Util.unwindException(th).getLocalizedMessage());
+        }
+
+        return new DriverDataSource(driver, getUrl(), getUserName(), 
getPassword());
+    }
+
+    /**
+     * Updates another DBConnectionInfo with this object's values.
+     */
+    public boolean copyTo(DBConnectionInfo dataSourceInfo) {
+        boolean updated = false;
+
+        if (!Util.nullSafeEquals(dataSourceInfo.getUrl(), getUrl())) {
+            dataSourceInfo.setUrl(getUrl());
+            updated = true;
+        }
+
+        if (!Util.nullSafeEquals(dataSourceInfo.getUserName(), getUserName())) 
{
+            dataSourceInfo.setUserName(getUserName());
+            updated = true;
+        }
+
+        if (!Util.nullSafeEquals(dataSourceInfo.getPassword(), getPassword())) 
{
+            dataSourceInfo.setPassword(getPassword());
+            updated = true;
+        }
+
+        if (!Util.nullSafeEquals(dataSourceInfo.getJdbcDriver(), 
getJdbcDriver())) {
+            dataSourceInfo.setJdbcDriver(getJdbcDriver());
+            updated = true;
+        }
+
+        if (!Util.nullSafeEquals(dataSourceInfo.getDbAdapter(), 
getDbAdapter())) {
+            dataSourceInfo.setDbAdapter(getDbAdapter());
+            updated = true;
+        }
+
+        return updated;
+    }
+
+    /**
+     * Updates DataSourceInfo with this object's values.
+     * <p>
+     * <i>Currently doesn't set the adapter property. Need to change the UI to
+     * handle adapter via DataSourceInfo first, and then it should be safe to 
do
+     * an adapter update here. </i>
+     * </p>
+     */
+    public boolean copyTo(final DataSourceDescriptor dataSourceInfo) {
+        boolean updated = false;
+
+        if (!Util.nullSafeEquals(dataSourceInfo.getDataSourceUrl(), getUrl())) 
{
+            dataSourceInfo.setDataSourceUrl(getUrl());
+            updated = true;
+        }
+
+        if (!Util.nullSafeEquals(dataSourceInfo.getUserName(), getUserName())) 
{
+            dataSourceInfo.setUserName(getUserName());
+            updated = true;
+        }
+
+        if (!Util.nullSafeEquals(dataSourceInfo.getPassword(), getPassword())) 
{
+            dataSourceInfo.setPassword(getPassword());
+            updated = true;
+        }
+
+        if (!Util.nullSafeEquals(dataSourceInfo.getJdbcDriver(), 
getJdbcDriver())) {
+            dataSourceInfo.setJdbcDriver(getJdbcDriver());
+            updated = true;
+        }
+
+        return updated;
+    }
+
+    private class DeferredDataSource implements DataSource {
+
+        private final ModelerClassLoader classLoader;
+
+        public DeferredDataSource(ModelerClassLoader classLoader) {
+            this.classLoader = classLoader;
+        }
+
+        DataSource getDeferredDataSource() throws SQLException {
+            allowDataSourceFailure = false;
+            return makeDataSource(classLoader);
+        }
+
+        @Override
+        public Connection getConnection() throws SQLException {
+            return getDeferredDataSource().getConnection();
+        }
+
+        @Override
+        public Connection getConnection(String username, String password) 
throws SQLException {
+            return getDeferredDataSource().getConnection(username, password);
+        }
+
+        @Override
+        public PrintWriter getLogWriter() throws SQLException {
+            return getDeferredDataSource().getLogWriter();
+        }
+
+        @Override
+        public void setLogWriter(PrintWriter out) throws SQLException {
+            getDeferredDataSource().setLogWriter(out);
+        }
+
+        @Override
+        public void setLoginTimeout(int seconds) throws SQLException {
+            getDeferredDataSource().setLoginTimeout(seconds);
+        }
+
+        @Override
+        public int getLoginTimeout() throws SQLException {
+            return getDeferredDataSource().getLoginTimeout();
+        }
+
+        @Override
+        public <T> T unwrap(Class<T> iface) throws SQLException {
+            return getDeferredDataSource().unwrap(iface);
+        }
+
+        @Override
+        public boolean isWrapperFor(Class<?> iface) throws SQLException {
+            return getDeferredDataSource().isWrapperFor(iface);
+        }
+
+        @Override
+        public Logger getParentLogger() throws SQLFeatureNotSupportedException 
{
+            try {
+                return getDeferredDataSource().getParentLogger();
+            } catch (SQLException e) {
+                throw new SQLFeatureNotSupportedException(e);
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java
index fb25dab46..70751c25b 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java
@@ -159,7 +159,7 @@ public class ImportEOModelAction extends 
ModelerAbstractAction {
 
             } catch (Exception ex) {
                 LOGGER.info("EOModel Loading Exception", ex);
-                ErrorsController.guiException(ex);
+                ErrorsController.guiException(application, ex);
             }
 
         }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ModelerAbstractAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ModelerAbstractAction.java
index 9f7343896..016397865 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ModelerAbstractAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ModelerAbstractAction.java
@@ -146,7 +146,7 @@ public abstract class ModelerAbstractAction extends 
AbstractAction {
             performAction(e);
         }
         catch (Throwable th) {
-            ErrorsController.guiException(th);
+            ErrorsController.guiException(application, th);
         }
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/OpenProjectAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/OpenProjectAction.java
index ee10e4238..4415b59ba 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/OpenProjectAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/OpenProjectAction.java
@@ -179,7 +179,7 @@ public class OpenProjectAction extends ProjectAction {
             openProjectResourse(rootSource, controller);
         } catch (Exception ex) {
             LOGGER.warn("Error loading project file.", ex);
-            ErrorsController.guiWarning(ex, "Error loading project");
+            ErrorsController.guiWarning(application, ex, "Error loading 
project");
         }
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/PasteAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/PasteAction.java
index eea1a33ff..9e4c990c7 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/PasteAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/PasteAction.java
@@ -135,7 +135,7 @@ public class PasteAction extends ModelerAbstractAction 
implements FlavorListener
         } catch (UnsupportedFlavorException ufe) {
             // do nothing
         } catch (Exception ex) {
-            ErrorsController.guiException(ex);
+            ErrorsController.guiException(application, ex);
         }
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/RemoveAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/RemoveAction.java
index ad118afdc..1b92a8fbc 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/RemoveAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/RemoveAction.java
@@ -104,7 +104,7 @@ public class RemoveAction extends ModelerAbstractAction {
      * @param allowAsking If false, no question will be asked no matter what 
settings are
      */
     public ConfirmRemoveDialog getConfirmDeleteDialog(boolean allowAsking) {
-        return new ConfirmRemoveDialog(allowAsking);
+        return new ConfirmRemoveDialog(application, allowAsking);
     }
 
     @Override
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsController.java
index ff5b5c389..a3d371dce 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsController.java
@@ -66,7 +66,7 @@ public class InferRelationshipsController extends 
ChildController<RootController
         this.selectedEntities = new HashSet<>();
         this.strategy = createNamingStrategy(NameGeneratorPreferences
                 .getInstance()
-                .getLastUsedStrategies()
+                .getLastUsedStrategies(application)
                 .get(0));
         setNamingStrategy(strategy);
         setRelationships();
@@ -324,9 +324,9 @@ public class InferRelationshipsController extends 
ChildController<RootController
             if (strategy == null) {
                 return;
             }
-            
NameGeneratorPreferences.getInstance().addToLastUsedStrategies(strategyClass);
+            
NameGeneratorPreferences.getInstance().addToLastUsedStrategies(application, 
strategyClass);
             view.getStrategyCombo().setModel(
-                    new 
DefaultComboBoxModel<>(NameGeneratorPreferences.getInstance().getLastUsedStrategies()));
+                    new 
DefaultComboBoxModel<>(NameGeneratorPreferences.getInstance().getLastUsedStrategies(application)));
         } catch (Throwable th) {
             LOGGER.error("Error in " + getClass().getName(), th);
             return;
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
index 0830e17fb..c6ed372a8 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
@@ -83,7 +83,7 @@ public class InferRelationshipsDialog extends JDialog {
         this.choice = CANCEL;
 
         strategyCombo.setModel(new DefaultComboBoxModel(
-                
NameGeneratorPreferences.getInstance().getLastUsedStrategies()));
+                
NameGeneratorPreferences.getInstance().getLastUsedStrategies(application)));
 
         setTitle("Infer Relationships");
     }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/confirmremove/ConfirmRemoveDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/confirmremove/ConfirmRemoveDialog.java
index 7665d59ea..7c41df275 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/confirmremove/ConfirmRemoveDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/confirmremove/ConfirmRemoveDialog.java
@@ -34,14 +34,16 @@ public class ConfirmRemoveDialog {
 
     private static final String DELETE = "Delete";
 
+    private final Application application;
+    private final boolean allowAsking;
+
     private boolean shouldDelete = true;
 
     /**
-     * If false, no question will be asked no matter what settings are
+     * @param allowAsking if false, no question will be asked no matter what 
settings are
      */
-    private boolean allowAsking;
-
-    public ConfirmRemoveDialog(boolean allowAsking) {
+    public ConfirmRemoveDialog(Application application, boolean allowAsking) {
+        this.application = application;
         this.allowAsking = allowAsking;
     }
 
@@ -57,14 +59,14 @@ public class ConfirmRemoveDialog {
         JOptionPane pane = new JOptionPane(message, 
JOptionPane.QUESTION_MESSAGE);
         pane.setOptions(new Object[]{ DELETE, "Cancel" });
         pane.setInitialValue(DELETE);
-        
pane.createDialog(Application.getInstance().getFrameController().getView(), 
"Confirm Delete").setVisible(true);
+        pane.createDialog(application.getFrameController().getView(), "Confirm 
Delete").setVisible(true);
 
         shouldDelete = DELETE.equals(pane.getValue());
 
         // If the user clicks "cancel" or window close button, we'll just 
ignore whatever's in the checkbox because
         // it's non-sensical.
         if (shouldDelete) {
-            Preferences pref = Application.getInstance().getPreferencesNode(
+            Preferences pref = application.getPreferencesNode(
                     GeneralPreferencesController.class,
                     "");
             pref.putBoolean(
@@ -80,7 +82,7 @@ public class ConfirmRemoveDialog {
     public boolean shouldDelete(String name) {
         if (allowAsking) {
 
-            Preferences pref = Application.getInstance().getPreferencesNode(
+            Preferences pref = application.getPreferencesNode(
                     GeneralPreferencesController.class,
                     "");
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/datasource/DataSourceController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/datasource/DataSourceController.java
index 5aadf5f9d..c8275e049 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/datasource/DataSourceController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/datasource/DataSourceController.java
@@ -182,7 +182,7 @@ public class DataSourceController extends 
ChildController<ProjectController> {
         // doing connection testing...
         try {
             try {
-                this.adapter = info.makeAdapter(classLoader);
+                this.adapter = info.makeAdapter(classLoader, 
getApplication().getDbAdapterFactory());
                 this.dataSource = info.makeDataSource(classLoader);
             } catch (SQLException ignore) {
                 showNoConnectorDialog("Unable to load driver '" + 
info.getJdbcDriver() + "'");
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbgen/DBGeneratorOptionsController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbgen/DBGeneratorOptionsController.java
index 6ea84d395..57c237d91 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbgen/DBGeneratorOptionsController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbgen/DBGeneratorOptionsController.java
@@ -123,7 +123,7 @@ public class DBGeneratorOptionsController extends 
ChildController<ProjectControl
      */
     protected void prepareGenerator() {
         try {
-            DbAdapter adapter = 
connectionInfo.makeAdapter(getApplication().getClassLoader());
+            DbAdapter adapter = 
connectionInfo.makeAdapter(getApplication().getClassLoader(), 
getApplication().getDbAdapterFactory());
             generators = new ArrayList<>();
             for (DataMap dataMap : dataMaps) {
                 this.generators.add(new DbGenerator(
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerOptionsController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerOptionsController.java
index 339e6b132..665bdbba3 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerOptionsController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerOptionsController.java
@@ -134,7 +134,7 @@ public class MergerOptionsController extends 
ChildController<ProjectController>
      */
     protected void prepareMigrator() {
         try {
-            adapter = 
connectionInfo.makeAdapter(getApplication().getClassLoader());
+            adapter = 
connectionInfo.makeAdapter(getApplication().getClassLoader(), 
getApplication().getDbAdapterFactory());
 
             MergerTokenFactory mergerTokenFactory = 
mergerTokenFactoryProvider.get(adapter);
             tokens.setMergerTokenFactory(mergerTokenFactory);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncController.java
index bba1ddf38..221840bb6 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncController.java
@@ -21,6 +21,8 @@ package org.apache.cayenne.modeler.ui.entitysync;
 
 import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
 import org.apache.cayenne.dbsync.merge.context.EntityMergeSupport;
+import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
+import org.apache.cayenne.dbsync.naming.NoStemStemmer;
 import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.ObjEntity;
@@ -65,7 +67,7 @@ public class EntitySyncController extends 
ChildController<RootController> {
         try {
             namingStrategy = 
NameGeneratorPreferences.getInstance().createNamingStrategy(application);
         } catch (Throwable e) {
-            namingStrategy = NameGeneratorPreferences.defaultNameGenerator();
+            namingStrategy = new 
DefaultObjectNameGenerator(NoStemStemmer.getInstance());
         }
 
         // TODO: Modeler-controlled defaults for all the hardcoded boolean 
flags here.
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorsController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorsController.java
index cf977a7e0..8c5c8bce6 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorsController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorsController.java
@@ -11,22 +11,22 @@ public class ErrorsController {
     /**
      * Shows an error dialog with stack trace
      */
-    public static void guiException(Throwable th) {
+    public static void guiException(Application application, Throwable th) {
         if (th != null) {
             LOGGER.error("CayenneModeler Error", th);
         }
 
-        new ErrorDialog(Application.getInstance(), "CayenneModeler Error", th, 
true, false).setVisible(true);
+        new ErrorDialog(application, "CayenneModeler Error", th, true, 
false).setVisible(true);
     }
 
     /**
      * Shows a warning dialog with stack trace
      */
-    public static void guiWarning(Throwable th, String message) {
+    public static void guiWarning(Application application, Throwable th, 
String message) {
         if (th != null) {
             LOGGER.warn("CayenneModeler Warning", th);
         }
 
-        new WarningDialog(Application.getInstance(), message, th, false, 
false).setDetailed(true);
+        new WarningDialog(application, message, th, false, 
false).setDetailed(true);
     }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DatabaseSchemaLoader.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DatabaseSchemaLoader.java
index d24d24cc8..393d07b8d 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DatabaseSchemaLoader.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DatabaseSchemaLoader.java
@@ -28,6 +28,7 @@ import java.util.Collection;
 import java.util.Comparator;
 import java.util.List;
 
+import org.apache.cayenne.configuration.runtime.DbAdapterFactory;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
 import org.apache.cayenne.dbsync.reverse.dbimport.FilterContainer;
@@ -47,14 +48,16 @@ public class DatabaseSchemaLoader {
     private static final String INCLUDE_ALL_PATTERN = "%";
 
     private final ReverseEngineering databaseReverseEngineering;
+    private final DbAdapterFactory adapterFactory;
 
-    public DatabaseSchemaLoader() {
-        databaseReverseEngineering = new ReverseEngineering();
+    public DatabaseSchemaLoader(DbAdapterFactory adapterFactory) {
+        this.adapterFactory = adapterFactory;
+        this.databaseReverseEngineering = new ReverseEngineering();
     }
 
     public ReverseEngineering load(DBConnectionInfo connectionInfo,
                                    ModelerClassLoader loadingService) throws 
Exception {
-        DbAdapter dbAdapter = connectionInfo.makeAdapter(loadingService);
+        DbAdapter dbAdapter = connectionInfo.makeAdapter(loadingService, 
adapterFactory);
         try (Connection connection = 
connectionInfo.makeDataSource(loadingService).getConnection()) {
             processCatalogs(connection, dbAdapter);
         }
@@ -128,7 +131,7 @@ public class DatabaseSchemaLoader {
                                          String[] tableTypesFromConfig) throws 
Exception {
         int pathIndex = 1;
         String catalogName = null, schemaName = null;
-        DbAdapter adapter = connectionInfo.makeAdapter(loadingService);
+        DbAdapter adapter = connectionInfo.makeAdapter(loadingService, 
adapterFactory);
 
         Object userObject = getUserObjectOrNull(path, pathIndex);
         if (userObject != null) {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringConfigPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringConfigPanel.java
index f90ea8eba..4b9dd502f 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringConfigPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringConfigPanel.java
@@ -97,7 +97,7 @@ public class ReverseEngineeringConfigPanel extends JPanel {
     void initStrategy(ReverseEngineering reverseEngineering) {
         Vector<String> arr = NameGeneratorPreferences
                 .getInstance()
-                .getLastUsedStrategies();
+                .getLastUsedStrategies(controller.getApplication());
         strategyCombo.setModel(new DefaultComboBoxModel<>(arr));
         strategyCombo.setSelectedItem(reverseEngineering.getNamingStrategy());
     }
@@ -184,7 +184,7 @@ public class ReverseEngineeringConfigPanel extends JPanel {
             String strategy = (String) 
ReverseEngineeringConfigPanel.this.getStrategyCombo().getSelectedItem();
             checkStrategy(strategy);
             getReverseEngineeringBySelectedMap().setNamingStrategy(strategy);
-            
NameGeneratorPreferences.getInstance().addToLastUsedStrategies(strategy);
+            
NameGeneratorPreferences.getInstance().addToLastUsedStrategies(controller.getApplication(),
 strategy);
             if (!dbImportView.isInitFromModel()) {
                 controller.setDirty(true);
             }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
index 5278d7517..313e0b98e 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
@@ -118,7 +118,7 @@ public class LoadDbSchemaAction extends 
DBConnectionAwareAction {
 
     private void loadDataBase(DBConnectionInfo connectionInfo) throws 
Exception {
         DraggableTreePanel draggableTreePanel = view.getDraggableTreePanel();
-        ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader()
+        ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader(application.getDbAdapterFactory())
                 .load(connectionInfo, application.getClassLoader());
         draggableTreePanel.getSourceTree()
                 .setEnabled(true);
@@ -131,7 +131,7 @@ public class LoadDbSchemaAction extends 
DBConnectionAwareAction {
 
     private void loadTables(DBConnectionInfo connectionInfo, TreePath 
tablePath) throws Exception {
         DraggableTreePanel draggableTreePanel = view.getDraggableTreePanel();
-        ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader()
+        ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader(application.getDbAdapterFactory())
                 .loadTables(connectionInfo,
                         application.getClassLoader(),
                         tablePath,
@@ -143,7 +143,7 @@ public class LoadDbSchemaAction extends 
DBConnectionAwareAction {
 
     private void loadColumns(DBConnectionInfo connectionInfo, TreePath 
tablePath) throws SQLException {
         DraggableTreePanel draggableTreePanel = view.getDraggableTreePanel();
-        ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader()
+        ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader(application.getDbAdapterFactory())
                 .loadColumns(connectionInfo, application.getClassLoader(), 
tablePath);
         draggableTreePanel.getSourceTree()
                 .update(databaseReverseEngineering,
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/runner/ModelerDbLoaderContext.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/runner/ModelerDbLoaderContext.java
index 7455022ba..5c80f290c 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/runner/ModelerDbLoaderContext.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/runner/ModelerDbLoaderContext.java
@@ -138,7 +138,7 @@ public class ModelerDbLoaderContext {
             ModelerClassLoader classLoader = application.getClassLoader();
             config.getDbLoaderConfig().setFiltersConfig(new 
FiltersConfigBuilder(reverseEngineering)
                     .dataSource(connectionInfo.makeDataSource(classLoader))
-                    .dbAdapter(connectionInfo.makeAdapter(classLoader))
+                    .dbAdapter(connectionInfo.makeAdapter(classLoader, 
application.getDbAdapterFactory()))
                     .build());
         } catch (Exception e) {
             processException(e, "Fail while building configs.");
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NameGeneratorPreferences.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NameGeneratorPreferences.java
index e6d568dce..d351c5942 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NameGeneratorPreferences.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NameGeneratorPreferences.java
@@ -19,7 +19,6 @@
 package org.apache.cayenne.modeler.util;
 
 import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
-import org.apache.cayenne.dbsync.naming.NoStemStemmer;
 import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
 import org.apache.cayenne.modeler.Application;
 
@@ -37,7 +36,7 @@ public class NameGeneratorPreferences {
     /**
      * Naming strategies to appear in combobox by default
      */
-    private static final Vector<String> PREDEFINED_STRATEGIES = new 
Vector<String>();
+    private static final Vector<String> PREDEFINED_STRATEGIES = new Vector<>();
     static {
         
PREDEFINED_STRATEGIES.add(DefaultObjectNameGenerator.class.getCanonicalName());
     }
@@ -48,33 +47,30 @@ public class NameGeneratorPreferences {
         return instance;
     }
 
-    Preferences getPreference() {
-        return Application.getInstance().getMainPreferenceForProject();
+    Preferences getPreference(Application application) {
+        return application.getMainPreferenceForProject();
     }
 
     /**
      * @return last used strategies, PREDEFINED_STRATEGIES by default
      */
-    public Vector<String> getLastUsedStrategies() {
+    public Vector<String> getLastUsedStrategies(Application application) {
 
-        String prop = null;
-
-        if (getPreference() != null) {
-            prop = getPreference().get(STRATEGIES_PREFERENCE, null);
-        }
+        Preferences pref = getPreference(application);
+        String prop = pref != null ? pref.get(STRATEGIES_PREFERENCE, null) : 
null;
 
         if (prop == null) {
             return PREDEFINED_STRATEGIES;
         }
 
-        return new Vector<String>(Arrays.asList(prop.split(",")));
+        return new Vector<>(Arrays.asList(prop.split(",")));
     }
 
     /**
      * Adds strategy to history
      */
-    public void addToLastUsedStrategies(String strategy) {
-        Vector<String> strategies = getLastUsedStrategies();
+    public void addToLastUsedStrategies(Application application, String 
strategy) {
+        Vector<String> strategies = getLastUsedStrategies(application);
 
         // move to top
         strategies.remove(strategy);
@@ -84,20 +80,14 @@ public class NameGeneratorPreferences {
         for (String str : strategies) {
             res.append(str).append(",");
         }
-        if (!strategies.isEmpty()) {
-            res.deleteCharAt(res.length() - 1);
-        }
+        res.deleteCharAt(res.length() - 1);
 
-        getPreference().put(STRATEGIES_PREFERENCE, res.toString());
+        getPreference(application).put(STRATEGIES_PREFERENCE, res.toString());
     }
 
     public ObjectNameGenerator createNamingStrategy(Application application) 
throws Exception {
 
         return application.getClassLoader()
-                .loadClass(ObjectNameGenerator.class, 
getLastUsedStrategies().get(0)).getDeclaredConstructor().newInstance();
-    }
-
-    public static ObjectNameGenerator defaultNameGenerator() {
-        return new DefaultObjectNameGenerator(NoStemStemmer.getInstance());
+                .loadClass(ObjectNameGenerator.class, 
getLastUsedStrategies(application).get(0)).getDeclaredConstructor().newInstance();
     }
 }


Reply via email to