You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2026/04/12 23:32:18 UTC

(cayenne) branch master updated: Modeler cleanup

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

aadamchik 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 2ff5bebd1 Modeler cleanup
2ff5bebd1 is described below

commit 2ff5bebd1a3880cd83c5f261d015851225fc235f
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Sun Apr 12 18:42:05 2026 -0400

    Modeler cleanup
    
    * IDE warnings, unused stuff
    * removing package.html ... kinda usless
    * unifying LOGGER declarations
---
 .../org/apache/cayenne/modeler/Application.java    |   2 +-
 .../cayenne/modeler/CayenneModelerController.java  |  13 +-
 .../main/java/org/apache/cayenne/modeler/Main.java |  14 +-
 .../apache/cayenne/modeler/ModelerPreferences.java |   4 +-
 .../apache/cayenne/modeler/ProjectController.java  | 589 ++++++++-------------
 .../apache/cayenne/modeler/ProjectTreeView.java    |   4 +-
 .../apache/cayenne/modeler/action/FindAction.java  |   3 +-
 .../modeler/action/ImportDataMapAction.java        |   4 +-
 .../modeler/action/ImportEOModelAction.java        |   4 +-
 .../cayenne/modeler/action/OpenProjectAction.java  |   6 +-
 .../cayenne/modeler/action/ProjectOpener.java      |   6 +-
 .../cayenne/modeler/dialog/DbJoinTableModel.java   |  63 +--
 .../modeler/dialog/DbRelationshipDialog.java       | 108 ++--
 .../cayenne/modeler/dialog/ErrorDebugDialog.java   |   6 +-
 .../InferRelationshipsController.java              |  20 +-
 .../cayenne/modeler/dialog/datadomain/package.html |  24 -
 .../datamap/DefaultsPreferencesController.java     |  12 +-
 .../modeler/dialog/db/DataSourceWizard.java        |  13 +-
 .../modeler/dialog/db/gen/DBGeneratorOptions.java  |  40 +-
 .../modeler/dialog/db/load/DbLoaderContext.java    |   2 +-
 .../modeler/dialog/db/load/LoadDataMapTask.java    |   2 +-
 .../modeler/dialog/db/merge/MergerOptions.java     |  11 +-
 .../apache/cayenne/modeler/dialog/db/package.html  |  23 -
 .../dialog/objentity/ObjAttributeInfoDialog.java   |   2 +-
 .../dialog/objentity/ObjRelationshipInfo.java      |  30 +-
 .../OverrideEmbeddableAttributeTableModel.java     |  83 ++-
 .../org/apache/cayenne/modeler/dialog/package.html |  24 -
 .../modeler/dialog/pref/ClasspathPreferences.java  |   4 +-
 .../modeler/dialog/pref/EncodingSelector.java      |  29 +-
 .../modeler/dialog/pref/GeneralPreferences.java    |   5 +-
 .../dialog/validator/ValidationDisplayHandler.java |   4 +-
 .../modeler/editor/AbstractCallbackMethodsTab.java |   4 +-
 .../editor/CallbackDescriptorTableModel.java       |  12 +-
 .../modeler/editor/EjbqlQueryScriptsTab.java       |   6 +-
 .../modeler/editor/EmbeddableAttributeTab.java     |  71 +--
 .../editor/EmbeddableAttributeTableModel.java      |   2 +-
 .../modeler/editor/ObjAttributeTableModel.java     |  28 +-
 .../modeler/editor/ObjEntityRelationshipPanel.java |   6 +-
 .../modeler/editor/ObjRelationshipTableModel.java  |   8 +-
 .../editor/ProcedureParameterTableModel.java       |   2 +-
 .../modeler/editor/SQLTemplateScriptsTab.java      |   4 +-
 .../modeler/editor/SelectPropertiesPanel.java      |   4 +-
 .../modeler/editor/cgen/CgenConfigController.java  |  14 +-
 .../modeler/editor/cgen/CgenController.java        |  36 +-
 .../cgen/templateeditor/EditorTemplateLoader.java  |   4 +-
 .../templateeditor/TemplateEditorController.java   |  64 +--
 .../editor/datanode/MainDataNodeEditor.java        |  24 +-
 .../editor/dbentity/DbAttributeTableModel.java     |   6 +-
 .../editor/dbentity/DbRelationshipTableModel.java  |  14 +-
 .../org/apache/cayenne/modeler/editor/package.html |  23 -
 .../modeler/graph/action/SaveAsImageAction.java    |   4 +-
 .../cayenne/modeler/pref/DataMapDefaults.java      | 162 +-----
 .../cayenne/modeler/util/CayenneController.java    |  59 +--
 .../cayenne/modeler/util/CayenneTableModel.java    |  50 +-
 .../cayenne/pref/CayennePreferenceEditor.java      |   4 +-
 .../components/textpane/JCayenneTextPane.java      |  14 +-
 .../modeler/CayenneModelerValidationIT.java        |   4 +-
 .../java/org/apache/cayenne/wocompat/package.html  |  26 -
 58 files changed, 635 insertions(+), 1174 deletions(-)

diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
index cca08a48b..b804c8cfd 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
@@ -230,7 +230,7 @@ public class Application {
         } catch (BackingStoreException ignored) {
         }
 
-        if (values.size() > 0) {
+        if (!values.isEmpty()) {
             classLoader.setPathFiles(values.stream().map(File::new).collect(Collectors.toList()));
         }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
index 5d5f30423..c2eb19a2b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
@@ -62,15 +62,10 @@ public class CayenneModelerController extends CayenneController {
 
     private static final ProjectStateUtil PROJECT_STATE_UTIL = new ProjectStateUtil();
 
-    private ProjectController projectController;
-
-    protected CayenneModelerFrame frame;
+    private final ProjectController projectController;
+    private final CayenneModelerFrame frame;
 	private EditorView editorView;
-
-	private DbImportController dbImportController;
-
-    public CayenneModelerController(){
-    }
+	private final DbImportController dbImportController;
 
     public CayenneModelerController(Application application) {
         super(application);
@@ -295,7 +290,7 @@ public class CayenneModelerController extends CayenneController {
         frame.getStatus().setText(message);
 
         // start message cleanup thread that would remove the message after X seconds
-        if (message != null && message.trim().length() > 0) {
+        if (message != null && !message.trim().isEmpty()) {
             new Thread(() -> {
                 try {
                     Thread.sleep(6 * 10000);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
index 3aa9097b3..35750a977 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
@@ -44,7 +44,7 @@ import java.util.prefs.Preferences;
  */
 public class Main {
 
-    private static Logger logger = LoggerFactory.getLogger(Main.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
 
     protected String[] args;
 
@@ -54,8 +54,7 @@ public class Main {
     public static void main(String[] args) {
         try {
             new Main(args).launch();
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
             e.printStackTrace();
             System.exit(1);
         }
@@ -68,17 +67,14 @@ public class Main {
     protected void launch() {
 
         // TODO: use module auto-loading...
-        final Injector injector = DIBootstrap.createInjector(appendModules(new ArrayList<Module>()));
+        Injector injector = DIBootstrap.createInjector(appendModules(new ArrayList<>()));
 
         // init look and feel before using any Swing classes...
         injector.getInstance(PlatformInitializer.class).initLookAndFeel();
 
         // logger should go after Look And Feel or Logger Console will be without style
-        logger.info("Starting CayenneModeler.");
-        logger.info("JRE v."
-                + System.getProperty("java.version")
-                + " at "
-                + System.getProperty("java.home"));
+        LOGGER.info("Starting CayenneModeler.");
+        LOGGER.info("JRE v.{} at {}", System.getProperty("java.version"), System.getProperty("java.home"));
 
         SwingUtilities.invokeLater(() -> {
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java
index eff3aa8cf..ce8b85b98 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java
@@ -44,7 +44,7 @@ public class ModelerPreferences implements PreferenceChangeListener {
 
     private static Preferences cayennePrefs;
 
-    private static final Logger logObj = LoggerFactory.getLogger(ModelerPreferences.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ModelerPreferences.class);
 
     /** Name of the log file. */
     public static final String LOGFILE_NAME = "modeler.log";
@@ -87,7 +87,7 @@ public class ModelerPreferences implements PreferenceChangeListener {
         try {
             keys = filesPrefs.keys();
         } catch (BackingStoreException e) {
-            logObj.warn("Error reading preferences file.", e);
+            LOGGER.warn("Error reading preferences file.", e);
             return new ArrayList<>();
         }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
index ea34c632c..70c7fdd38 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
@@ -19,19 +19,6 @@
 
 package org.apache.cayenne.modeler;
 
-import javax.swing.event.EventListenerList;
-import java.awt.Component;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.EventListener;
-import java.util.EventObject;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.prefs.Preferences;
-
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
@@ -82,46 +69,7 @@ import org.apache.cayenne.modeler.action.SaveAction;
 import org.apache.cayenne.modeler.action.SaveAsAction;
 import org.apache.cayenne.modeler.editor.CallbackType;
 import org.apache.cayenne.modeler.editor.ObjCallbackMethod;
-import org.apache.cayenne.modeler.event.AttributeDisplayEvent;
-import org.apache.cayenne.modeler.event.CallbackMethodEvent;
-import org.apache.cayenne.modeler.event.CallbackMethodListener;
-import org.apache.cayenne.modeler.event.DataMapDisplayEvent;
-import org.apache.cayenne.modeler.event.DataMapDisplayListener;
-import org.apache.cayenne.modeler.event.DataNodeDisplayEvent;
-import org.apache.cayenne.modeler.event.DataNodeDisplayListener;
-import org.apache.cayenne.modeler.event.DataSourceModificationEvent;
-import org.apache.cayenne.modeler.event.DataSourceModificationListener;
-import org.apache.cayenne.modeler.event.DbAttributeDisplayListener;
-import org.apache.cayenne.modeler.event.DbEntityDisplayListener;
-import org.apache.cayenne.modeler.event.DbRelationshipDisplayListener;
-import org.apache.cayenne.modeler.event.DisplayEvent;
-import org.apache.cayenne.modeler.event.DomainDisplayEvent;
-import org.apache.cayenne.modeler.event.DomainDisplayListener;
-import org.apache.cayenne.modeler.event.EmbeddableAttributeDisplayEvent;
-import org.apache.cayenne.modeler.event.EmbeddableAttributeDisplayListener;
-import org.apache.cayenne.modeler.event.EmbeddableDisplayEvent;
-import org.apache.cayenne.modeler.event.EmbeddableDisplayListener;
-import org.apache.cayenne.modeler.event.EntityDisplayEvent;
-import org.apache.cayenne.modeler.event.EntityListenerEvent;
-import org.apache.cayenne.modeler.event.EntityListenerListener;
-import org.apache.cayenne.modeler.event.MultipleObjectsDisplayEvent;
-import org.apache.cayenne.modeler.event.MultipleObjectsDisplayListener;
-import org.apache.cayenne.modeler.event.ObjAttributeDisplayListener;
-import org.apache.cayenne.modeler.event.ObjEntityDisplayListener;
-import org.apache.cayenne.modeler.event.ObjRelationshipDisplayListener;
-import org.apache.cayenne.modeler.event.ProcedureDisplayEvent;
-import org.apache.cayenne.modeler.event.ProcedureDisplayListener;
-import org.apache.cayenne.modeler.event.ProcedureParameterDisplayEvent;
-import org.apache.cayenne.modeler.event.ProcedureParameterDisplayListener;
-import org.apache.cayenne.modeler.event.ProjectOnSaveEvent;
-import org.apache.cayenne.modeler.event.ProjectOnSaveListener;
-import org.apache.cayenne.modeler.event.ProjectSavedEvent;
-import org.apache.cayenne.modeler.event.ProjectSavedListener;
-import org.apache.cayenne.modeler.event.QueryDisplayEvent;
-import org.apache.cayenne.modeler.event.QueryDisplayListener;
-import org.apache.cayenne.modeler.event.RelationshipDisplayEvent;
-import org.apache.cayenne.modeler.event.ValidationConfigDisplayEvent;
-import org.apache.cayenne.modeler.event.ValidationConfigDisplayListener;
+import org.apache.cayenne.modeler.event.*;
 import org.apache.cayenne.modeler.pref.DataMapDefaults;
 import org.apache.cayenne.modeler.pref.DataNodeDefaults;
 import org.apache.cayenne.modeler.pref.ProjectStatePreferences;
@@ -132,17 +80,32 @@ import org.apache.cayenne.project.ConfigurationNodeParentGetter;
 import org.apache.cayenne.project.Project;
 import org.apache.cayenne.util.IDUtil;
 
+import javax.swing.event.EventListenerList;
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.EventListener;
+import java.util.EventObject;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.prefs.Preferences;
+
 /**
  * A controller that works with the project tree, tracking selection and
  * dispatching project events.
  */
 public class ProjectController extends CayenneController {
 
+    private final static int MAX_HISTORY_SIZE = 20;
+
     /*
      * A snapshot of the current state of the project controller. This was added
      * so that we could support history of recent objects.
      */
-    public static class ControllerState {
+    static class ControllerState {
 
         private boolean isRefiring;
         private DisplayEvent event;
@@ -163,28 +126,9 @@ public class ProjectController extends CayenneController {
         private Procedure procedure;
         private ProcedureParameter[] procedureParameters;
         private QueryDescriptor query;
-
-        /**
-         * Paths of multiple selection
-         */
         private ConfigurationNode[] paths;
-
-        /**
-         * Parent path of multiple selection
-         */
         private ConfigurationNode parentPath;
-
-        /**
-         * currently selecte entity listener class
-         */
-        private String listenerClass;
-        /**
-         * currently selected callback type
-         */
         private CallbackType callbackType;
-        /**
-         * currently selected callback methods
-         */
         private ObjCallbackMethod[] callbackMethods;
 
         public ControllerState() {
@@ -201,51 +145,46 @@ public class ProjectController extends CayenneController {
         }
 
         /*
-         * Used to determine if the val ControllerState is equivalent, which
-         * means if the event is refired again, will it end up in the same place
-         * on the screen. This get's a bit messy at the end, because of
-         * inheritance heirarchy issues.
+         * Used to determine if the val ControllerState is equivalent, which means if the event is refired again, will
+         * it end up in the same place on the screen. This gets a bit messy at the end, because of inheritance heirarchy
+         * issues.
          */
-        public boolean isEquivalent(ControllerState val) {
+        public boolean isNotSame(ControllerState val) {
 
             if (val == null)
-                return false;
+                return true;
 
             if (event instanceof EntityDisplayEvent && val.event instanceof EntityDisplayEvent) {
                 if (((EntityDisplayEvent) val.event).getEntity() instanceof ObjEntity) {
-                    return objEntity == val.objEntity;
+                    return objEntity != val.objEntity;
                 } else {
-                    return dbEntity == val.dbEntity;
+                    return dbEntity != val.dbEntity;
                 }
             } else if (event instanceof ProcedureDisplayEvent && val.event instanceof ProcedureDisplayEvent) {
-                return procedure == val.procedure;
+                return procedure != val.procedure;
             } else if (event instanceof QueryDisplayEvent && val.event instanceof QueryDisplayEvent) {
-                return query == val.query;
+                return query != val.query;
             } else if (event instanceof EmbeddableDisplayEvent && val.event instanceof EmbeddableDisplayEvent) {
-                return embeddable == val.embeddable;
+                return embeddable != val.embeddable;
             } else if (event.getClass() == DataMapDisplayEvent.class && event.getClass() == val.event.getClass()) {
-                return map == val.map;
+                return map != val.map;
             } else if (event.getClass() == DataNodeDisplayEvent.class && event.getClass() == val.event.getClass()) {
-                return node == val.node;
+                return node != val.node;
             } else if (event.getClass() == DomainDisplayEvent.class && event.getClass() == val.event.getClass()) {
-                return domain == val.domain;
+                return domain != val.domain;
             }
 
-            return false;
+            return true;
         }
     }
 
-    protected EventListenerList listenerList;
-    protected boolean dirty;
-    protected int entityTabSelection;
-
-    protected Project project;
-
-    protected Preferences projectControllerPreferences;
-
-    protected ControllerState currentState;
-    protected CircularArray<ControllerState> controllerStateHistory;
-    protected int maxHistorySize = 20;
+    private EventListenerList listenerList;
+    private boolean dirty;
+    private int entityTabSelection;
+    private Project project;
+    private Preferences projectControllerPreferences;
+    private ControllerState currentState;
+    private final CircularArray<ControllerState> controllerStateHistory;
 
     private EntityResolver entityResolver;
 
@@ -257,9 +196,10 @@ public class ProjectController extends CayenneController {
 
     public ProjectController(CayenneModelerController parent) {
         super(parent);
+
         this.listenerList = new EventListenerList();
-        controllerStateHistory = new CircularArray<>(maxHistorySize);
-        currentState = new ControllerState();
+        this.controllerStateHistory = new CircularArray<>(MAX_HISTORY_SIZE);
+        this.currentState = new ControllerState();
     }
 
     @Override
@@ -357,7 +297,7 @@ public class ProjectController extends CayenneController {
         }
 
         Preferences pref;
-        if (nameSuffix == null || nameSuffix.length() == 0) {
+        if (nameSuffix == null || nameSuffix.isEmpty()) {
             pref = getPreferenceForDataDomain().node("DataMap").node(map.getName());
         } else {
             pref = getPreferenceForDataDomain().node("DataMap").node(map.getName()).node(nameSuffix);
@@ -373,17 +313,6 @@ public class ProjectController extends CayenneController {
         return (DataMapDefaults) application.getCayenneProjectPreferences().getProjectDetailObject(DataMapDefaults.class, pref);
     }
 
-    public DataMapDefaults getDataMapPreferences(String nameSuffix, DataMap map) {
-        Preferences pref;
-
-        if (nameSuffix == null || nameSuffix.length() == 0) {
-            pref = getPreferenceForDataDomain().node("DataMap").node(map.getName());
-        } else {
-            pref = getPreferenceForDataDomain().node("DataMap").node(map.getName()).node(nameSuffix);
-        }
-        return (DataMapDefaults) application.getCayenneProjectPreferences().getProjectDetailObject(DataMapDefaults.class, pref);
-    }
-
     /**
      * Returns preferences object for the current DataMap, throwing an exception
      * if no DataMap is selected.
@@ -424,20 +353,13 @@ public class ProjectController extends CayenneController {
         controllerStateHistory.clear();
     }
 
-    /*
-     * Allow the user to change the default history size. TODO When a user
-     * changes their preferences it should call this method. I don't know how
-     * the preferences work, so I will leave this to someone else to do. Garry
-     */
-    public void setHistorySize(int newSize) {
-        controllerStateHistory.resize(newSize);
-    }
-
     public boolean isDirty() {
         return dirty;
     }
 
-    /** Resets all current models to null. */
+    /**
+     * Resets all current models to null.
+     */
     private void clearState() {
         // don't clear if we are refiring events for history navigation
         if (currentState.isRefiring) {
@@ -633,14 +555,6 @@ public class ProjectController extends CayenneController {
         listenerList.remove(DbEntityListener.class, listener);
     }
 
-    public void addProjectOnSaveListener(ProjectOnSaveListener listener) {
-    	listenerList.add(ProjectOnSaveListener.class, listener);
-    }
-
-    public void removeProjectOnSaveListener(ProjectOnSaveListener listener) {
-    	listenerList.remove(ProjectOnSaveListener.class, listener);
-    }
-
     public void addProjectSavedListener(ProjectSavedListener listener) {
         listenerList.add(ProjectSavedListener.class, listener);
     }
@@ -804,11 +718,11 @@ public class ProjectController extends CayenneController {
 
         for (DomainListener listener : listenerList.getListeners(DomainListener.class)) {
             switch (e.getId()) {
-            case MapEvent.CHANGE:
-                listener.domainChanged(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid DomainEvent type: " + e.getId());
+                case MapEvent.CHANGE:
+                    listener.domainChanged(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid DomainEvent type: " + e.getId());
             }
         }
     }
@@ -853,17 +767,17 @@ public class ProjectController extends CayenneController {
 
         for (DataNodeListener listener : listenerList.getListeners(DataNodeListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.dataNodeAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.dataNodeChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.dataNodeRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid DataNodeEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.dataNodeAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.dataNodeChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.dataNodeRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid DataNodeEvent type: " + e.getId());
             }
         }
     }
@@ -882,7 +796,7 @@ public class ProjectController extends CayenneController {
             if (changed) {
                 clearState();
                 currentState.domain = e.getDomain();
-                currentState.node  = e.getDataNode();
+                currentState.node = e.getDataNode();
                 currentState.map = e.getDataMap();
             }
         }
@@ -915,17 +829,17 @@ public class ProjectController extends CayenneController {
 
         for (DataMapListener eventListener : listenerList.getListeners(DataMapListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                eventListener.dataMapAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                eventListener.dataMapChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                eventListener.dataMapRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid DataMapEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    eventListener.dataMapAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    eventListener.dataMapChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    eventListener.dataMapRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid DataMapEvent type: " + e.getId());
             }
         }
     }
@@ -947,17 +861,17 @@ public class ProjectController extends CayenneController {
 
         for (ObjEntityListener listener : listenerList.getListeners(ObjEntityListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.objEntityAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.objEntityChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.objEntityRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid EntityEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.objEntityAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.objEntityChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.objEntityRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid EntityEvent type: " + e.getId());
             }
         }
     }
@@ -979,17 +893,17 @@ public class ProjectController extends CayenneController {
 
         for (DbEntityListener listener : listenerList.getListeners(DbEntityListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.dbEntityAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.dbEntityChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.dbEntityRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid EntityEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.dbEntityAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.dbEntityChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.dbEntityRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid EntityEvent type: " + e.getId());
             }
         }
     }
@@ -1007,17 +921,17 @@ public class ProjectController extends CayenneController {
 
         for (QueryListener eventListener : listenerList.getListeners(QueryListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                eventListener.queryAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                eventListener.queryChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                eventListener.queryRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid ProcedureEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    eventListener.queryAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    eventListener.queryChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    eventListener.queryRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid ProcedureEvent type: " + e.getId());
             }
         }
     }
@@ -1035,17 +949,17 @@ public class ProjectController extends CayenneController {
 
         for (ProcedureListener eventListener : listenerList.getListeners(ProcedureListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                eventListener.procedureAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                eventListener.procedureChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                eventListener.procedureRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid ProcedureEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    eventListener.procedureAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    eventListener.procedureChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    eventListener.procedureRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid ProcedureEvent type: " + e.getId());
             }
         }
     }
@@ -1061,17 +975,17 @@ public class ProjectController extends CayenneController {
         for (EventListener eventListener : list) {
             ProcedureParameterListener listener = (ProcedureParameterListener) eventListener;
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.procedureParameterAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.procedureParameterChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.procedureParameterRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid ProcedureParameterEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.procedureParameterAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.procedureParameterChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.procedureParameterRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid ProcedureParameterEvent type: " + e.getId());
             }
         }
     }
@@ -1104,7 +1018,7 @@ public class ProjectController extends CayenneController {
                     // wrap around
                     cs = controllerStateHistory.get(0);
                 }
-                if (!cs.isEquivalent(currentState)) {
+                if (cs.isNotSame(currentState)) {
                     break;
                 }
 
@@ -1132,7 +1046,7 @@ public class ProjectController extends CayenneController {
                     // wrap around
                     cs = controllerStateHistory.get(size - 1);
                 }
-                if (!cs.isEquivalent(currentState)) {
+                if (cs.isNotSame(currentState)) {
                     break;
                 }
                 // if it doesn't find it within 5 tries it is probably stuck in a loop
@@ -1335,23 +1249,25 @@ public class ProjectController extends CayenneController {
         }
     }
 
-    /** Notifies all listeners of the change(add, remove) and does the change. */
+    /**
+     * Notifies all listeners of the change(add, remove) and does the change.
+     */
     public void fireDbAttributeEvent(AttributeEvent e) {
         setDirty(true);
 
         for (DbAttributeListener listener : listenerList.getListeners(DbAttributeListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.dbAttributeAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.dbAttributeChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.dbAttributeRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid AttributeEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.dbAttributeAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.dbAttributeChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.dbAttributeRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid AttributeEvent type: " + e.getId());
             }
         }
     }
@@ -1375,23 +1291,25 @@ public class ProjectController extends CayenneController {
         }
     }
 
-    /** Notifies all listeners of the change (add, remove) and does the change. */
+    /**
+     * Notifies all listeners of the change (add, remove) and does the change.
+     */
     public void fireObjAttributeEvent(AttributeEvent e) {
         setDirty(true);
 
         for (ObjAttributeListener listener : listenerList.getListeners(ObjAttributeListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.objAttributeAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.objAttributeChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.objAttributeRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid AttributeEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.objAttributeAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.objAttributeChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.objAttributeRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid AttributeEvent type: " + e.getId());
             }
         }
     }
@@ -1438,7 +1356,9 @@ public class ProjectController extends CayenneController {
         }
     }
 
-    /** Notifies all listeners of the change(add, remove) and does the change. */
+    /**
+     * Notifies all listeners of the change(add, remove) and does the change.
+     */
     public void fireDbRelationshipEvent(RelationshipEvent e) {
         setDirty(true);
 
@@ -1448,17 +1368,17 @@ public class ProjectController extends CayenneController {
 
         for (DbRelationshipListener listener : listenerList.getListeners(DbRelationshipListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.dbRelationshipAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.dbRelationshipChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.dbRelationshipRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid RelationshipEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.dbRelationshipAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.dbRelationshipChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.dbRelationshipRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid RelationshipEvent type: " + e.getId());
             }
         }
     }
@@ -1482,23 +1402,25 @@ public class ProjectController extends CayenneController {
         }
     }
 
-    /** Notifies all listeners of the change(add, remove) and does the change. */
+    /**
+     * Notifies all listeners of the change(add, remove) and does the change.
+     */
     public void fireObjRelationshipEvent(RelationshipEvent e) {
         setDirty(true);
 
         for (ObjRelationshipListener listener : listenerList.getListeners(ObjRelationshipListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.objRelationshipAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.objRelationshipChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.objRelationshipRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid RelationshipEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.objRelationshipAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.objRelationshipChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.objRelationshipRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid RelationshipEvent type: " + e.getId());
             }
         }
     }
@@ -1569,13 +1491,6 @@ public class ProjectController extends CayenneController {
         }
     }
 
-    /**
-     * @return currently selected entity listener class
-     */
-    public String getCurrentListenerClass() {
-        return currentState.listenerClass;
-    }
-
     /**
      * @return currently selected callback type
      */
@@ -1590,13 +1505,6 @@ public class ProjectController extends CayenneController {
         return currentState.callbackMethods;
     }
 
-    /**
-     * set current entity listener class
-     */
-    public void setCurrentListenerClass(String listenerClass) {
-        currentState.listenerClass = listenerClass;
-    }
-
     /**
      * set current callback type
      */
@@ -1614,8 +1522,7 @@ public class ProjectController extends CayenneController {
     /**
      * adds callback method manipulation listener
      *
-     * @param listener
-     *            listener
+     * @param listener listener
      */
     public void addCallbackMethodListener(CallbackMethodListener listener) {
         listenerList.add(CallbackMethodListener.class, listener);
@@ -1624,61 +1531,24 @@ public class ProjectController extends CayenneController {
     /**
      * fires callback method manipulation event
      *
-     * @param e
-     *            event
+     * @param e event
      */
     public void fireCallbackMethodEvent(CallbackMethodEvent e) {
         setDirty(true);
 
         for (CallbackMethodListener listener : listenerList.getListeners(CallbackMethodListener.class)) {
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.callbackMethodAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.callbackMethodChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.callbackMethodRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid CallbackEvent type: " + e.getId());
-            }
-        }
-    }
-
-    /**
-     * adds listener class manipulation listener
-     *
-     * @param listener
-     *            listener
-     */
-    public void addEntityListenerListener(EntityListenerListener listener) {
-        listenerList.add(EntityListenerListener.class, listener);
-    }
-
-    /**
-     * fires entity listener manipulation event
-     *
-     * @param e
-     *            event
-     */
-    public void fireEntityListenerEvent(EntityListenerEvent e) {
-        setDirty(true);
-
-        for (EntityListenerListener listener : listenerList.getListeners(EntityListenerListener.class)) {
-            switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.entityListenerAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.entityListenerChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.entityListenerRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid CallbackEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.callbackMethodAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.callbackMethodChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.callbackMethodRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid CallbackEvent type: " + e.getId());
             }
         }
     }
@@ -1746,17 +1616,17 @@ public class ProjectController extends CayenneController {
         for (EmbeddableListener listener : listenerList.getListeners(EmbeddableListener.class)) {
 
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.embeddableAdded(e, map);
-                break;
-            case MapEvent.CHANGE:
-                listener.embeddableChanged(e, map);
-                break;
-            case MapEvent.REMOVE:
-                listener.embeddableRemoved(e, map);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid RelationshipEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.embeddableAdded(e, map);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.embeddableChanged(e, map);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.embeddableRemoved(e, map);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid RelationshipEvent type: " + e.getId());
             }
         }
     }
@@ -1766,25 +1636,25 @@ public class ProjectController extends CayenneController {
         for (EmbeddableAttributeListener listener : listenerList.getListeners(EmbeddableAttributeListener.class)) {
 
             switch (e.getId()) {
-            case MapEvent.ADD:
-                listener.embeddableAttributeAdded(e);
-                break;
-            case MapEvent.CHANGE:
-                listener.embeddableAttributeChanged(e);
-                break;
-            case MapEvent.REMOVE:
-                listener.embeddableAttributeRemoved(e);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid RelationshipEvent type: " + e.getId());
+                case MapEvent.ADD:
+                    listener.embeddableAttributeAdded(e);
+                    break;
+                case MapEvent.CHANGE:
+                    listener.embeddableAttributeChanged(e);
+                    break;
+                case MapEvent.REMOVE:
+                    listener.embeddableAttributeRemoved(e);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid RelationshipEvent type: " + e.getId());
             }
         }
     }
-    
-    public void fireProjectOnSaveEvent(ProjectOnSaveEvent e){
-    	for(ProjectOnSaveListener listener : listenerList.getListeners(ProjectOnSaveListener.class)){
+
+    public void fireProjectOnSaveEvent(ProjectOnSaveEvent e) {
+        for (ProjectOnSaveListener listener : listenerList.getListeners(ProjectOnSaveListener.class)) {
             listener.beforeSaveChanges(e);
-    	}
+        }
     }
 
     public void addDataSourceModificationListener(DataSourceModificationListener listener) {
@@ -1841,13 +1711,13 @@ public class ProjectController extends CayenneController {
 
         projectControllerPreferences = Preferences.userNodeForPackage(Project.class);
 
-        if (key.trim().length() > 0) {
+        if (!key.trim().isEmpty()) {
             if (key.contains(".xml")) {
                 projectControllerPreferences = projectControllerPreferences.node(projectControllerPreferences
                         .absolutePath() + key.replace(".xml", ""));
             } else {
                 projectControllerPreferences = projectControllerPreferences.node(
-                        projectControllerPreferences.absolutePath())
+                                projectControllerPreferences.absolutePath())
                         .node(getApplication().getNewProjectTemporaryName());
             }
         }
@@ -1865,10 +1735,11 @@ public class ProjectController extends CayenneController {
      */
     public void setEntityTabSelection(int entityTabSelection) {
         this.entityTabSelection = entityTabSelection;
-    }    
-    
+    }
+
     /**
      * If true, all save buttons become available.
+     *
      * @param enable or not save button
      */
     public void enableSave(boolean enable) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
index 35c7c35b2..ae39b89fc 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
@@ -120,7 +120,7 @@ public class ProjectTreeView extends JTree implements DomainDisplayListener,
         ProcedureDisplayListener, MultipleObjectsDisplayListener,
         EmbeddableDisplayListener, EmbeddableListener {
 
-    private static final Logger logObj = LoggerFactory.getLogger(ProjectTreeView.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProjectTreeView.class);
 
     private static final Color SELECTION_COLOR = UIManager.getColor("Tree.selectionBackground");
 
@@ -301,7 +301,7 @@ public class ProjectTreeView extends JTree implements DomainDisplayListener,
 
             return (value != null) ? String.valueOf(PropertyUtils.getProperty(value, "name")) : "";
         } catch (Exception e) {
-            logObj.warn("Exception reading property 'name', class " + value.getClass().getName(), e);
+            LOGGER.warn("Exception reading property 'name', class " + value.getClass().getName(), e);
             return "";
         }
     }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
index cdfa94b94..4769c9cf7 100755
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
@@ -357,7 +357,7 @@ public class FindAction extends CayenneAction {
     /**
      * Builds a tree path for a given path and make selection in it
      */
-    private static TreePath buildAndSelectTreePath(DataMap map, Object object, EditorView editor) {
+    private static void buildAndSelectTreePath(DataMap map, Object object, EditorView editor) {
         ProjectTreeView projectTreeView = editor.getProjectTreeView();
         ProjectTreeModel treeModel = (ProjectTreeModel) projectTreeView.getModel();
 
@@ -372,7 +372,6 @@ public class FindAction extends CayenneAction {
             projectTreeView.expandPath(treePath.getParentPath());
         }
         projectTreeView.getSelectionModel().setSelectionPath(treePath);
-        return treePath;
     }
 
     /**
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
index ffbb9a909..b295ff286 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
@@ -48,7 +48,7 @@ import java.net.URL;
  */
 public class ImportDataMapAction extends CayenneAction {
 
-    private static Logger logObj = LoggerFactory.getLogger(ImportDataMapAction.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ImportDataMapAction.class);
 
     private ConfigurationNameMapper nameMapper;
 
@@ -93,7 +93,7 @@ public class ImportDataMapAction extends CayenneAction {
 
             getProjectController().addDataMap(this, newMap);
         } catch (Exception ex) {
-            logObj.info("Error importing DataMap.", ex);
+            LOGGER.info("Error importing DataMap.", ex);
             JOptionPane.showMessageDialog(Application.getFrame(), "Error reading DataMap: " + ex.getMessage(),
                     "Can't Open DataMap", JOptionPane.OK_OPTION);
         }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
index df8532aa2..56c1ab253 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
@@ -66,7 +66,7 @@ import java.util.Map;
  */
 public class ImportEOModelAction extends CayenneAction {
 
-    private static Logger logObj = LoggerFactory.getLogger(ImportEOModelAction.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ImportEOModelAction.class);
 
     public static String getActionName() {
         return "Import EOModel";
@@ -124,7 +124,7 @@ public class ImportEOModelAction extends CayenneAction {
 
             }
             catch (Exception ex) {
-                logObj.info("EOModel Loading Exception", ex);
+                LOGGER.info("EOModel Loading Exception", ex);
                 ErrorDebugDialog.guiException(ex);
             }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
index f5e9abfea..603b507d8 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
@@ -48,7 +48,7 @@ import java.util.Map;
 
 public class OpenProjectAction extends ProjectAction {
 
-    private static Logger logObj = LoggerFactory.getLogger(OpenProjectAction.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(OpenProjectAction.class);
 
     private static final Map<String, String> PROJECT_TO_MODELER_VERSION;
     static {
@@ -106,7 +106,7 @@ public class OpenProjectAction extends ProjectAction {
                 // Get the project file name (always cayenne.xml)
                 f = fileChooser.openProjectFile(Application.getFrame());
             } catch (Exception ex) {
-                logObj.warn("Error loading project file.", ex);
+                LOGGER.warn("Error loading project file.", ex);
             }
         }
 
@@ -174,7 +174,7 @@ public class OpenProjectAction extends ProjectAction {
 
             openProjectResourse(rootSource, controller);
         } catch (Exception ex) {
-            logObj.warn("Error loading project file.", ex);
+            LOGGER.warn("Error loading project file.", ex);
             ErrorDebugDialog.guiWarning(ex, "Error loading project");
         }
     }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectOpener.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectOpener.java
index aa2eff6b2..e4c96dc08 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectOpener.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectOpener.java
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
  */
 class ProjectOpener extends JFileChooser {
 
-    private static Logger logObj = LoggerFactory.getLogger(ProjectOpener.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProjectOpener.class);
 
     /**
      * Selects a directory to store the project.
@@ -82,12 +82,12 @@ class ProjectOpener extends JFileChooser {
             int status = showDialog(f, "Select");
             selectedDir = getSelectedFile();
             if (status != JFileChooser.APPROVE_OPTION || selectedDir == null) {
-                logObj.info("Save canceled.");
+                LOGGER.info("Save canceled.");
                 return null;
             }
 
             // normalize selection
-            logObj.info("Selected: " + selectedDir);
+            LOGGER.info("Selected: " + selectedDir);
             if (!selectedDir.isDirectory()) {
                 selectedDir = getSelectedFile().getParentFile();
             }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbJoinTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbJoinTableModel.java
index 78023ac79..9b699f0d4 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbJoinTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbJoinTableModel.java
@@ -19,18 +19,19 @@
 
 package org.apache.cayenne.modeler.dialog;
 
-import java.util.ArrayList;
-
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbJoin;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.util.CayenneTableModel;
 
-/** Model for editing DbAttributePair-s. Changes in the join attributes
- *  don't take place until commit() is called. Creation of the new
- *  DbAttributes is not allowed - user should choose from the existing ones.
-*/
+import java.util.ArrayList;
+
+/**
+ * Model for editing DbAttributePair-s. Changes in the join attributes
+ * don't take place until commit() is called. Creation of the new
+ * DbAttributes is not allowed - user should choose from the existing ones.
+ */
 public class DbJoinTableModel extends CayenneTableModel<DbJoin> {
 
     // Columns
@@ -41,13 +42,15 @@ public class DbJoinTableModel extends CayenneTableModel<DbJoin> {
     protected DbEntity source;
     protected DbEntity target;
 
-    /** Is the table editable. */
+    /**
+     * Is the table editable.
+     */
     private boolean editable;
 
     public DbJoinTableModel(
-        DbRelationship relationship,
-        ProjectController mediator,
-        Object src) {
+            DbRelationship relationship,
+            ProjectController mediator,
+            Object src) {
 
         super(mediator, src, new ArrayList<>(relationship.getJoins()));
         this.relationship = relationship;
@@ -56,10 +59,10 @@ public class DbJoinTableModel extends CayenneTableModel<DbJoin> {
     }
 
     public DbJoinTableModel(
-        DbRelationship relationship,
-        ProjectController mediator,
-        Object src,
-        boolean editable) {
+            DbRelationship relationship,
+            ProjectController mediator,
+            Object src,
+            boolean editable) {
 
         this(relationship, mediator, src);
         this.editable = editable;
@@ -69,22 +72,16 @@ public class DbJoinTableModel extends CayenneTableModel<DbJoin> {
         return DbJoin.class;
     }
 
-    /** Mode new attribute pairs from list to the DbRelationship. */
     public void commit() {
-        relationship.setJoins(getObjectList());
-    }
-
-    /**
-     * Returns null to disable ordering.
-     */
-    public String getOrderingKey() {
-        return null;
+        relationship.setJoins(objectList);
     }
 
+    @Override
     public int getColumnCount() {
         return 2;
     }
 
+    @Override
     public String getColumnName(int column) {
         if (column == SOURCE)
             return relationship.getSourceEntity().getName();
@@ -96,8 +93,8 @@ public class DbJoinTableModel extends CayenneTableModel<DbJoin> {
 
     public DbJoin getJoin(int row) {
         return (row >= 0 && row < objectList.size())
-            ? objectList.get(row)
-            : null;
+                ? objectList.get(row)
+                : null;
     }
 
     public Object getValueAt(int row, int column) {
@@ -108,11 +105,9 @@ public class DbJoinTableModel extends CayenneTableModel<DbJoin> {
 
         if (column == SOURCE) {
             return join.getSourceName();
-        }
-        else if (column == TARGET) {
+        } else if (column == TARGET) {
             return join.getTargetName();
-        }
-        else {
+        } else {
             return null;
         }
 
@@ -131,23 +126,21 @@ public class DbJoinTableModel extends CayenneTableModel<DbJoin> {
             }
 
             join.setSourceName(value);
-        }
-        else if (column == TARGET) {
+        } else if (column == TARGET) {
             if (target == null || target.getAttribute(value) == null) {
                 value = null;
             }
 
             join.setTargetName(value);
         }
-        
+
         fireTableRowsUpdated(row, row);
     }
 
     public boolean isCellEditable(int row, int col) {
         if (col == SOURCE) {
             return relationship.getSourceEntity() != null && editable;
-        }
-        else if (col == TARGET) {
+        } else if (col == TARGET) {
             return relationship.getTargetEntity() != null && editable;
         }
 
@@ -161,7 +154,7 @@ public class DbJoinTableModel extends CayenneTableModel<DbJoin> {
 
     @Override
     public void sortByColumn(int sortCol, boolean isAscent) {
-        switch(sortCol){
+        switch (sortCol) {
             case SOURCE:
                 sortByElementProperty("sourceName", isAscent);
                 break;
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java
index c8d57ea76..fa525517a 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java
@@ -19,22 +19,6 @@
 
 package org.apache.cayenne.modeler.dialog;
 
-import javax.swing.AbstractListModel;
-import javax.swing.ComboBoxModel;
-import javax.swing.JComboBox;
-import javax.swing.JOptionPane;
-import javax.swing.table.TableColumn;
-import java.awt.Component;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Function;
-
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.dbsync.naming.NameBuilder;
@@ -55,24 +39,34 @@ import org.apache.cayenne.modeler.util.combo.AutoCompletion;
 import org.apache.cayenne.project.extension.info.ObjectInfo;
 import org.apache.cayenne.util.Util;
 
+import javax.swing.*;
+import javax.swing.table.TableColumn;
+import java.awt.*;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Function;
+
 /**
  * @since 4.2
  */
 public class DbRelationshipDialog extends CayenneController {
 
-    private static final Comparator<DbEntity> DB_ENTITY_COMPARATOR =
-            Comparator.comparing((Function<DbEntity, String>) ent -> ent.getDataMap().getName())
-                    .thenComparing(DbEntity::getName);
+    private static final Comparator<DbEntity> DB_ENTITY_COMPARATOR = Comparator
+            .comparing((Function<DbEntity, String>) ent -> ent.getDataMap().getName())
+            .thenComparing(DbEntity::getName);
+
+    private final DbRelationshipDialogView view;
+    private final ProjectController projectController;
 
     private DbRelationship relationship;
     private DbRelationship reverseRelationship;
-
-    private DbRelationshipDialogView view;
-
-    private boolean isCreate = false;
-
-    private ProjectController projectController;
-
+    private boolean create;
     private RelationshipUndoableEdit undo;
 
     public DbRelationshipDialog(ProjectController projectController) {
@@ -86,7 +80,7 @@ public class DbRelationshipDialog extends CayenneController {
     }
 
     public DbRelationshipDialog createNewRelationship(DbEntity dbEntity) {
-        isCreate = true;
+        this.create = true;
 
         DbRelationship rel = new DbRelationship();
         rel.setName(NameBuilder.builder(rel, dbEntity).name());
@@ -129,11 +123,11 @@ public class DbRelationshipDialog extends CayenneController {
         view.getToMany().setSelected(relationship.isToMany());
 
         view.getNameField().setText(relationship.getName());
-        if(reverseRelationship != null) {
+        if (reverseRelationship != null) {
             view.getReverseName().setText(reverseRelationship.getName());
         }
 
-        if(relationship.getTargetEntity() == null) {
+        if (relationship.getTargetEntity() == null) {
             enableOptions(false);
         } else {
             enableInfo();
@@ -147,10 +141,10 @@ public class DbRelationshipDialog extends CayenneController {
 
     private void initController() {
         view.getTargetEntities().addActionListener(action -> {
-            DbEntity selectedItem = ((TargetComboBoxModel)view.getTargetEntities().getModel()).selected;
-            if(relationship.getTargetEntityName() == null) {
+            DbEntity selectedItem = ((TargetComboBoxModel) view.getTargetEntities().getModel()).selected;
+            if (relationship.getTargetEntityName() == null) {
                 relationship.setTargetEntityName(selectedItem.getName());
-            } else if(!relationship.getTargetEntityName().equals(selectedItem.getName())){
+            } else if (!relationship.getTargetEntityName().equals(selectedItem.getName())) {
                 if (WarningDialogByDbTargetChange.showWarningDialog(projectController, relationship)) {
                     // clear joins...
                     relationship.removeAllJoins();
@@ -183,7 +177,7 @@ public class DbRelationshipDialog extends CayenneController {
             DbJoin join = model.getJoin(row);
 
             relationship.removeJoin(join);
-            if(relationship.isValidForDepPk()) {
+            if (relationship.isValidForDepPk()) {
                 view.getToDepPk().setEnabled(true);
             } else {
                 view.getToDepPk().setEnabled(false);
@@ -206,8 +200,7 @@ public class DbRelationshipDialog extends CayenneController {
             view.setVisible(false);
         });
 
-        view.addWindowListener(new WindowAdapter()
-        {
+        view.addWindowListener(new WindowAdapter() {
             @Override
             public void windowClosing(WindowEvent e) {
                 view.setCancelPressed(true);
@@ -218,7 +211,7 @@ public class DbRelationshipDialog extends CayenneController {
         view.getToDepPk().addActionListener(selected -> {
             boolean isSelected = view.getToDepPk().isSelected();
             DbRelationship reverseRelationship = relationship.getReverseRelationship();
-            if(reverseRelationship != null && reverseRelationship.isToDependentPK() && isSelected) {
+            if (reverseRelationship != null && reverseRelationship.isToDependentPK() && isSelected) {
                 boolean setToDepPk = JOptionPane.showConfirmDialog(Application.getFrame(), "Unset reverse relationship's \"To Dep PK\" setting?",
                         "Warning", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE) == JOptionPane.OK_OPTION;
                 relationship.setToDependentPK(setToDepPk);
@@ -232,16 +225,11 @@ public class DbRelationshipDialog extends CayenneController {
     private void enableInfo() {
         enableOptions(true);
 
-        view.getTable().setModel(new DbJoinTableModel(relationship,
-                projectController, this, true));
+        view.getTable().setModel(new DbJoinTableModel(relationship, projectController, this, true));
 
         view.getTable().getModel().addTableModelListener(change -> {
-            if(change.getLastRow() != Integer.MAX_VALUE) {
-                if(relationship.isValidForDepPk()) {
-                    view.getToDepPk().setEnabled(true);
-                } else {
-                    view.getToDepPk().setEnabled(false);
-                }
+            if (change.getLastRow() != Integer.MAX_VALUE) {
+                view.getToDepPk().setEnabled(relationship.isValidForDepPk());
             }
         });
 
@@ -279,7 +267,7 @@ public class DbRelationshipDialog extends CayenneController {
         stopEditing();
 
         DbJoinTableModel model = (DbJoinTableModel) view.getTable().getModel();
-        boolean updatingReverse = model.getObjectList().size() > 0;
+        boolean updatingReverse = !model.getObjectList().isEmpty();
 
         // handle name update
         handleNameUpdate(relationship, view.getNameField().getText().trim());
@@ -313,11 +301,11 @@ public class DbRelationshipDialog extends CayenneController {
                 if (relationship.getSourceEntity() == relationship.getTargetEntity()) {
                     projectController
                             .fireDbRelationshipEvent(
-                            new RelationshipEvent(
-                                    this,
-                                    reverseRelationship,
-                                    reverseRelationship.getSourceEntity(),
-                                    MapEvent.ADD));
+                                    new RelationshipEvent(
+                                            this,
+                                            reverseRelationship,
+                                            reverseRelationship.getSourceEntity(),
+                                            MapEvent.ADD));
                 }
             } else {
                 handleNameUpdate(reverseRelationship, view.getReverseName().getText().trim());
@@ -332,11 +320,11 @@ public class DbRelationshipDialog extends CayenneController {
             }
         }
 
-        fireDbRelationshipEvent(isCreate);
+        fireDbRelationshipEvent(create);
     }
 
     private void handleNameUpdate(DbRelationship relationship, String userInputName) {
-        if(Util.nullSafeEquals(relationship.getName(), userInputName)) {
+        if (Util.nullSafeEquals(relationship.getName(), userInputName)) {
             return;
         }
 
@@ -353,13 +341,13 @@ public class DbRelationshipDialog extends CayenneController {
 
         projectController
                 .fireDbRelationshipEvent(
-                new RelationshipEvent(this, relationship, relationship.getSourceEntity(), oldName));
+                        new RelationshipEvent(this, relationship, relationship.getSourceEntity(), oldName));
     }
 
     private Collection<DbJoin> getReverseJoins() {
         Collection<DbJoin> joins = relationship.getJoins();
 
-        if ((joins == null) || (joins.size() == 0)) {
+        if ((joins == null) || (joins.isEmpty())) {
             return Collections.emptyList();
         }
 
@@ -380,7 +368,7 @@ public class DbRelationshipDialog extends CayenneController {
     }
 
     private void fireDbRelationshipEvent(boolean isCreate) {
-        if(!isCreate) {
+        if (!isCreate) {
             projectController
                     .fireDbRelationshipEvent(
                             new RelationshipEvent(this, relationship, relationship.getSourceEntity(), MapEvent.CHANGE));
@@ -388,7 +376,7 @@ public class DbRelationshipDialog extends CayenneController {
             Application.getInstance().getUndoManager().addEdit(undo);
         } else {
             DbEntity dbEntity = relationship.getSourceEntity();
-            if(dbEntity.getRelationship(relationship.getName()) == null) {
+            if (dbEntity.getRelationship(relationship.getName()) == null) {
                 dbEntity.addRelationship(relationship);
             }
 
@@ -410,7 +398,7 @@ public class DbRelationshipDialog extends CayenneController {
 
     final class TargetComboBoxModel extends AbstractListModel<String> implements ComboBoxModel<String> {
 
-        private List<DbEntity> entities;
+        private final List<DbEntity> entities;
         private DbEntity selected;
 
         TargetComboBoxModel(Collection<DbEntity> dbEntities) {
@@ -421,7 +409,7 @@ public class DbRelationshipDialog extends CayenneController {
         }
 
         private String getTitle(DbEntity entity) {
-            if(entity == null) {
+            if (entity == null) {
                 return "";
             }
             return relationship.getSourceEntity().getDataMap() == entity.getDataMap()
@@ -441,8 +429,8 @@ public class DbRelationshipDialog extends CayenneController {
 
         @Override
         public void setSelectedItem(Object anItem) {
-            String title = (String)anItem;
-            if(title != null) {
+            String title = (String) anItem;
+            if (title != null) {
                 int spacer = title.indexOf(' ');
                 if (spacer != -1) {
                     title = title.substring(0, spacer);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ErrorDebugDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ErrorDebugDialog.java
index 4f4ccf042..56ce4d49e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ErrorDebugDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ErrorDebugDialog.java
@@ -53,7 +53,7 @@ import java.io.StringWriter;
  * 
  */
 public class ErrorDebugDialog extends CayenneDialog implements ActionListener {
-    private static Logger logObj = LoggerFactory.getLogger(ErrorDebugDialog.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ErrorDebugDialog.class);
     
     /**
      * Sole instance of error/warning dialog to disallow showing of multiple dialogs
@@ -72,7 +72,7 @@ public class ErrorDebugDialog extends CayenneDialog implements ActionListener {
      */
     public static void guiException(Throwable th) {
         if (th != null) {
-            logObj.error("CayenneModeler Error", th);
+            LOGGER.error("CayenneModeler Error", th);
         }
 
         ErrorDebugDialog dialog =
@@ -85,7 +85,7 @@ public class ErrorDebugDialog extends CayenneDialog implements ActionListener {
      */
     public static void guiWarning(Throwable th, String message) {
         if (th != null) {
-            logObj.warn("CayenneModeler Warning", th);
+            LOGGER.warn("CayenneModeler Warning", th);
         }
 
         WarningDialog dialog = new WarningDialog(Application.getFrame(), message, th, false, false);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsController.java
index 44c574b35..c7871361f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsController.java
@@ -18,22 +18,16 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.dialog.autorelationship;
 
-import java.awt.Component;
-
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JOptionPane;
-
+import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbJoin;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.event.MapEvent;
 import org.apache.cayenne.map.event.RelationshipEvent;
-import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ClassLoadingService;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.dialog.ErrorDebugDialog;
 import org.apache.cayenne.modeler.undo.CreateRelationshipUndoableEdit;
 import org.apache.cayenne.modeler.undo.InferRelationshipsUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneController;
@@ -41,12 +35,15 @@ import org.apache.cayenne.modeler.util.NameGeneratorPreferences;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.swing.*;
+import java.awt.*;
+
 public class InferRelationshipsController extends InferRelationshipsControllerBase {
 
     public static final int SELECT = 1;
     public static final int CANCEL = 0;
 
-    private static Logger logObj = LoggerFactory.getLogger(ErrorDebugDialog.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(InferRelationshipsController.class);
 
     protected InferRelationshipsDialog view;
 
@@ -72,7 +69,7 @@ public class InferRelationshipsController extends InferRelationshipsControllerBa
             return classLoader.loadClass(ObjectNameGenerator.class, strategyClass).getDeclaredConstructor().newInstance();
         }
         catch (Throwable th) {
-            logObj.error("Error in " + getClass().getName(), th);
+            LOGGER.error("Error in " + getClass().getName(), th);
 
             JOptionPane.showMessageDialog(
                     view,
@@ -145,7 +142,7 @@ public class InferRelationshipsController extends InferRelationshipsControllerBa
                     new DefaultComboBoxModel<>(NameGeneratorPreferences.getInstance().getLastUsedStrategies()));
         }
         catch (Throwable th) {
-            logObj.error("Error in " + getClass().getName(), th);
+            LOGGER.error("Error in " + getClass().getName(), th);
             return;
         }
 
@@ -188,8 +185,7 @@ public class InferRelationshipsController extends InferRelationshipsControllerBa
             
             undoableEdit.addEdit(new CreateRelationshipUndoableEdit(temp.getSource(), new DbRelationship[] { rel }));
         }
-        JOptionPane.showMessageDialog(this.getView(), getSelectedEntitiesSize()
-                + " relationships generated");
+        JOptionPane.showMessageDialog(view, getSelectedEntitiesSize() + " relationships generated");
         view.dispose();
     }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datadomain/package.html b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datadomain/package.html
deleted file mode 100644
index 9fea04180..000000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datadomain/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-     https://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
--->
-<html>
-<body>
-<p>Contains MVC classes for configuring DataDomain parameters. This package mostly
-deals with dialogs for cache synchronization configuration.</p>
-</body>
-</html>
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datamap/DefaultsPreferencesController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datamap/DefaultsPreferencesController.java
index 33e763047..076f785ac 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datamap/DefaultsPreferencesController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datamap/DefaultsPreferencesController.java
@@ -25,13 +25,13 @@ import org.apache.cayenne.modeler.util.CayenneController;
 
 /**
  * An abstract controller for the DataMap defaults updates.
- * 
+ *
  */
 public abstract class DefaultsPreferencesController extends CayenneController {
-    
+
     protected DataMap dataMap;
     protected ProjectController mediator;
-    
+
     protected boolean allEntities;
 
     public DefaultsPreferencesController(ProjectController mediator, DataMap dataMap) {
@@ -42,10 +42,6 @@ public abstract class DefaultsPreferencesController extends CayenneController {
     }
 
     public boolean isAllEntities() {
-        return ((DefaultsPreferencesView)getView()).getUpdateAll().isSelected();
-    }
-
-    public boolean isUninitializedEntities() {
-        return !isAllEntities();
+        return ((DefaultsPreferencesView) getView()).getUpdateAll().isSelected();
     }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
index f049dda38..0035335e7 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
@@ -269,10 +269,17 @@ public class DataSourceWizard extends CayenneController {
     }
 
     protected void showNoConnectorDialog(String message) {
-        final String[] options = {"Setup driver", "Cancel"};
+        String[] options = {"Setup driver", "Cancel"};
+
+        int selection = JOptionPane.showOptionDialog(view,
+                message,
+                "Configuration error",
+                JOptionPane.OK_CANCEL_OPTION,
+                JOptionPane.ERROR_MESSAGE,
+                null,
+                options,
+                options[0]);
 
-        final int selection = JOptionPane.showOptionDialog(getView(), message, "Configuration error",
-                JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]);
         if (selection == 0) {
             classPathConfigAction();
         }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/gen/DBGeneratorOptions.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/gen/DBGeneratorOptions.java
index 9cb9bd824..293a2e1ef 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/gen/DBGeneratorOptions.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/gen/DBGeneratorOptions.java
@@ -33,8 +33,6 @@ import org.apache.cayenne.modeler.util.DbAdapterInfo;
 import org.apache.cayenne.validation.ValidationResult;
 
 import javax.swing.*;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 import java.awt.*;
 import java.io.File;
 import java.io.FileWriter;
@@ -83,14 +81,11 @@ public class DBGeneratorOptions extends CayenneController {
         refreshView();
     }
 
+    @Override
     public Component getView() {
         return view;
     }
 
-    public DBGeneratorDefaults getGeneratorDefaults() {
-        return generatorDefaults;
-    }
-
     protected void initController() {
 
         DefaultComboBoxModel<String> adapterModel = new DefaultComboBoxModel<>(
@@ -116,14 +111,10 @@ public class DBGeneratorOptions extends CayenneController {
         view.getCancelButton().addActionListener(e -> closeAction());
 
         // refresh SQL if different tables were selected
-        view.getTabs().addChangeListener(new ChangeListener() {
-
-            public void stateChanged(ChangeEvent e) {
-                if (view.getTabs().getSelectedIndex() == 0) {
-                    // this assumes that some tables where checked/unchecked... not very
-                    // efficient
-                    refreshGeneratorAction();
-                }
+        view.getTabs().addChangeListener(e -> {
+            if (view.getTabs().getSelectedIndex() == 0) {
+                // this assumes that some tables where checked/unchecked... not very efficient
+                refreshGeneratorAction();
             }
         });
     }
@@ -171,7 +162,7 @@ public class DBGeneratorOptions extends CayenneController {
     }
 
     protected void refreshView() {
-        getView().setEnabled(connectionInfo != null);
+        view.setEnabled(connectionInfo != null);
 
         view.getCreateFK().setSelected(generatorDefaults.createFK);
         view.getCreatePK().setSelected(generatorDefaults.createPK);
@@ -237,12 +228,12 @@ public class DBGeneratorOptions extends CayenneController {
 
         refreshGeneratorAction();
 
-        Collection<ValidationResult> failures = new ArrayList<ValidationResult>();
+        Collection<ValidationResult> failures = new ArrayList<>();
 
         // sanity check...
         for (DbGenerator generator : generators) {
             if (generator.isEmpty(true)) {
-                JOptionPane.showMessageDialog(getView(), "Nothing to generate.");
+                JOptionPane.showMessageDialog(view, "Nothing to generate.");
                 return;
             }
 
@@ -254,8 +245,8 @@ public class DBGeneratorOptions extends CayenneController {
             }
         }
 
-        if (failures.size() == 0) {
-            JOptionPane.showMessageDialog(getView(), "Schema Generation Complete.");
+        if (failures.isEmpty()) {
+            JOptionPane.showMessageDialog(view, "Schema Generation Complete.");
         } else {
             new ValidationResultBrowser(this)
                     .startupAction(
@@ -279,7 +270,7 @@ public class DBGeneratorOptions extends CayenneController {
                 .getURL()
                 .getPath());
         fc.setCurrentDirectory(projectDir);
-        if (fc.showSaveDialog(getView()) == JFileChooser.APPROVE_OPTION) {
+        if (fc.showSaveDialog(view) == JFileChooser.APPROVE_OPTION) {
             refreshGeneratorAction();
             try {
                 File file = fc.getSelectedFile();
@@ -297,13 +288,4 @@ public class DBGeneratorOptions extends CayenneController {
     public void closeAction() {
         view.dispose();
     }
-
-    public DBConnectionInfo getConnectionInfo() {
-        return this.connectionInfo;
-    }
-
-    public void setConnectionInfo(DBConnectionInfo connectionInfo) {
-        this.connectionInfo = connectionInfo;
-        refreshView();
-    }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoaderContext.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoaderContext.java
index bd513b83d..79c8b7ca9 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoaderContext.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoaderContext.java
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
  */
 public class DbLoaderContext {
 
-    private static Logger LOGGER = LoggerFactory.getLogger(DbLoaderContext.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(DbLoaderContext.class);
 
     private DbImportConfiguration config;
     private Connection connection;
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/LoadDataMapTask.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/LoadDataMapTask.java
index e718c1e29..46f2eed66 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/LoadDataMapTask.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/LoadDataMapTask.java
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  */
 final public class LoadDataMapTask extends LongRunningTask {
 
-    private static Logger LOGGER = LoggerFactory.getLogger(DbLoaderContext.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoadDataMapTask.class);
 
     private DbLoaderContext context;
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/merge/MergerOptions.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/merge/MergerOptions.java
index 411a206a1..8d7a47b8e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/merge/MergerOptions.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/merge/MergerOptions.java
@@ -111,14 +111,11 @@ public class MergerOptions extends CayenneController {
         refreshView();
     }
 
+    @Override
     public Component getView() {
         return view;
     }
 
-    public String getTextForSQL() {
-        return textForSQL;
-    }
-
     protected void initController() {
 
         TextBinder.bind(view.getSql(), v -> textForSQL = v);
@@ -247,7 +244,7 @@ public class MergerOptions extends CayenneController {
         // sanity check...
         List<MergerToken> tokensToMigrate = tokens.getSelectedTokens();
         if (tokensToMigrate.isEmpty()) {
-            JOptionPane.showMessageDialog(getView(), "Nothing to migrate.");
+            JOptionPane.showMessageDialog(view, "Nothing to migrate.");
             return;
         }
 
@@ -324,7 +321,7 @@ public class MergerOptions extends CayenneController {
     private void reportFailures(MergerContext mergerContext) {
         ValidationResult failures = mergerContext.getValidationResult();
         if (failures == null || !failures.hasFailures()) {
-            JOptionPane.showMessageDialog(getView(), "Migration Complete.");
+            JOptionPane.showMessageDialog(view, "Migration Complete.");
         } else {
             new ValidationResultBrowser(this).startupAction(
                     "Migration Complete",
@@ -365,7 +362,7 @@ public class MergerOptions extends CayenneController {
             fc.setCurrentDirectory(new File(projectDir.getURL().getPath()));
         }
 
-        if (fc.showSaveDialog(getView()) == JFileChooser.APPROVE_OPTION) {
+        if (fc.showSaveDialog(view) == JFileChooser.APPROVE_OPTION) {
             refreshGeneratorAction();
 
             try {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/package.html b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/package.html
deleted file mode 100644
index 309663139..000000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/package.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-     https://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
--->
-<html>
-<body>
-<p>Contains MVC classes for various database operations performed by CayenneModeler.</p>
-</body>
-</html>
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
index 6830c2ea6..07e2f37b0 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
@@ -463,7 +463,7 @@ public class ObjAttributeInfoDialog extends CayenneController implements TreeSel
 
 	public void saveMapping() {
  		if (setPath(false)) {
-			if (JOptionPane.showConfirmDialog(getView(),
+			if (JOptionPane.showConfirmDialog(view,
 					"You have changed Db Attribute path. Do you want it to be saved?", "Save ObjAttribute",
 					JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
index da745e453..e706b2f80 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
@@ -18,19 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.dialog.objentity;
 
-import javax.swing.JOptionPane;
-import javax.swing.WindowConstants;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.tree.TreePath;
-import java.awt.Component;
-import java.awt.event.ItemEvent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.dbsync.naming.NameBuilder;
@@ -60,6 +47,18 @@ import org.apache.cayenne.project.extension.info.ObjectInfo;
 import org.apache.cayenne.util.DeleteRuleUpdater;
 import org.apache.cayenne.util.Util;
 
+import javax.swing.*;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.TreePath;
+import java.awt.*;
+import java.awt.event.ItemEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
 public class ObjRelationshipInfo extends CayenneController implements TreeSelectionListener {
 
     private static final String COLLECTION_TYPE_MAP = "java.util.Map";
@@ -273,7 +272,8 @@ public class ObjRelationshipInfo extends CayenneController implements TreeSelect
 
     protected void saveMapping() {
         if (!getDbRelationships().equals(getSavedDbRelationships())) {
-            if (getSavedDbRelationships().isEmpty() || JOptionPane.showConfirmDialog(getView(),
+            if (getSavedDbRelationships().isEmpty() || JOptionPane.showConfirmDialog(
+                    view,
                     "You have changed Db Relationship path. Do you want it to be saved?", "Save ObjRelationship",
                     JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                 this.savedDbRelationships = new ArrayList<>(dbRelationships);
@@ -671,7 +671,7 @@ public class ObjRelationshipInfo extends CayenneController implements TreeSelect
         }
 
         if (getStartEntity() == null) {
-            JOptionPane.showMessageDialog(getView(), "Can't map relationship without source DbEntity. Set source DbEntity.");
+            JOptionPane.showMessageDialog(view, "Can't map relationship without source DbEntity. Set source DbEntity.");
             throw new CayenneRuntimeException("Can't map relationship without source DbEntity.");
         }
     }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/OverrideEmbeddableAttributeTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/OverrideEmbeddableAttributeTableModel.java
index 8b2d63ab8..6375a74ac 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/OverrideEmbeddableAttributeTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/OverrideEmbeddableAttributeTableModel.java
@@ -18,45 +18,40 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.dialog.objentity;
 
-import java.awt.Color;
-import java.awt.Component;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import javax.swing.DefaultCellEditor;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.ListCellRenderer;
-
 import org.apache.cayenne.dba.TypesMapping;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.EmbeddableAttribute;
 import org.apache.cayenne.map.EmbeddedAttribute;
 import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.util.CayenneTable;
 import org.apache.cayenne.modeler.util.CayenneTableModel;
 import org.apache.cayenne.modeler.util.CellEditorForAttributeTable;
 
+import javax.swing.*;
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
 public class OverrideEmbeddableAttributeTableModel extends CayenneTableModel {
 
-    private Map<String, String> overrideAttr;
-    private ObjAttribute attr;
+    // Columns
+    static final int OBJ_ATTRIBUTE = 0;
+    static final int OBJ_ATTRIBUTE_TYPE = 1;
+    static final int DB_ATTRIBUTE = 2;
+    static final int DB_ATTRIBUTE_TYPE = 3;
+
+    private final ObjAttribute attr;
     private boolean isAttributeOverrideChange;
 
     private CellEditorForAttributeTable cellEditor;
-    Collection<String> nameAttr;
     private CayenneTable table;
 
     protected List<EmbeddableAttribute> embeddableList;
@@ -65,25 +60,26 @@ public class OverrideEmbeddableAttributeTableModel extends CayenneTableModel {
         return embeddableList;
     }
 
-    public OverrideEmbeddableAttributeTableModel(ProjectController mediator,
-            Object eventSource, Collection<EmbeddableAttribute> embAttr, ObjAttribute attr) {
+    public OverrideEmbeddableAttributeTableModel(
+            ProjectController controller,
+            Object eventSource,
+            Collection<EmbeddableAttribute> embAttr,
+            ObjAttribute attr) {
 
-        super(mediator, eventSource, new ArrayList<Object>(embAttr));
-        this.embeddableList = new ArrayList<EmbeddableAttribute>(embAttr);
+        super(controller, eventSource, new ArrayList<Object>(embAttr));
+        this.embeddableList = new ArrayList<>(embAttr);
         this.attr = attr;
         this.isAttributeOverrideChange = false;
+        Map<String, String> overrideAttr;
         if (attr instanceof EmbeddedAttribute) {
             EmbeddedAttribute embeddedAttribute = (EmbeddedAttribute) attr;
-            this.overrideAttr = new TreeMap<>(embeddedAttribute.getAttributeOverrides());
+            overrideAttr = new TreeMap<>(embeddedAttribute.getAttributeOverrides());
         }
         else {
-            this.overrideAttr = null;
+            overrideAttr = null;
         }
 
-        Iterator<EmbeddableAttribute> it = embeddableList.iterator();
-
-        while (it.hasNext()) {
-            EmbeddableAttribute emb = it.next();
+        for (EmbeddableAttribute emb : embeddableList) {
             if (overrideAttr != null) {
                 if (overrideAttr.get(emb.getName()) != null) {
                     emb.setDbAttributeName(overrideAttr.get(emb.getName()));
@@ -92,20 +88,6 @@ public class OverrideEmbeddableAttributeTableModel extends CayenneTableModel {
         }
     }
 
-    public Map<String, String> getOverrideAttr() {
-        return overrideAttr;
-    }
-
-    // Columns
-    static final int OBJ_ATTRIBUTE = 0;
-    static final int OBJ_ATTRIBUTE_TYPE = 1;
-    static final int DB_ATTRIBUTE = 2;
-    static final int DB_ATTRIBUTE_TYPE = 3;
-
-    protected void orderList() {
-        // NOOP
-    }
-
     /**
      * Returns ObjAttribute class.
      */
@@ -128,10 +110,9 @@ public class OverrideEmbeddableAttributeTableModel extends CayenneTableModel {
                     .getView()).getSaveButton().setEnabled(true);
 
             if (value != null) {
-                DbEntity currentEnt = ((ObjEntity) attr.getEntity()).getDbEntity();
+                DbEntity currentEnt = attr.getEntity().getDbEntity();
                 if (currentEnt != null) {
-                    DbAttribute dbAttr = (DbAttribute) currentEnt.getAttribute(value
-                            .toString());
+                    DbAttribute dbAttr = currentEnt.getAttribute(value.toString());
                     if (dbAttr != null) {
                         fireTableCellUpdated(DB_ATTRIBUTE_TYPE, col);
                     }
@@ -198,11 +179,11 @@ public class OverrideEmbeddableAttributeTableModel extends CayenneTableModel {
     }
 
     private String getDBAttrType(String dbAttributeName) {
-        DbEntity currentEnt = ((ObjEntity) attr.getEntity()).getDbEntity();
+        DbEntity currentEnt = attr.getEntity().getDbEntity();
         if (currentEnt != null
                 && currentEnt.getAttributes() != null
                 && dbAttributeName != null) {
-            DbAttribute dbAttr = (DbAttribute) currentEnt.getAttribute(dbAttributeName);
+            DbAttribute dbAttr = currentEnt.getAttribute(dbAttributeName);
             if (dbAttr != null) {
                 return TypesMapping.getSqlNameByType(dbAttr.getType());
             }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/package.html b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/package.html
deleted file mode 100644
index 8a12232bc..000000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-     https://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
--->
-<html>
-<body>
-<p>Contains various CayenneModeler dialogs. Usually only the most simple dialogs are located
-in this package. More complicated ones are grouped by topic in "dialog" subpackages.</p>
-</body>
-</html>
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java
index 052cdf12a..39ac22453 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
 
 public class ClasspathPreferences extends CayenneController {
 
-    private static final Logger logger = LoggerFactory.getLogger(ClasspathPreferences.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ClasspathPreferences.class);
 
     private final ClasspathPreferencesView view;
     private final List<String> classPathEntries;
@@ -80,7 +80,7 @@ public class ClasspathPreferences extends CayenneController {
         try {
             cpKeys = preferences.keys();
         } catch (BackingStoreException e) {
-            logger.info("Error loading preferences", e);
+            LOGGER.info("Error loading preferences", e);
             return 0;
         }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/EncodingSelector.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/EncodingSelector.java
index f42c230d6..6fbebb4c2 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/EncodingSelector.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/EncodingSelector.java
@@ -37,7 +37,7 @@ import java.util.Vector;
  */
 public class EncodingSelector extends CayenneController {
 
-    public static final String ENCODING_PROPERTY_BINDING = "encoding";
+    public static final String ENCODING_PROPERTY = "encoding";
 
     private final EncodingSelectorView view;
     private final String systemEncoding;
@@ -98,24 +98,15 @@ public class EncodingSelector extends CayenneController {
         return charsets;
     }
 
-    @Override
-    public void bindingUpdated(String expression, Object newValue) {
-        if (ENCODING_PROPERTY_BINDING.equals(expression)) {
-            this.encoding = (newValue != null) ? newValue.toString() : null;
-            this.defaultEncoding = encoding == null || encoding.equals(systemEncoding);
-
-            view.getEncodingChoices().setSelectedItem(encoding);
-            view.getDefaultEncoding().setSelected(defaultEncoding);
-            view.getOtherEncoding().setSelected(!defaultEncoding);
-            if (defaultEncoding) {
-                view.getEncodingChoices().setEnabled(false);
-                view.getDefaultEncodingLabel().setEnabled(true);
-            }
-            else {
-                view.getEncodingChoices().setEnabled(true);
-                view.getDefaultEncodingLabel().setEnabled(false);
-            }
-        }
+    public void setSelectedEncoding(String encoding) {
+        this.encoding = encoding;
+        this.defaultEncoding = encoding == null || encoding.equals(systemEncoding);
+
+        view.getEncodingChoices().setSelectedItem(encoding);
+        view.getDefaultEncoding().setSelected(defaultEncoding);
+        view.getOtherEncoding().setSelected(!defaultEncoding);
+        view.getEncodingChoices().setEnabled(!defaultEncoding);
+        view.getDefaultEncodingLabel().setEnabled(defaultEncoding);
     }
 
     private void setEncoding(String encoding) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java
index 263db5a5f..2ce9e96ec 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java
@@ -77,9 +77,8 @@ public class GeneralPreferences extends CayenneController {
 
 		// build child controllers...
 		EncodingSelector encodingSelector = new EncodingSelector(this, view.getEncodingSelector());
-		encodingSelector.addPropertyChangeListener(EncodingSelector.ENCODING_PROPERTY_BINDING,
-				evt -> setEncoding((String) evt.getNewValue()));
-		encodingSelector.bindingUpdated(EncodingSelector.ENCODING_PROPERTY_BINDING, encoding);
+		encodingSelector.addPropertyChangeListener(EncodingSelector.ENCODING_PROPERTY, evt -> setEncoding((String) evt.getNewValue()));
+		encodingSelector.setSelectedEncoding(encoding);
 
 		view.getAutoLoadProject().addActionListener(e -> setAutoLoadProject(view.getAutoLoadProject().isSelected()));
 		view.getDeletePrompt().addActionListener(e -> setDeletePrompt(view.getDeletePrompt().isSelected()));
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/validator/ValidationDisplayHandler.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/validator/ValidationDisplayHandler.java
index 5f27f0330..73337fa51 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/validator/ValidationDisplayHandler.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/validator/ValidationDisplayHandler.java
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class ValidationDisplayHandler {
 
-    private static Logger logObj = LoggerFactory.getLogger(ValidationDisplayHandler.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ValidationDisplayHandler.class);
 
     public static final int NO_ERROR = 0;
     public static final int WARNING = 1;
@@ -91,7 +91,7 @@ public abstract class ValidationDisplayHandler {
         }
         else {
             // do nothing ... this maybe a project node that is not displayed
-            logObj.info("unknown project node: " + validatedObj);
+            LOGGER.info("unknown project node: " + validatedObj);
             msg = new NullHanlder(result);
         }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java
index 3ecb0cd71..7d6cb85d5 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java
@@ -81,7 +81,7 @@ import java.util.Map;
  */
 public abstract class AbstractCallbackMethodsTab extends JPanel {
 
-    private static final Logger logger = LoggerFactory.getLogger(AbstractCallbackMethodsTab.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractCallbackMethodsTab.class);
 
     /**
      * Min sizes for the table columns
@@ -460,7 +460,7 @@ public abstract class AbstractCallbackMethodsTab extends JPanel {
                 try {
                     callbackMethod = (String) t.getTransferData(DataFlavor.stringFlavor);
                 } catch (Exception e) {
-                    logger.warn("Error transferring", e);
+                    LOGGER.warn("Error transferring", e);
                     return false;
                 }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackDescriptorTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackDescriptorTableModel.java
index 1e952a46c..1b2a9a64c 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackDescriptorTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackDescriptorTableModel.java
@@ -18,8 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.editor;
 
-import java.util.List;
-
 import org.apache.cayenne.map.CallbackDescriptor;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.event.MapEvent;
@@ -27,6 +25,8 @@ import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.event.CallbackMethodEvent;
 import org.apache.cayenne.modeler.util.CayenneTableModel;
 
+import java.util.List;
+
 /**
  * Table model for displaying methods list for a particular CallbackDescriptor
  */
@@ -133,20 +133,20 @@ public class CallbackDescriptorTableModel extends CayenneTableModel<String> {
         if (method != null) {
             method = method.trim();
         }
-        String prevMethod = getObjectList().get(row);
+        String prevMethod = objectList.get(row);
 
-        if (method != null && method.length() > 0) {
+        if (method != null && !method.isEmpty()) {
             // check that method changed and name is not duplicate
             if (!method.equals(prevMethod) && !getCallbackDescriptor().getCallbackMethods().contains(method)) {
                 // update model
-                getObjectList().set(row, method);
+                objectList.set(row, method);
 
                 // update entity
                 getCallbackDescriptor().setCallbackMethodAt(row, method);
 
                 fireTableRowsUpdated(row, row);
 
-                mediator.fireCallbackMethodEvent(new CallbackMethodEvent(
+                controller.fireCallbackMethodEvent(new CallbackMethodEvent(
                         eventSource,
                         prevMethod,
                         method,
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EjbqlQueryScriptsTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EjbqlQueryScriptsTab.java
index 3520e95f5..4bb63b207 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EjbqlQueryScriptsTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EjbqlQueryScriptsTab.java
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
 
 public class EjbqlQueryScriptsTab extends JPanel implements DocumentListener {
 
-    private static final Logger logger = LoggerFactory.getLogger(EjbqlQueryScriptsTab.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(EjbqlQueryScriptsTab.class);
 
     protected ProjectController mediator;
     protected JCayenneTextPane scriptArea;
@@ -80,7 +80,7 @@ public class EjbqlQueryScriptsTab extends JPanel implements DocumentListener {
                         validateEJBQL();
                     }
                 } catch (BadLocationException ex) {
-                    logger.warn("Error reading document", ex);
+                    LOGGER.warn("Error reading document", ex);
                 }
             }
 
@@ -163,7 +163,7 @@ public class EjbqlQueryScriptsTab extends JPanel implements DocumentListener {
         try {
             setEJBQL(doc.getText(0, doc.getLength()));
         } catch (BadLocationException ex) {
-            logger.warn("Error reading document", ex);
+            LOGGER.warn("Error reading document", ex);
         }
     }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EmbeddableAttributeTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EmbeddableAttributeTab.java
index 54f6b1e57..238154867 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EmbeddableAttributeTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EmbeddableAttributeTab.java
@@ -18,20 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.editor;
 
-import java.awt.BorderLayout;
-import java.util.EventObject;
-import java.util.List;
-
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JToolBar;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.table.TableColumn;
-
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.Embeddable;
@@ -59,18 +45,23 @@ import org.apache.cayenne.modeler.util.PanelFactory;
 import org.apache.cayenne.modeler.util.UIUtil;
 import org.apache.cayenne.modeler.util.combo.AutoCompletion;
 
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.table.TableColumn;
+import java.awt.*;
+import java.util.EventObject;
+import java.util.List;
+
 public class EmbeddableAttributeTab extends JPanel implements
         EmbeddableAttributeListener, EmbeddableDisplayListener, EmbeddableListener,
         ExistingSelectionProcessor {
 
-    protected ProjectController mediator;
-    protected CayenneTable table;
-    protected TableColumnPreferences tablePreferences;
+    private final ProjectController controller;
+    private CayenneTable table;
+    private TableColumnPreferences tablePreferences;
 
-    JButton resolve;
-
-    public EmbeddableAttributeTab(ProjectController mediator) {
-        this.mediator = mediator;
+    public EmbeddableAttributeTab(ProjectController controller) {
+        this.controller = controller;
         init();
         initController();
     }
@@ -115,18 +106,13 @@ public class EmbeddableAttributeTab extends JPanel implements
     }
 
     private void initController() {
-        mediator.addEmbeddableAttributeListener(this);
-        mediator.addEmbeddableDisplayListener(this);
-        mediator.addEmbeddableListener(this);
-
-        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+        controller.addEmbeddableAttributeListener(this);
+        controller.addEmbeddableDisplayListener(this);
+        controller.addEmbeddableListener(this);
 
-            public void valueChanged(ListSelectionEvent e) {
-                processExistingSelection(e);
-            }
-        });
+        table.getSelectionModel().addListSelectionListener(this::processExistingSelection);
 
-        mediator.getApplication().getActionManager().setupCutCopyPaste(
+        controller.getApplication().getActionManager().setupCutCopyPaste(
                 table,
                 CutAttributeAction.class,
                 CopyAttributeAction.class);
@@ -157,29 +143,28 @@ public class EmbeddableAttributeTab extends JPanel implements
 
         EmbeddableAttributeDisplayEvent ev = new EmbeddableAttributeDisplayEvent(
                 this,
-                mediator.getCurrentEmbeddable(),
+                controller.getCurrentEmbeddable(),
                 attrs,
-                mediator.getCurrentDataMap(),
-                (DataChannelDescriptor) mediator.getProject().getRootNode());
+                controller.getCurrentDataMap(),
+                (DataChannelDescriptor) controller.getProject().getRootNode());
 
-        mediator.fireEmbeddableAttributeDisplayEvent(ev);
+        controller.fireEmbeddableAttributeDisplayEvent(ev);
     }
 
     private void rebuildTable(Embeddable emb) {
         EmbeddableAttributeTableModel model = new EmbeddableAttributeTableModel(
                 emb,
-                mediator,
+                controller,
                 this);
         table.setModel(model);
         table.setRowHeight(25);
         table.setRowMargin(3);
-        setUpTableStructure(model);
+        setUpTableStructure();
     }
 
-    private void setUpTableStructure(EmbeddableAttributeTableModel model) {
+    private void setUpTableStructure() {
 
-        TableColumn typeColumn = table.getColumnModel().getColumn(
-                EmbeddableAttributeTableModel.OBJ_ATTRIBUTE_TYPE);
+        TableColumn typeColumn = table.getColumnModel().getColumn(EmbeddableAttributeTableModel.OBJ_ATTRIBUTE_TYPE);
         JComboBox javaTypesCombo = Application.getWidgetFactory().createComboBox(
                 ModelerUtil.getRegisteredTypeNames(),
                 false);
@@ -221,7 +206,7 @@ public class EmbeddableAttributeTab extends JPanel implements
     }
 
     public void embeddableAttributeAdded(EmbeddableAttributeEvent e) {
-        rebuildTable((Embeddable) e.getEmbeddable());
+        rebuildTable(e.getEmbeddable());
         table.select(e.getEmbeddableAttribute());
     }
 
@@ -243,7 +228,7 @@ public class EmbeddableAttributeTab extends JPanel implements
             return;
         }
 
-        Embeddable embeddable = (Embeddable) e.getEmbeddable();
+        Embeddable embeddable = e.getEmbeddable();
         if (embeddable != null) {
             rebuildTable(embeddable);
         }
@@ -257,7 +242,7 @@ public class EmbeddableAttributeTab extends JPanel implements
 
     public void embeddableChanged(EmbeddableEvent e, DataMap map) {
         if (e.getOldName() != null) {
-            ((Embeddable) map.getEmbeddable(e.getOldName())).setClassName(e
+            map.getEmbeddable(e.getOldName()).setClassName(e
                     .getEmbeddable()
                     .getClassName());
             if (map.getEmbeddableMap().containsKey(e.getOldName())) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EmbeddableAttributeTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EmbeddableAttributeTableModel.java
index 4ef09852f..dc04cbf15 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EmbeddableAttributeTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EmbeddableAttributeTableModel.java
@@ -91,7 +91,7 @@ public class EmbeddableAttributeTableModel extends CayenneTableModel {
             fireTableCellUpdated(row, col);
         }
 
-        mediator.fireEmbeddableAttributeEvent(event);
+        controller.fireEmbeddableAttributeEvent(event);
     }
 
     public int getColumnCount() {
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 b8d1cea37..d9d576c9b 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
@@ -288,7 +288,7 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
         }
 
         ObjAttribute attributeNew;
-        if (mediator.getEmbeddableNamesInCurrentDataDomain().contains(newType)) {
+        if (controller.getEmbeddableNamesInCurrentDataDomain().contains(newType)) {
             attributeNew = new EmbeddedAttribute();
             attributeNew.setDbAttributePath((String)null);
         } else {
@@ -306,26 +306,26 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
 
         entity.updateAttribute(attributeNew);
 
-        mediator.fireObjEntityEvent(new EntityEvent(this, entity, MapEvent.CHANGE));
+        controller.fireObjEntityEvent(new EntityEvent(this, entity, MapEvent.CHANGE));
 
-        mediator.fireObjEntityDisplayEvent(new EntityDisplayEvent(
+        controller.fireObjEntityDisplayEvent(new EntityDisplayEvent(
                 this,
-                mediator.getCurrentObjEntity(),
-                mediator.getCurrentDataMap(),
-                (DataChannelDescriptor) mediator.getProject().getRootNode()));
+                controller.getCurrentObjEntity(),
+                controller.getCurrentDataMap(),
+                (DataChannelDescriptor) controller.getProject().getRootNode()));
 
-        mediator.fireObjAttributeEvent(new AttributeEvent(
+        controller.fireObjAttributeEvent(new AttributeEvent(
                 this,
                 attributeNew,
                 entity,
                 MapEvent.CHANGE));
 
-        mediator.fireObjAttributeDisplayEvent(new AttributeDisplayEvent(
+        controller.fireObjAttributeDisplayEvent(new AttributeDisplayEvent(
                 this,
                 attributeNew,
-                mediator.getCurrentObjEntity(),
-                mediator.getCurrentDataMap(),
-                (DataChannelDescriptor) mediator.getProject().getRootNode()));
+                controller.getCurrentObjEntity(),
+                controller.getCurrentDataMap(),
+                (DataChannelDescriptor) controller.getProject().getRootNode()));
     }
 
     private void setColumnLocking(ObjAttributeWrapper attribute, Object value) {
@@ -387,7 +387,7 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
                 fireTableRowsUpdated(row, row);
                 break;
         }
-        mediator.fireObjAttributeEvent(event);
+        controller.fireObjAttributeEvent(event);
     }
 
     public boolean isCellEditable(int row, int col) {
@@ -491,11 +491,11 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
     }
 
     private String getComment(ObjAttribute attr) {
-        return ObjectInfo.getFromMetaData(mediator.getApplication().getMetaData(), attr, ObjectInfo.COMMENT);
+        return ObjectInfo.getFromMetaData(controller.getApplication().getMetaData(), attr, ObjectInfo.COMMENT);
     }
 
     private void setComment(String newVal, ObjAttribute attr) {
-        ObjectInfo.putToMetaData(mediator.getApplication().getMetaData(), attr, ObjectInfo.COMMENT, newVal);
+        ObjectInfo.putToMetaData(controller.getApplication().getMetaData(), attr, ObjectInfo.COMMENT, newVal);
     }
 
     @Override
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
index 08d291a56..d45e9515f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
@@ -84,7 +84,7 @@ import org.slf4j.LoggerFactory;
 public class ObjEntityRelationshipPanel extends JPanel implements ObjEntityDisplayListener,
         ObjEntityListener, ObjRelationshipListener {
 
-    private static Logger logObj = LoggerFactory.getLogger(ObjEntityRelationshipPanel.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ObjEntityRelationshipPanel.class);
 
     private static final ImageIcon INHERITANCE_ICON = ModelerUtil.buildIcon("icon-inheritance.png");
 
@@ -263,12 +263,12 @@ public class ObjEntityRelationshipPanel extends JPanel implements ObjEntityDispl
 
         // this actually happens per CAY-221... can't reproduce though
         if (map == null) {
-            logObj.warn("createObjEntityComboModel:: Null DataMap.");
+            LOGGER.warn("createObjEntityComboModel:: Null DataMap.");
             return new Object[0];
         }
 
         if (map.getNamespace() == null) {
-            logObj.warn("createObjEntityComboModel:: Null DataMap namespace - " + map);
+            LOGGER.warn("createObjEntityComboModel:: Null DataMap namespace - " + map);
             return new Object[0];
         }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
index 90d5531f0..c2224de0f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
@@ -210,7 +210,7 @@ public class ObjRelationshipTableModel extends CayenneTableModel<ObjRelationship
                 break;
         }
 
-        mediator.fireObjRelationshipEvent(event);
+        controller.fireObjRelationshipEvent(event);
     }
 
     public void removeRow(int row) {
@@ -220,7 +220,7 @@ public class ObjRelationshipTableModel extends CayenneTableModel<ObjRelationship
         ObjRelationship rel = getRelationship(row);
         RelationshipEvent e;
         e = new RelationshipEvent(eventSource, rel, entity, RelationshipEvent.REMOVE);
-        mediator.fireObjRelationshipEvent(e);
+        controller.fireObjRelationshipEvent(e);
         objectList.remove(row);
         entity.removeRelationship(rel.getName());
         fireTableRowsDeleted(row, row);
@@ -319,10 +319,10 @@ public class ObjRelationshipTableModel extends CayenneTableModel<ObjRelationship
     }
 
     private String getComment(ObjRelationship rel) {
-        return ObjectInfo.getFromMetaData(mediator.getApplication().getMetaData(), rel, ObjectInfo.COMMENT);
+        return ObjectInfo.getFromMetaData(controller.getApplication().getMetaData(), rel, ObjectInfo.COMMENT);
     }
 
     private void setComment(String newVal, ObjRelationship rel) {
-        ObjectInfo.putToMetaData(mediator.getApplication().getMetaData(), rel, ObjectInfo.COMMENT, newVal);
+        ObjectInfo.putToMetaData(controller.getApplication().getMetaData(), rel, ObjectInfo.COMMENT, newVal);
     }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTableModel.java
index 40bed39d6..9d90d471a 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTableModel.java
@@ -99,7 +99,7 @@ public class ProcedureParameterTableModel extends CayenneTableModel<ProcedurePar
                 setPrecision(value, parameter);
                 break;
         }
-        mediator.fireProcedureParameterEvent(event);
+        controller.fireProcedureParameterEvent(event);
     }
 
     protected void setPrecision(String newVal, ProcedureParameter parameter) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
index e0213ef8f..127efed7c 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
@@ -62,7 +62,7 @@ import java.util.Map;
 public class SQLTemplateScriptsTab extends JPanel {
 
     private static final String DEFAULT_LABEL = "Default";
-    private static final Logger logger = LoggerFactory.getLogger(SQLTemplateScriptsTab.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(SQLTemplateScriptsTab.class);
 
     protected ProjectController mediator;
 
@@ -224,7 +224,7 @@ public class SQLTemplateScriptsTab extends JPanel {
         try {
             text = doc.getText(0, doc.getLength());
         } catch (BadLocationException ex) {
-            logger.warn("Error reading document", ex);
+            LOGGER.warn("Error reading document", ex);
         }
 
         if (text != null) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SelectPropertiesPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SelectPropertiesPanel.java
index 064ee057f..5d3febaaf 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SelectPropertiesPanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SelectPropertiesPanel.java
@@ -53,7 +53,7 @@ import static org.apache.cayenne.util.Util.isNumeric;
  */
 public abstract class SelectPropertiesPanel extends JPanel {
 
-    private static final Logger logObj = LoggerFactory.getLogger(SelectPropertiesPanel.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(SelectPropertiesPanel.class);
 
     private static final Integer ZERO = 0;
 
@@ -231,7 +231,7 @@ public abstract class SelectPropertiesPanel extends JPanel {
                 mediator.fireQueryEvent(new QueryEvent(this, query));
             }
             catch (Exception ex) {
-                logObj.warn("Error setting property: " + property, ex);
+                LOGGER.warn("Error setting property: " + property, ex);
             }
         }
     }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CgenConfigController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CgenConfigController.java
index 85ab6dd68..857e4bffa 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CgenConfigController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CgenConfigController.java
@@ -142,6 +142,7 @@ public class CgenConfigController extends CayenneController {
         }
     }
 
+    @Override
     public CgenConfigPanel getView() {
         return view;
     }
@@ -150,13 +151,13 @@ public class CgenConfigController extends CayenneController {
         this.cgenConfiguration = cgenConfiguration;
 
         if (cgenConfiguration.getRootPath() != null) {
-            getView().getOutputFolder().setText(cgenConfiguration.buildOutputPath().toString());
+            view.getOutputFolder().setText(cgenConfiguration.buildOutputPath().toString());
         }
         if(cgenConfiguration.getArtifactsGenerationMode().equalsIgnoreCase("all")) {
             getParentController().setCurrentClass(cgenConfiguration.getDataMap());
             getParentController().setSelected(true);
         }
-        getView().getOutputFolder().updateModel();
+        view.getOutputFolder().updateModel();
         view.getOutputPattern().setText(cgenConfiguration.getOutputPattern());
         view.getPairs().setSelected(cgenConfiguration.isMakePairs());
         view.getUsePackagePath().setSelected(cgenConfiguration.isUsePkgPath());
@@ -169,7 +170,6 @@ public class CgenConfigController extends CayenneController {
 
     /**
      * Adds or removes mark "edited" to template labels.
-     * @param configuration
      */
     public void updateTemplatesLabels(CgenConfiguration configuration) {
         updateTemplateLabel(view.getEntityTemplateLbl(), TemplateType.ENTITY_SUBCLASS, configuration.getTemplate().getData());
@@ -234,7 +234,7 @@ public class CgenConfigController extends CayenneController {
      */
     public void selectOutputFolderAction() {
 
-        TextAdapter outputFolder = getView().getOutputFolder();
+        TextAdapter outputFolder = view.getOutputFolder();
         String currentDir = outputFolder.getComponent().getText();
 
         JFileChooser chooser = new JFileChooser();
@@ -249,14 +249,14 @@ public class CgenConfigController extends CayenneController {
             lastDir.updateChooser(chooser);
         }
 
-        int result = chooser.showOpenDialog(getView());
+        int result = chooser.showOpenDialog(view);
         if (result == JFileChooser.APPROVE_OPTION) {
             File selected = chooser.getSelectedFile();
 
             // update model
             String path = selected.getAbsolutePath();
-            getView().getOutputFolder().setText(path);
-            getView().getOutputFolder().updateModel();
+            view.getOutputFolder().setText(path);
+            view.getOutputFolder().updateModel();
         }
     }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CgenController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CgenController.java
index 2b6146c1e..53518571b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CgenController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CgenController.java
@@ -26,8 +26,8 @@ import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
 import org.apache.cayenne.configuration.event.DataMapEvent;
 import org.apache.cayenne.configuration.event.DataMapListener;
 import org.apache.cayenne.configuration.xml.DataChannelMetaData;
-import org.apache.cayenne.gen.CgenConfiguration;
 import org.apache.cayenne.gen.CgenConfigList;
+import org.apache.cayenne.gen.CgenConfiguration;
 import org.apache.cayenne.gen.ClassGenerationAction;
 import org.apache.cayenne.gen.ClassGenerationActionFactory;
 import org.apache.cayenne.gen.internal.Utils;
@@ -40,7 +40,6 @@ import org.apache.cayenne.map.event.EmbeddableListener;
 import org.apache.cayenne.map.event.EntityEvent;
 import org.apache.cayenne.map.event.ObjEntityListener;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.dialog.ErrorDebugDialog;
 import org.apache.cayenne.modeler.dialog.pref.GeneralPreferences;
 import org.apache.cayenne.modeler.editor.DbImportController;
 import org.apache.cayenne.modeler.event.ProjectSavedEvent;
@@ -50,7 +49,7 @@ import org.apache.cayenne.tools.ToolsInjectorBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.swing.JOptionPane;
+import javax.swing.*;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Collection;
@@ -67,13 +66,16 @@ import java.util.stream.Collectors;
  * @since 4.1
  */
 public class CgenController extends CayenneController implements ObjEntityListener, EmbeddableListener, DataMapListener {
-    private static final Logger LOGGER = LoggerFactory.getLogger(ErrorDebugDialog.class);
-    protected final ProjectController projectController;
-    protected final Set<ConfigurationNode> classes;
-    protected final SelectionModel selectionModel;
-    protected final CgenPane view;
-    protected CgenArtefactSelectorController classesSelector;
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(CgenController.class);
+
+    private final ProjectController projectController;
+    private final Set<ConfigurationNode> classes;
+    private final SelectionModel selectionModel;
+    private final CgenPane view;
+    private final CgenArtefactSelectorController classesSelector;
     private final CgenConfigController cgenConfigController;
+
     private CgenConfigList cgenConfigList;
     private Object currentClass;
     private CgenConfiguration cgenConfiguration;
@@ -173,17 +175,17 @@ public class CgenController extends CayenneController implements ObjEntityListen
             generator.prepareArtifacts();
             generator.execute();
             JOptionPane.showMessageDialog(
-                    this.getView(),
+                    view,
                     "Class generation finished");
         } catch (CayenneRuntimeException e) {
             LOGGER.error("Error generating classes", e);
             JOptionPane.showMessageDialog(
-                    this.getView(),
+                    view,
                     "Error generating classes - " + e.getUnlabeledMessage());
         } catch (Exception e) {
             LOGGER.error("Error generating classes", e);
             JOptionPane.showMessageDialog(
-                    this.getView(),
+                    view,
                     "Error generating classes - " + e.getMessage());
         }
     }
@@ -203,7 +205,7 @@ public class CgenController extends CayenneController implements ObjEntityListen
                 view.getConfigurationsComboBox().setSelectedItem(name);
             } else {
                 JOptionPane.showMessageDialog(
-                        this.getView(),
+                        view,
                         "Can't create new configuration, same name is already exist or empty");
             }
         }
@@ -223,7 +225,7 @@ public class CgenController extends CayenneController implements ObjEntityListen
                 view.getConfigurationsComboBox().setSelectedItem(name);
             } else {
                 JOptionPane.showMessageDialog(
-                        this.getView(),
+                        view,
                         "Can't rename configuration, name is already exist or empty");
             }
         }
@@ -244,7 +246,7 @@ public class CgenController extends CayenneController implements ObjEntityListen
                 view.getConfigurationsComboBox().setSelectedIndex(0);
             } else {
                 JOptionPane.showMessageDialog(
-                        this.getView(),
+                        view,
                         "At least one configuration must exist");
             }
         }
@@ -552,7 +554,7 @@ public class CgenController extends CayenneController implements ObjEntityListen
         }
     });
 
-    private static final ConfigurationNodeVisitor<Integer> TYPE_GETTER = new BaseConfigurationNodeVisitor<Integer>() {
+    private static final ConfigurationNodeVisitor<Integer> TYPE_GETTER = new BaseConfigurationNodeVisitor<>() {
         @Override
         public Integer visitDataMap(DataMap dataMap) {
             return 10;
@@ -569,7 +571,7 @@ public class CgenController extends CayenneController implements ObjEntityListen
         }
     };
 
-    private static final ConfigurationNodeVisitor<String> NAME_GETTER = new BaseConfigurationNodeVisitor<String>() {
+    private static final ConfigurationNodeVisitor<String> NAME_GETTER = new BaseConfigurationNodeVisitor<>() {
         @Override
         public String visitDataMap(DataMap dataMap) {
             return dataMap.getName();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/templateeditor/EditorTemplateLoader.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/templateeditor/EditorTemplateLoader.java
index 4921d4ef1..c394a6724 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/templateeditor/EditorTemplateLoader.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/templateeditor/EditorTemplateLoader.java
@@ -36,7 +36,7 @@ import java.nio.charset.StandardCharsets;
  */
 public class EditorTemplateLoader {
 
-    private static final Logger logger = LoggerFactory.getLogger(EditorTemplateLoader.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(EditorTemplateLoader.class);
     private final CgenConfiguration cgenConfiguration;
     private final JFrame view;
 
@@ -65,7 +65,7 @@ public class EditorTemplateLoader {
                     "File reading error \n" + templateType.pathFromSourceRoot(),
                     "Error",
                     JOptionPane.WARNING_MESSAGE);
-            logger.warn("File reading error {}", templateType.pathFromSourceRoot());
+            LOGGER.warn("File reading error {}", templateType.pathFromSourceRoot());
         }
         return null;
     }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/templateeditor/TemplateEditorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/templateeditor/TemplateEditorController.java
index c0c370513..ce8d3c677 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/templateeditor/TemplateEditorController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/templateeditor/TemplateEditorController.java
@@ -49,7 +49,7 @@ public class TemplateEditorController extends CayenneController {
     private Boolean isTemplateModified;
     private Boolean isTemplateDefault;
     private ArtefactsConfigurator artefactsConfigurator;
-    private TemplateEditorView editorView;
+    private TemplateEditorView view;
     private PreviewActionConfigurator actionConfigurator;
 
 
@@ -63,18 +63,18 @@ public class TemplateEditorController extends CayenneController {
 
     public void startupAction() {
         this.artefactsConfigurator = setupArtefactConfigurator();
-        this.editorView = new TemplateEditorView(artefactsConfigurator.getArtifactsNames(currentDataMap));
+        this.view = new TemplateEditorView(artefactsConfigurator.getArtifactsNames(currentDataMap));
         this.actionConfigurator = new PreviewActionConfigurator(this);
         this.isTemplateDefault = TemplateType.isDefault(configuration.getTemplateByType(templateType).getData());
         this.isTemplateModified = false;
-        this.templateLoader = new EditorTemplateLoader(configuration, this.editorView);
+        this.templateLoader = new EditorTemplateLoader(configuration, this.view);
         this.templateSaver = new EditorTemplateSaver(configuration);
 
         configureEditorView(templateType);
         addListeners();
         centerView();
         initBindings();
-        this.editorView.setVisible(true);
+        this.view.setVisible(true);
     }
 
     private ArtefactsConfigurator setupArtefactConfigurator() {
@@ -97,28 +97,28 @@ public class TemplateEditorController extends CayenneController {
     }
 
     private void configureEditorView(TemplateType templateType) {
-        this.editorView.getEditingTemplatePane().setText(templateLoader.load(templateType, isTemplateDefault));
-        this.editorView.getEditingTemplatePane().discardAllEdits();
-        this.editorView.editingTemplatePane.setCaretPosition(0);
-        this.editorView.getSaveButton().setEnabled(isTemplateModified);
-        this.editorView.setTitle(templateType.readableName() + " - cayenne template editor");
+        this.view.getEditingTemplatePane().setText(templateLoader.load(templateType, isTemplateDefault));
+        this.view.getEditingTemplatePane().discardAllEdits();
+        this.view.editingTemplatePane.setCaretPosition(0);
+        this.view.getSaveButton().setEnabled(isTemplateModified);
+        this.view.setTitle(templateType.readableName() + " - cayenne template editor");
     }
 
     @Override
     public TemplateEditorView getView() {
-        return editorView;
+        return view;
     }
 
     protected void initBindings() {
-        editorView.getSaveButton().addActionListener(e -> saveAction());
-        editorView.getPreviewButton().addActionListener(e -> generatePreviewAction());
-        editorView.getFindButton().addActionListener(e -> findAction());
-        editorView.getFindAndReplaceButton().addActionListener(e -> findAndReplaceAction());
-        editorView.getResetToDefaultButton().addActionListener(e -> resetToDefaultAction());
+        view.getSaveButton().addActionListener(e -> saveAction());
+        view.getPreviewButton().addActionListener(e -> generatePreviewAction());
+        view.getFindButton().addActionListener(e -> findAction());
+        view.getFindAndReplaceButton().addActionListener(e -> findAndReplaceAction());
+        view.getResetToDefaultButton().addActionListener(e -> resetToDefaultAction());
     }
 
     protected void addListeners() {
-        editorView.getEditingTemplatePane().getDocument().addDocumentListener(new DocumentListener() {
+        view.getEditingTemplatePane().getDocument().addDocumentListener(new DocumentListener() {
             @Override
             public void insertUpdate(DocumentEvent e) {//noop
             }
@@ -131,11 +131,11 @@ public class TemplateEditorController extends CayenneController {
             public void changedUpdate(DocumentEvent e) {
                 isTemplateModified = true;
                 isTemplateDefault = false;
-                editorView.getSaveButton().setEnabled(true);
+                view.getSaveButton().setEnabled(true);
             }
         });
 
-        editorView.addWindowListener(new WindowAdapter() {
+        view.addWindowListener(new WindowAdapter() {
             @Override
             public void windowOpened(WindowEvent e) {
                 parentController.setEditorOpen(true);
@@ -143,7 +143,7 @@ public class TemplateEditorController extends CayenneController {
             }
         });
 
-        editorView.addWindowListener(new WindowAdapter() {
+        view.addWindowListener(new WindowAdapter() {
             @Override
             public void windowClosing(WindowEvent e) {
                 if (isTemplateModified && showUnsavedChangesCloseDialog() == 0) {
@@ -157,19 +157,19 @@ public class TemplateEditorController extends CayenneController {
     }
 
     public void saveAction() {
-        templateSaver.save(templateType, isTemplateDefault, editorView.getTemplateText());
+        templateSaver.save(templateType, isTemplateDefault, view.getTemplateText());
         parentController.getCodeGeneratorController().checkCgenConfigDirty();
         isTemplateModified = false;
         parentController.updateTemplatesLabels(configuration);
-        editorView.getSaveButton().setEnabled(false);
+        view.getSaveButton().setEnabled(false);
     }
 
     public void generatePreviewAction() {
         try {
-            ClassGenerationAction action = actionConfigurator.preparePreviewAction(editorView.getTemplateText());
+            ClassGenerationAction action = actionConfigurator.preparePreviewAction(view.getTemplateText());
             Writer writer = actionConfigurator.getWriter();
 
-            int caretPosition = editorView.getEditingTemplatePane().getCaretPosition();
+            int caretPosition = view.getEditingTemplatePane().getCaretPosition();
             try {
                 action.execute();
             } catch (ParseErrorException pe) {
@@ -180,20 +180,20 @@ public class TemplateEditorController extends CayenneController {
             }
             displayPreview(writer, caretPosition);
         } catch (Exception e) {
-            JOptionPane.showMessageDialog(editorView, e.getMessage(), "Preview Error", JOptionPane.ERROR_MESSAGE);
+            JOptionPane.showMessageDialog(view, e.getMessage(), "Preview Error", JOptionPane.ERROR_MESSAGE);
         }
     }
 
     private void displayPreview(Writer writer, int caretPosition) {
-        editorView.getEditingTemplatePane().setCaretPosition(caretPosition);
-        editorView.getClassPreviewPane().setText(null);
-        editorView.getClassPreviewPane().setText(writer.toString());
-        editorView.getClassPreviewPane().setCaretPosition(0);
+        view.getEditingTemplatePane().setCaretPosition(caretPosition);
+        view.getClassPreviewPane().setText(null);
+        view.getClassPreviewPane().setText(writer.toString());
+        view.getClassPreviewPane().setCaretPosition(0);
     }
 
     private int getErrorCaretPosition(ParseErrorException e) throws BadLocationException {
         int errorLineNumber = e.getLineNumber();
-        return editorView.getEditingTemplatePane().getLineStartOffset(errorLineNumber - 1);
+        return view.getEditingTemplatePane().getLineStartOffset(errorLineNumber - 1);
     }
 
     public void findAction() {
@@ -207,8 +207,8 @@ public class TemplateEditorController extends CayenneController {
     public void resetToDefaultAction() {
         int result = showResetToDefaultDialog();
         if (result == JOptionPane.OK_OPTION) {
-            editorView.getEditingTemplatePane().setText(templateLoader.load(templateType, true));
-            editorView.getEditingTemplatePane().setCaretPosition(0);
+            view.getEditingTemplatePane().setText(templateLoader.load(templateType, true));
+            view.getEditingTemplatePane().setCaretPosition(0);
             isTemplateModified = true;
             isTemplateDefault = true;
         }
@@ -268,6 +268,6 @@ public class TemplateEditorController extends CayenneController {
     }
 
     public String getSelectedArtifactName() {
-        return getView().getSelectedArtifactName();
+        return view.getSelectedArtifactName();
     }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/datanode/MainDataNodeEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/datanode/MainDataNodeEditor.java
index 57915024e..bd2dcecd8 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/datanode/MainDataNodeEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/datanode/MainDataNodeEditor.java
@@ -19,15 +19,6 @@
 
 package org.apache.cayenne.modeler.editor.datanode;
 
-import java.awt.Component;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.swing.DefaultComboBoxModel;
-
 import org.apache.cayenne.access.dbsync.CreateIfNoSchemaStrategy;
 import org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy;
 import org.apache.cayenne.access.dbsync.ThrowOnPartialOrCreateSchemaStrategy;
@@ -45,6 +36,14 @@ import org.apache.cayenne.modeler.util.ProjectUtil;
 import org.apache.cayenne.modeler.util.TextBinder;
 import org.apache.cayenne.validation.ValidationException;
 
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * A controller for the main tab of the DataNode editor panel.
  * 
@@ -91,8 +90,7 @@ public class MainDataNodeEditor extends CayenneController {
 		initController();
 	}
 
-	// ======= properties
-
+	@Override
 	public Component getView() {
 		return view;
 	}
@@ -170,7 +168,7 @@ public class MainDataNodeEditor extends CayenneController {
 		// init listeners
 		((ProjectController) getParent()).addDataNodeDisplayListener(e -> refreshView(e.getDataNode()));
 
-		getView().addComponentListener(new ComponentAdapter() {
+		view.addComponentListener(new ComponentAdapter() {
 
 			public void componentShown(ComponentEvent e) {
 				refreshView(node != null ? node : ((ProjectController) getParent()).getCurrentDataNode());
@@ -257,7 +255,7 @@ public class MainDataNodeEditor extends CayenneController {
 		this.node = node;
 
 		if (node == null) {
-			getView().setVisible(false);
+			view.setVisible(false);
 			return;
 		}
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbAttributeTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbAttributeTableModel.java
index 4998183fe..47427795e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbAttributeTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbAttributeTableModel.java
@@ -201,7 +201,7 @@ public class DbAttributeTableModel extends CayenneTableModel<DbAttribute> {
                 break;
         }
 
-        mediator.fireDbAttributeEvent(e);
+        controller.fireDbAttributeEvent(e);
     }
 
     public String getMaxLength(DbAttribute attr) {
@@ -229,7 +229,7 @@ public class DbAttributeTableModel extends CayenneTableModel<DbAttribute> {
     }
 
     public String getComment(DbAttribute attr) {
-        return ObjectInfo.getFromMetaData(mediator.getApplication().getMetaData(), attr, ObjectInfo.COMMENT);
+        return ObjectInfo.getFromMetaData(controller.getApplication().getMetaData(), attr, ObjectInfo.COMMENT);
     }
 
     public void setMaxLength(String newVal, DbAttribute attr) {
@@ -325,7 +325,7 @@ public class DbAttributeTableModel extends CayenneTableModel<DbAttribute> {
     }
 
     public void setComment(String newVal, DbAttribute attr) {
-        ObjectInfo.putToMetaData(mediator.getApplication().getMetaData(), attr, ObjectInfo.COMMENT, newVal);
+        ObjectInfo.putToMetaData(controller.getApplication().getMetaData(), attr, ObjectInfo.COMMENT, newVal);
     }
 
     public boolean isCellEditable(int row, int col) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbRelationshipTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbRelationshipTableModel.java
index cb27cad21..47bfc381b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbRelationshipTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbRelationshipTableModel.java
@@ -122,11 +122,11 @@ public class DbRelationshipTableModel extends CayenneTableModel<DbRelationship>
     }
 
     private String getComment(DbRelationship rel) {
-        return ObjectInfo.getFromMetaData(mediator.getApplication().getMetaData(), rel, ObjectInfo.COMMENT);
+        return ObjectInfo.getFromMetaData(controller.getApplication().getMetaData(), rel, ObjectInfo.COMMENT);
     }
 
     private void setComment(String newVal, DbRelationship rel) {
-        ObjectInfo.putToMetaData(mediator.getApplication().getMetaData(), rel, ObjectInfo.COMMENT, newVal);
+        ObjectInfo.putToMetaData(controller.getApplication().getMetaData(), rel, ObjectInfo.COMMENT, newVal);
     }
 
     public void setUpdatedValueAt(Object aValue, int row, int column) {
@@ -136,7 +136,7 @@ public class DbRelationshipTableModel extends CayenneTableModel<DbRelationship>
         if (column == NAME) {
             RelationshipEvent e = new RelationshipEvent(eventSource, rel, entity, rel.getName());
             rel.setName((String) aValue);
-            mediator.fireDbRelationshipEvent(e);
+            controller.fireDbRelationshipEvent(e);
             fireTableCellUpdated(row, column);
         } else if (column == TO_DEPENDENT_KEY) {
             boolean flag = (Boolean) aValue;
@@ -160,15 +160,15 @@ public class DbRelationshipTableModel extends CayenneTableModel<DbRelationship>
             }
 
             rel.setToDependentPK(flag);
-            mediator.fireDbRelationshipEvent(new RelationshipEvent(eventSource, rel, entity));
+            controller.fireDbRelationshipEvent(new RelationshipEvent(eventSource, rel, entity));
         } else if (column == CARDINALITY) {
             rel.setToMany((Boolean) aValue);
-            mediator.fireDbRelationshipEvent(new RelationshipEvent(eventSource, rel, entity));
+            controller.fireDbRelationshipEvent(new RelationshipEvent(eventSource, rel, entity));
 
             updateDependentObjRelationships(rel);
         } else if(column == COMMENTS) {
             setComment((String) aValue, rel);
-            mediator.fireDbRelationshipEvent(new RelationshipEvent(eventSource, rel, entity));
+            controller.fireDbRelationshipEvent(new RelationshipEvent(eventSource, rel, entity));
         }
         fireTableRowsUpdated(row, row);
     }
@@ -185,7 +185,7 @@ public class DbRelationshipTableModel extends CayenneTableModel<DbRelationship>
     void updateDependentObjRelationships(DbRelationship relationship) {
 
         Collection<ObjRelationship> objRelationshipsForDbRelationship = ProjectUtil
-                .findObjRelationshipsForDbRelationship(mediator, relationship);
+                .findObjRelationshipsForDbRelationship(controller, relationship);
         for(ObjRelationship objRelationship : objRelationshipsForDbRelationship) {
             objRelationship.recalculateToManyValue();
         }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/package.html b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/package.html
deleted file mode 100644
index 9553746df..000000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/package.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-     https://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
--->
-<html>
-<body>
-<p>Contains editor panels used by CayenneModeler main frame.</p>
-</body>
-</html>
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/SaveAsImageAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/SaveAsImageAction.java
index 1c377717d..6d1b21679 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/SaveAsImageAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/SaveAsImageAction.java
@@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * Action for saving graph as image
  */
 public class SaveAsImageAction extends CayenneAction {
-	private static final Logger logObj = LoggerFactory.getLogger(SaveAsImageAction.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(SaveAsImageAction.class);
 
 	private final DataDomainGraphTab dataDomainGraphTab;
 
@@ -103,7 +103,7 @@ public class SaveAsImageAction extends CayenneAction {
 				}
 
 			} catch (IOException ex) {
-				logObj.error("Could not save image", ex);
+				LOGGER.error("Could not save image", ex);
 				JOptionPane.showMessageDialog(Application.getFrame(), "Could not save image.", "Error saving image",
 						JOptionPane.ERROR_MESSAGE);
 			}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DataMapDefaults.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DataMapDefaults.java
index 54bd11044..68cf272f0 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DataMapDefaults.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DataMapDefaults.java
@@ -18,28 +18,13 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.pref;
 
-import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.pref.RenamedPreferences;
-import org.apache.cayenne.util.Util;
 
 import java.util.prefs.Preferences;
 
 public class DataMapDefaults extends RenamedPreferences {
 
-    private boolean generatePairs;
-    private String outputPath;
-    private String subclassTemplate;
-    private String superclassPackage;
-    private String superclassTemplate;
-
-    private boolean initGeneratePairs;
-
-    public static final String GENERATE_PAIRS_PROPERTY = "generatePairs";
-    public static final String OUTPUT_PATH_PROPERTY = "outputPath";
-    public static final String SUBCLASS_TEMPLATE_PROPERTY = "subclassTemplate";
     public static final String SUPERCLASS_PACKAGE_PROPERTY = "superclassPackage";
-    public static final String SUPERCLASS_TEMPLATE_PROPERTY = "superclassTemplate";
-
     public static final String DEFAULT_SUPERCLASS_PACKAGE_SUFFIX = "auto";
 
     public DataMapDefaults(Preferences pref) {
@@ -47,46 +32,7 @@ public class DataMapDefaults extends RenamedPreferences {
     }
 
     /**
-     * Returns a superclass package tailored for a given DataMap.
-     */
-    public void updateSuperclassPackage(DataMap dataMap) {
-
-        String storedPackage = getSuperclassPackage();
-        if (Util.isEmptyString(storedPackage)
-                || DEFAULT_SUPERCLASS_PACKAGE_SUFFIX.equals(storedPackage)) {
-            String mapPackage = dataMap.getDefaultPackage();
-            if (!Util.isEmptyString(mapPackage)) {
-
-                if (mapPackage.endsWith(".")) {
-                    mapPackage = mapPackage.substring(mapPackage.length() - 1);
-                }
-
-                if (!Util.isEmptyString(mapPackage)) {
-                    String newPackage = mapPackage
-                            + "."
-                            + DEFAULT_SUPERCLASS_PACKAGE_SUFFIX;
-                    if (!Util.nullSafeEquals(newPackage, storedPackage)) {
-                        setSuperclassPackage(newPackage);
-                    }
-                }
-            }
-        }
-
-        if (DEFAULT_SUPERCLASS_PACKAGE_SUFFIX.equals(getSuperclassPackage())) {
-            setSuperclassPackage(null);
-        }
-    }
-
-    /**
-     * An initialization callback.
-     */
-    public void prePersist() {
-        setGeneratePairs(Boolean.TRUE);
-    }
-
-    /**
-     * Sets superclass package, building it by "normalizing" and concatenating prefix and
-     * suffix.
+     * Sets superclass package, building it by "normalizing" and concatenating prefix and suffix.
      */
     public void setSuperclassPackage(String prefix, String suffix) {
         if (prefix == null) {
@@ -103,75 +49,12 @@ public class DataMapDefaults extends RenamedPreferences {
             suffix = suffix.substring(1);
         }
 
-        String dot = (suffix.length() > 0 && prefix.length() > 0) ? "." : "";
+        String dot = (!suffix.isEmpty() && !prefix.isEmpty()) ? "." : "";
         setSuperclassPackage(prefix + dot + suffix);
     }
 
-    public boolean getGeneratePairs() {
-        if (!initGeneratePairs) {
-            generatePairs = getCurrentPreference().getBoolean(
-                    GENERATE_PAIRS_PROPERTY,
-                    false);
-            initGeneratePairs = true;
-        }
-        return generatePairs;
-    }
-
-    public void setGeneratePairs(Boolean bool) {
-        if (getCurrentPreference() != null) {
-            this.generatePairs = bool;
-            getCurrentPreference().putBoolean(GENERATE_PAIRS_PROPERTY, bool);
-        }
-    }
-
-    public String getOutputPath() {
-        if (outputPath == null) {
-            outputPath = getCurrentPreference().get(OUTPUT_PATH_PROPERTY, null);
-        }
-        return outputPath;
-    }
-
-    public void setOutputPath(String outputPath) {
-        if (getCurrentPreference() != null) {
-            this.outputPath = outputPath;
-            if(outputPath == null) {
-                outputPath = "";
-            }
-            getCurrentPreference().put(OUTPUT_PATH_PROPERTY, outputPath);
-        }
-    }
-
-    public String getSubclassTemplate() {
-        if (subclassTemplate == null) {
-            subclassTemplate = getCurrentPreference().get(
-                    SUBCLASS_TEMPLATE_PROPERTY,
-                    null);
-        }
-        return subclassTemplate;
-    }
-
-    public void setSubclassTemplate(String subclassTemplate) {
-        if (getCurrentPreference() != null) {
-            this.subclassTemplate = subclassTemplate;
-            if(subclassTemplate == null) {
-                subclassTemplate = "";
-            }
-            getCurrentPreference().put(SUBCLASS_TEMPLATE_PROPERTY, subclassTemplate);
-        }
-    }
-
-    public String getSuperclassPackage() {
-        if (superclassPackage == null) {
-            superclassPackage = getCurrentPreference().get(
-                    SUPERCLASS_PACKAGE_PROPERTY,
-                    null);
-        }
-        return superclassPackage;
-    }
-
     public void setSuperclassPackage(String superclassPackage) {
         if (getCurrentPreference() != null) {
-            this.superclassPackage = superclassPackage;
             if(superclassPackage == null) {
                 superclassPackage = "";
             }
@@ -179,51 +62,10 @@ public class DataMapDefaults extends RenamedPreferences {
         }
     }
 
-    public String getSuperclassTemplate() {
-        if (superclassTemplate == null) {
-            superclassTemplate = getCurrentPreference().get(
-                    SUPERCLASS_TEMPLATE_PROPERTY,
-                    null);
-        }
-        return superclassTemplate;
-    }
-
-    public void setSuperclassTemplate(String superclassTemplate) {
-        if (getCurrentPreference() != null) {
-            this.superclassTemplate = superclassTemplate;
-            if(superclassTemplate == null) {
-                superclassTemplate = "";
-            }
-            getCurrentPreference().put(SUPERCLASS_TEMPLATE_PROPERTY, superclassTemplate);
-        }
-    }
-
     public String getProperty(String property) {
         if (property != null && getCurrentPreference() != null) {
             return getCurrentPreference().get(property, null);
         }
         return null;
     }
-
-    public void setProperty(String property, String value) {
-        if (getCurrentPreference() != null) {
-            if(value == null) {
-                value = "";
-            }
-            getCurrentPreference().put(property, value);
-        }
-    }
-
-    public void setBooleanProperty(String property, boolean value) {
-        if (getCurrentPreference() != null) {
-            getCurrentPreference().putBoolean(property, value);
-        }
-    }
-
-    public boolean getBooleanProperty(String property) {
-        if (property != null && getCurrentPreference() != null) {
-            return getCurrentPreference().getBoolean(property, false);
-        }
-        return false;
-    }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
index e1501baf9..e2c4656c7 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
@@ -27,7 +27,6 @@ import org.slf4j.LoggerFactory;
 
 import javax.swing.*;
 import java.awt.*;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.beans.PropertyChangeListener;
@@ -39,7 +38,7 @@ import java.util.prefs.Preferences;
  */
 public abstract class CayenneController {
 
-    private static Logger logObj = LoggerFactory.getLogger(CayenneController.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(CayenneController.class);
 
     protected CayenneController parent;
     protected Application application;
@@ -117,7 +116,7 @@ public abstract class CayenneController {
      */
     protected void reportError(String title, Throwable th) {
         th = Util.unwindException(th);
-        logObj.info("Error in " + getClass().getName(), th);
+        LOGGER.info("Error in " + getClass().getName(), th);
         th.printStackTrace();
 
         JOptionPane.showMessageDialog(
@@ -161,22 +160,19 @@ public abstract class CayenneController {
         final JDialog dialog = (JDialog) window;
 
         KeyStroke escReleased = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, true);
-        ActionListener closeAction = new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                if (dialog.isVisible()) {
-                    switch (dialog.getDefaultCloseOperation()) {
-                        case JDialog.HIDE_ON_CLOSE:
-                            dialog.setVisible(false);
-                            break;
-                        case JDialog.DISPOSE_ON_CLOSE:
-                            dialog.setVisible(false);
-                            dialog.dispose();
-                            break;
-                        case JDialog.DO_NOTHING_ON_CLOSE:
-                        default:
-                            break;
-                    }
+        ActionListener closeAction = e -> {
+            if (dialog.isVisible()) {
+                switch (dialog.getDefaultCloseOperation()) {
+                    case JDialog.HIDE_ON_CLOSE:
+                        dialog.setVisible(false);
+                        break;
+                    case JDialog.DISPOSE_ON_CLOSE:
+                        dialog.setVisible(false);
+                        dialog.dispose();
+                        break;
+                    case JDialog.DO_NOTHING_ON_CLOSE:
+                    default:
+                        break;
                 }
             }
         };
@@ -189,7 +185,7 @@ public abstract class CayenneController {
     /**
      * Finds a Window in the view hierarchy.
      */
-    public Window getWindow() {
+    private Window getWindow() {
         Component view = getView();
         while (view != null) {
             if (view instanceof Window) {
@@ -202,22 +198,6 @@ public abstract class CayenneController {
         return null;
     }
 
-    /**
-     * Finds a JFrame in the view hierarchy.
-     */
-    public JFrame getFrame() {
-        Component view = getView();
-        while (view != null) {
-            if (view instanceof JFrame) {
-                return (JFrame) view;
-            }
-
-            view = view.getParent();
-        }
-
-        return null;
-    }
-
     /**
      * Fires property change event. Exists for the benefit of subclasses.
      */
@@ -243,11 +223,4 @@ public abstract class CayenneController {
 
         propertyChangeSupport.addPropertyChangeListener(expression, listener);
     }
-
-    /**
-     * Default implementation is a noop. Override to handle parent binding updates.
-     */
-    public void bindingUpdated(String expression, Object newValue) {
-        // do nothing...
-    }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTableModel.java
index f5960b76a..56bd6fc81 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTableModel.java
@@ -19,6 +19,16 @@
 
 package org.apache.cayenne.modeler.util;
 
+import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.undo.CayenneTableModelUndoableEdit;
+import org.apache.cayenne.util.Util;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.swing.*;
+import javax.swing.table.AbstractTableModel;
 import java.beans.BeanInfo;
 import java.beans.IntrospectionException;
 import java.beans.Introspector;
@@ -28,34 +38,20 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import javax.swing.JOptionPane;
-import javax.swing.table.AbstractTableModel;
-
-import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.undo.CayenneTableModelUndoableEdit;
-import org.apache.cayenne.util.Util;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * Superclass of CayenneModeler table model classes.
  */
 public abstract class CayenneTableModel<T> extends AbstractTableModel {
-    private static final Logger logObj = LoggerFactory.getLogger(CayenneTableModel.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(CayenneTableModel.class);
 
-    protected ProjectController mediator;
+    protected ProjectController controller;
     protected Object eventSource;
     protected List<T> objectList;
 
-    /**
-     * Constructor for CayenneTableModel.
-     */
-    public CayenneTableModel(ProjectController mediator, Object eventSource, List<T> objectList) {
+    public CayenneTableModel(ProjectController controller, Object eventSource, List<T> objectList) {
         super();
         this.eventSource = eventSource;
-        this.mediator = mediator;
+        this.controller = controller;
         this.objectList = objectList;
     }
 
@@ -66,11 +62,11 @@ public abstract class CayenneTableModel<T> extends AbstractTableModel {
             if (!Util.nullSafeEquals(newVal, oldValue)) {
                 setUpdatedValueAt(newVal, row, col);
                 
-                this.mediator.getApplication().getUndoManager().addEdit(
+                this.controller.getApplication().getUndoManager().addEdit(
                         new CayenneTableModelUndoableEdit(this, oldValue, newVal, row, col));
             }
         } catch (IllegalArgumentException e) {
-            logObj.error("Error setting table model value", e);
+            LOGGER.error("Error setting table model value", e);
             JOptionPane.showMessageDialog(
                     Application.getFrame(),
                     e.getMessage(),
@@ -93,28 +89,22 @@ public abstract class CayenneTableModel<T> extends AbstractTableModel {
     /**
      * Returns the number of objects on the list.
      */
+    @Override
     public int getRowCount() {
         return objectList.size();
     }
 
-    /**
-     * Returns an object used as an event source.
-     */
-    public Object getEventSource() {
-        return eventSource;
-    }
-
     /**
      * Returns EventController object.
      */
-    public ProjectController getMediator() {
-        return mediator;
+    public ProjectController getController() {
+        return controller;
     }
 
     /**
      * Returns internal object list.
      */
-    public java.util.List<T> getObjectList() {
+    public List<T> getObjectList() {
         return objectList;
     }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java
index b8910b953..02e2c0957 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java
@@ -45,7 +45,7 @@ public abstract class CayennePreferenceEditor implements PreferenceEditor {
     private List<Preferences> removedNode;
     private List<Preferences> addedNode;
 
-    private static Logger logger = LoggerFactory.getLogger(CayennePreferenceEditor.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(CayennePreferenceEditor.class);
 
     public CayennePreferenceEditor(CayenneProjectPreferences cayenneProjectPreferences) {
         this.cayenneProjectPreferences = cayenneProjectPreferences;
@@ -120,7 +120,7 @@ public abstract class CayennePreferenceEditor implements PreferenceEditor {
             try {
                 pref.removeNode();
             } catch (BackingStoreException e) {
-                logger.warn("Error removing preferences");
+                LOGGER.warn("Error removing preferences");
             }
         }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java
index 74ade693f..753ceeb3f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java
@@ -69,7 +69,7 @@ public class JCayenneTextPane extends JPanel {
         this.tooltipTextError = tooltipTextError;
     }
 
-    private static Logger logObj = LoggerFactory.getLogger(Main.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(JCayenneTextPane.class);
 
     public void setText(String text) {
         pane.setText(text);
@@ -110,7 +110,7 @@ public class JCayenneTextPane extends JPanel {
             Rectangle2D caretCoords = pane.modelToView2D(pos);
             y = (int) caretCoords.getY();
         } catch (BadLocationException ex) {
-            logObj.warn("Error: ", ex);
+            LOGGER.warn("Error: ", ex);
         }
 
         int lineHeight = pane.getFontMetrics(pane.getFont()).getHeight();
@@ -177,7 +177,7 @@ public class JCayenneTextPane extends JPanel {
                         pane.repaint();
                     }
                 } catch (Exception e) {
-                    logObj.warn("Error: ", e);
+                    LOGGER.warn("Error: ", e);
                 }
             }
 
@@ -216,7 +216,7 @@ public class JCayenneTextPane extends JPanel {
                 setToolTipPosition(line, message);
                 repaintPane();
             } catch (BadLocationException e) {
-                logObj.warn("Error: ", e);
+                LOGGER.warn("Error: ", e);
             }
         } else {
             setToolTipPosition(0, "");
@@ -307,7 +307,7 @@ public class JCayenneTextPane extends JPanel {
                         - fontDesc;
             }
         } catch (Exception e1) {
-            logObj.warn("Error: ", e1);
+            LOGGER.warn("Error: ", e1);
         }
 
         for (int line = startline, y = starting_y; line <= endline; y += fontHeight, line++) {
@@ -339,7 +339,7 @@ public class JCayenneTextPane extends JPanel {
                 document.insertString(0, text, null);
             }
         } catch (BadLocationException ex) {
-            logObj.warn("Error reading document", ex);
+            LOGGER.warn("Error reading document", ex);
         }
     }
 
@@ -348,7 +348,7 @@ public class JCayenneTextPane extends JPanel {
         try {
             return document.getText(0, document.getLength());
         } catch (BadLocationException ex) {
-            logObj.warn("Error reading document", ex);
+            LOGGER.warn("Error reading document", ex);
             return null;
         }
     }
diff --git a/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
index 9c298be3a..e7aaad638 100644
--- a/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
+++ b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
@@ -47,13 +47,13 @@ public class CayenneModelerValidationIT {
 
     public static final String CAYENNE_CONFIGURED_VALIDATION_PROJECT = "cayenne-configured-validation.xml";
 
-    private final static Logger logger = LoggerFactory.getLogger(CayenneModelerValidationIT.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(CayenneModelerValidationIT.class);
     private static Injector injector;
 
     @BeforeClass
     public static void setUp() {
         injector = DIBootstrap.createInjector(List.of(
-                new ToolsModule(logger),
+                new ToolsModule(LOGGER),
                 new ProjectModule(),
                 new CayenneModelerModule()
         ));
diff --git a/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/package.html b/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/package.html
deleted file mode 100644
index a4fb2cc5e..000000000
--- a/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-     https://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
--->
-<html>
-<body>
-Contains classes that interface Cayenne with Apple's 
-<a href="http://webobjects.com">WebObjects</a>. This includes
-utility classes to read and write property list files, read 
-EOModels, etc.
-</body>
-</html>