Cleanup

Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/3ae49734
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/3ae49734
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/3ae49734

Branch: refs/heads/master
Commit: 3ae49734b044f611912a0bea5c69b0dd4d2705d4
Parents: b30e5eb
Author: Arseni Bulatski <ancars...@gmail.com>
Authored: Mon Nov 12 13:28:09 2018 +0300
Committer: Arseni Bulatski <ancars...@gmail.com>
Committed: Mon Nov 12 13:31:13 2018 +0300

----------------------------------------------------------------------
 UPGRADE.txt                                     |   5 +
 .../apache/cayenne/gen/CgenConfiguration.java   |   6 +-
 .../cayenne/gen/xml/CgenConfigHandler.java      | 100 ++++++-------------
 .../java/org/apache/cayenne/tools/CgenTask.java |  68 ++++++-------
 .../modeler/editor/DataMapTabbedView.java       |   3 +-
 .../editor/cgen/ClassesTabController.java       |  11 +-
 .../modeler/editor/cgen/ClassesTabPanel.java    |  15 ++-
 .../editor/cgen/ClientModeController.java       |   3 +
 .../editor/cgen/CodeGeneratorController.java    |   5 +-
 .../cgen/CodeGeneratorControllerBase.java       |  37 +++++--
 .../modeler/editor/cgen/CodeGeneratorPane.java  |   9 +-
 .../editor/cgen/CustomModeController.java       |   5 +-
 .../modeler/editor/cgen/CustomModePanel.java    |  13 ++-
 .../editor/cgen/GeneratorController.java        |  12 ++-
 .../editor/cgen/GeneratorControllerPanel.java   |   6 +-
 .../editor/cgen/GeneratorTabController.java     |   4 +-
 .../modeler/editor/cgen/GeneratorTabPanel.java  |  12 ++-
 .../editor/cgen/StandardModeController.java     |   5 +-
 .../modeler/editor/cgen/StandardModePanel.java  |   5 +-
 .../modeler/editor/cgen/domain/CgenPanel.java   |  10 +-
 .../modeler/editor/cgen/domain/CgenTab.java     |  13 ++-
 .../editor/cgen/domain/CgenTabController.java   |   5 +-
 22 files changed, 205 insertions(+), 147 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/UPGRADE.txt
----------------------------------------------------------------------
diff --git a/UPGRADE.txt b/UPGRADE.txt
index 2dfbd9b..83bcc5a 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -4,6 +4,11 @@ Apache Cayenne Upgrade Information
 IMPORTANT: be sure to read all notes for the intermediate releases between your
            current release and the release you are upgrading to.
 -------------------------------------------------------------------------------
+UPGRADING TO 4.1.M3
+
+* Per CAY-2493 'datamap' generation mode in cgen replaced with 'all' 
generation mode with
+      <excludeEntities>*</excludeEntities> and 
<excludeEmbeddables>*</excludeEmbeddables> patterns.
+
 UPGRADING TO 4.1.M2
 
 * Per CAY-2438 DataChannelFilter filter was deprecated and two new independent 
filters are introduced:

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
----------------------------------------------------------------------
diff --git 
a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java 
b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
index 15bc435..1277baa 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
@@ -328,7 +328,7 @@ public class CgenConfiguration implements Serializable, 
XMLSerializable {
                 .filter(entity -> !entityArtifacts.contains(entity.getName()))
                 .map(ObjEntity::getName)
                 .collect(Collectors.toList());
-        return org.apache.commons.lang3.StringUtils.join(excludeEntities, ",");
+        return String.join(",", excludeEntities);
     }
 
     public void loadEmbeddables(String embeddables) {
@@ -341,7 +341,7 @@ public class CgenConfiguration implements Serializable, 
XMLSerializable {
                 .filter(embeddable -> 
!embeddableArtifacts.contains(embeddable.getClassName()))
                 .map(Embeddable::getClassName)
                 .collect(Collectors.toList());
-        return org.apache.commons.lang3.StringUtils.join(excludeEmbeddable, 
",");
+        return String.join(",", excludeEmbeddable);
     }
 
        public void resolveExcludeEntities() {
@@ -365,7 +365,7 @@ public class CgenConfiguration implements Serializable, 
XMLSerializable {
         encoder.start("cgen")
                 .attribute("xmlns", CgenExtension.NAMESPACE)
                 .simpleTag("excludeEntities", getExcludeEntites())
-                .simpleTag("excludeEmbeddables",getExcludeEmbeddables())
+                .simpleTag("excludeEmbeddables", getExcludeEmbeddables())
                 .simpleTag("destDir", buildRelPath())
                 .simpleTag("mode", this.artifactsGenerationMode.getLabel())
                 .simpleTag("template", this.template)

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
----------------------------------------------------------------------
diff --git 
a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java 
b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
index 754aac6..2384f10 100644
--- 
a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
+++ 
b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
@@ -60,6 +60,7 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler{
         super(parentHandler);
         this.metaData = metaData;
         this.targetNamespace = CgenExtension.NAMESPACE;
+        this.configuration = new CgenConfiguration();
     }
 
     @Override
@@ -121,70 +122,49 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler{
         if(path.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            configuration.setRelPath(Paths.get(path));
-        }
+        configuration.setRelPath(Paths.get(path));
     }
 
     private void createGenerationMode(String mode) {
         if(mode.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            configuration.setArtifactsGenerationMode(mode);
-        }
+        configuration.setArtifactsGenerationMode(mode);
     }
 
     private void createExcludeEntities(String entities) {
         if(entities.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            configuration.loadEntities(entities);
-        }
+        configuration.loadEntities(entities);
     }
 
     private void createExcludeEmbeddables(String embeddables) {
         if(embeddables.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            configuration.loadEmbeddables(embeddables);
-        }
+        configuration.loadEmbeddables(embeddables);
     }
 
     private void createSubclassTemplate(String template) {
         if(template.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            configuration.setTemplate(template);
-        }
+        configuration.setTemplate(template);
     }
 
     private void createSuperclassTemplate(String template) {
         if(template.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            configuration.setSuperTemplate(template);
-        }
+        configuration.setSuperTemplate(template);
     }
 
     private void createOutputPattern(String pattern) {
         if(pattern.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            configuration.setOutputPattern(pattern);
-        }
+        configuration.setOutputPattern(pattern);
     }
 
     private void createMakePairs(String makePairs) {
@@ -192,12 +172,10 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler{
             return;
         }
 
-        if (configuration != null) {
-            if (makePairs.equals(TRUE)) {
-                configuration.setMakePairs(true);
-            } else {
-                configuration.setMakePairs(false);
-            }
+        if (makePairs.equals(TRUE)) {
+            configuration.setMakePairs(true);
+        } else {
+            configuration.setMakePairs(false);
         }
     }
 
@@ -205,13 +183,10 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler{
         if(data.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            if(data.equals(TRUE)) {
-                configuration.setUsePkgPath(true);
-            } else {
-                configuration.setUsePkgPath(false);
-            }
+        if(data.equals(TRUE)) {
+            configuration.setUsePkgPath(true);
+        } else {
+            configuration.setUsePkgPath(false);
         }
     }
 
@@ -220,12 +195,10 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler{
             return;
         }
 
-        if(configuration != null) {
-            if(data.equals(TRUE)) {
-                configuration.setOverwrite(true);
-            } else {
-                configuration.setOverwrite(false);
-            }
+        if(data.equals(TRUE)) {
+            configuration.setOverwrite(true);
+        } else {
+            configuration.setOverwrite(false);
         }
     }
 
@@ -233,13 +206,10 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler{
         if(data.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            if(data.equals(TRUE)) {
-                configuration.setCreatePropertyNames(true);
-            } else {
-                configuration.setCreatePropertyNames(false);
-            }
+        if(data.equals(TRUE)) {
+            configuration.setCreatePropertyNames(true);
+        } else {
+            configuration.setCreatePropertyNames(false);
         }
     }
 
@@ -248,12 +218,10 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler{
             return;
         }
 
-        if(configuration != null) {
-            if(data.equals(TRUE)) {
-                configuration.setCreatePKProperties(true);
-            } else {
-                configuration.setCreatePKProperties(false);
-            }
+        if(data.equals(TRUE)) {
+            configuration.setCreatePKProperties(true);
+        } else {
+            configuration.setCreatePKProperties(false);
         }
     }
 
@@ -261,18 +229,14 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler{
         if(data.trim().length() == 0) {
             return;
         }
-
-        if(configuration != null) {
-            if(data.equals(TRUE)) {
-                configuration.setClient(true);
-            } else {
-                configuration.setClient(false);
-            }
+        if(data.equals(TRUE)) {
+            configuration.setClient(true);
+        } else {
+            configuration.setClient(false);
         }
     }
 
     private void createConfig() {
-        configuration = new CgenConfiguration();
         loaderContext.addDataMapListener(dataMap -> {
             configuration.setDataMap(dataMap);
             configuration.setRootPath(buildRootPath(dataMap));

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
----------------------------------------------------------------------
diff --git 
a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java 
b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
index bfafc1f..0e63c53 100644
--- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
+++ b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
@@ -60,7 +60,7 @@ public class CgenTask extends BaseCayenneTask {
 
     @Input
     @Optional
-    private String client;
+    private Boolean client;
 
     private File destDir;
 
@@ -85,7 +85,7 @@ public class CgenTask extends BaseCayenneTask {
 
     @Input
     @Optional
-    private String makePairs;
+    private Boolean makePairs;
 
     @Input
     @Optional
@@ -97,7 +97,7 @@ public class CgenTask extends BaseCayenneTask {
 
     @Input
     @Optional
-    private String overwrite;
+    private Boolean overwrite;
 
     @Input
     @Optional
@@ -121,11 +121,11 @@ public class CgenTask extends BaseCayenneTask {
 
     @Input
     @Optional
-    private String usePkgPath;
+    private Boolean usePkgPath;
 
     @Input
     @Optional
-    private String createPropertyNames;
+    private Boolean createPropertyNames;
 
     /**
      * Force run (skip check for files modification time)
@@ -149,7 +149,7 @@ public class CgenTask extends BaseCayenneTask {
      */
     @Input
     @Optional
-    private String createPKProperties;
+    private Boolean createPKProperties;
 
     private String destDirName;
 
@@ -240,21 +240,21 @@ public class CgenTask extends BaseCayenneTask {
         cgenConfiguration.setDataMap(dataMap);
         cgenConfiguration.setRelPath(getDestDirFile() != null ? 
getDestDirFile().toPath() : cgenConfiguration.getRelPath());
         cgenConfiguration.setEncoding(encoding != null ? encoding : 
cgenConfiguration.getEncoding());
-        cgenConfiguration.setMakePairs(makePairs != null ? 
Boolean.valueOf(makePairs) : cgenConfiguration.isMakePairs());
+        cgenConfiguration.setMakePairs(makePairs != null ? makePairs : 
cgenConfiguration.isMakePairs());
         cgenConfiguration.setArtifactsGenerationMode(mode != null ? mode : 
cgenConfiguration.getArtifactsGenerationMode());
         cgenConfiguration.setOutputPattern(outputPattern != null ? 
outputPattern : cgenConfiguration.getOutputPattern());
-        cgenConfiguration.setOverwrite(overwrite != null ? 
Boolean.valueOf(overwrite) : cgenConfiguration.isOverwrite());
+        cgenConfiguration.setOverwrite(overwrite != null ? overwrite : 
cgenConfiguration.isOverwrite());
         cgenConfiguration.setSuperPkg(superPkg != null ? superPkg : 
cgenConfiguration.getSuperPkg());
         cgenConfiguration.setSuperTemplate(superTemplate != null ? 
superTemplate : cgenConfiguration.getSuperTemplate());
         cgenConfiguration.setTemplate(template != null ? template :  
cgenConfiguration.getTemplate());
         cgenConfiguration.setEmbeddableSuperTemplate(embeddableSuperTemplate 
!= null ? embeddableSuperTemplate : 
cgenConfiguration.getEmbeddableSuperTemplate());
         cgenConfiguration.setEmbeddableTemplate(embeddableTemplate != null ? 
embeddableTemplate : cgenConfiguration.getEmbeddableTemplate());
-        cgenConfiguration.setUsePkgPath(usePkgPath != null ? 
Boolean.valueOf(usePkgPath) : cgenConfiguration.isUsePkgPath());
-        cgenConfiguration.setCreatePropertyNames(createPropertyNames != null ? 
Boolean.valueOf(createPropertyNames) : 
cgenConfiguration.isCreatePropertyNames());
+        cgenConfiguration.setUsePkgPath(usePkgPath != null ? usePkgPath : 
cgenConfiguration.isUsePkgPath());
+        cgenConfiguration.setCreatePropertyNames(createPropertyNames != null ? 
createPropertyNames : cgenConfiguration.isCreatePropertyNames());
         cgenConfiguration.setQueryTemplate(queryTemplate != null ? 
queryTemplate : cgenConfiguration.getQueryTemplate());
         cgenConfiguration.setQuerySuperTemplate(querySuperTemplate != null ? 
querySuperTemplate : cgenConfiguration.getQuerySuperTemplate());
-        cgenConfiguration.setCreatePKProperties(createPKProperties != null ? 
Boolean.valueOf(createPKProperties) : cgenConfiguration.isCreatePKProperties());
-        cgenConfiguration.setClient(client != null ? Boolean.valueOf(client) : 
cgenConfiguration.isClient());
+        cgenConfiguration.setCreatePKProperties(createPKProperties != null ? 
createPKProperties : cgenConfiguration.isCreatePKProperties());
+        cgenConfiguration.setClient(client != null ? client : 
cgenConfiguration.isClient());
         if(!cgenConfiguration.isMakePairs()) {
             if(template == null) {
                 cgenConfiguration.setTemplate(cgenConfiguration.isClient() ? 
ClientClassGenerationAction.SINGLE_CLASS_TEMPLATE : 
ClassGenerationAction.SINGLE_CLASS_TEMPLATE);
@@ -361,12 +361,12 @@ public class CgenTask extends BaseCayenneTask {
         setAdditionalMaps(additionalMaps);
     }
 
-    public boolean isClient() {
-        return Boolean.valueOf(client);
+    public Boolean isClient() {
+        return client;
     }
 
-    public void setClient(boolean client) {
-        this.client = String.valueOf(client);
+    public void setClient(Boolean client) {
+        this.client = client;
     }
 
     public void client(boolean client) {
@@ -425,12 +425,12 @@ public class CgenTask extends BaseCayenneTask {
         setExcludeEmbeddables(excludeEmbeddables);
     }
 
-    public boolean isMakePairs() {
-        return Boolean.valueOf(makePairs);
+    public Boolean isMakePairs() {
+        return makePairs;
     }
 
-    public void setMakePairs(boolean makePairs) {
-        this.makePairs = String.valueOf(makePairs);
+    public void setMakePairs(Boolean makePairs) {
+        this.makePairs = makePairs;
     }
 
     public void makePairs(boolean makePairs) {
@@ -461,12 +461,12 @@ public class CgenTask extends BaseCayenneTask {
         setOutputPattern(outputPattern);
     }
 
-    public boolean isOverwrite() {
-        return Boolean.valueOf(overwrite);
+    public Boolean isOverwrite() {
+        return overwrite;
     }
 
-    public void setOverwrite(boolean overwrite) {
-        this.overwrite = String.valueOf(overwrite);
+    public void setOverwrite(Boolean overwrite) {
+        this.overwrite = overwrite;
     }
 
     public void overwrite(boolean overwrite) {
@@ -533,24 +533,24 @@ public class CgenTask extends BaseCayenneTask {
         setEmbeddableTemplate(embeddableTemplate);
     }
 
-    public boolean isUsePkgPath() {
-        return Boolean.valueOf(usePkgPath);
+    public Boolean isUsePkgPath() {
+        return usePkgPath;
     }
 
-    public void setUsePkgPath(boolean usePkgPath) {
-        this.usePkgPath = String.valueOf(usePkgPath);
+    public void setUsePkgPath(Boolean usePkgPath) {
+        this.usePkgPath = usePkgPath;
     }
 
     public void usePkgPath(boolean usePkgPath) {
         setUsePkgPath(usePkgPath);
     }
 
-    public boolean isCreatePropertyNames() {
-        return Boolean.valueOf(createPropertyNames);
+    public Boolean isCreatePropertyNames() {
+        return createPropertyNames;
     }
 
-    public void setCreatePropertyNames(boolean createPropertyNames) {
-        this.createPropertyNames = String.valueOf(createPropertyNames);
+    public void setCreatePropertyNames(Boolean createPropertyNames) {
+        this.createPropertyNames = createPropertyNames;
     }
 
     public void createPropertyNames(boolean createPropertyNames) {
@@ -569,8 +569,8 @@ public class CgenTask extends BaseCayenneTask {
         setForce(force);
     }
 
-    public void setCreatePKProperties(boolean createPKProperties) {
-        this.createPKProperties = String.valueOf(createPKProperties);
+    public void setCreatePKProperties(Boolean createPKProperties) {
+        this.createPKProperties = createPKProperties;
     }
 
     public void createPKProperties(boolean createPKProperties) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java
index ddd6893..9297481 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java
@@ -24,7 +24,8 @@ import 
org.apache.cayenne.modeler.editor.cgen.CodeGeneratorController;
 import org.apache.cayenne.modeler.editor.cgen.domain.CgenTab;
 import org.apache.cayenne.modeler.editor.dbimport.DbImportView;
 
-import javax.swing.*;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
 
 /**
  * Data map editing tabs container

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
index 7b98f4c..9032071 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
@@ -25,9 +25,12 @@ import org.apache.cayenne.swing.ImageRendererColumn;
 import org.apache.cayenne.swing.ObjectBinding;
 import org.apache.cayenne.swing.TableBindingBuilder;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JLabel;
+import java.awt.Component;
 
+/**
+ * @since 4.1
+ */
 public class ClassesTabController extends CayenneController {
 
     protected ClassesTabPanel view;
@@ -111,7 +114,7 @@ public class ClassesTabController extends CayenneController 
{
         else if (selectedCount == getParentController().getClasses().size()) {
             view.getCheckAll().setSelected(true);
         }
-        getParentController().updateEntities();
+        getParentController().updateSelectedEntities();
     }
 
     /**
@@ -121,7 +124,7 @@ public class ClassesTabController extends CayenneController 
{
     public void checkAllAction() {
         if 
(getParentController().updateSelection(view.getCheckAll().isSelected() ? o -> 
true : o -> false)) {
             tableBinding.updateView();
-            getParentController().updateEntities();
+            getParentController().updateSelectedEntities();
             if(view.getCheckAll().isSelected()) {
                 getParentController().enableGenerateButton(true);
             } else {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabPanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabPanel.java
index 403058f..3f5c49c 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabPanel.java
@@ -19,8 +19,16 @@
 
 package org.apache.cayenne.modeler.editor.cgen;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.ScrollPaneConstants;
+import javax.swing.UIManager;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
 
 /**
  * @since 4.1
@@ -35,9 +43,6 @@ public class ClassesTabPanel extends JPanel {
 
         this.table = new JTable();
         this.table.setRowHeight(22);
-
-        // TODO: andrus 04/07/2006 - is there an easy way to stick that 
checkbox in the
-        // table header????
         this.checkAll = new JCheckBox();
         this.checkAllLabel = new JLabel("Check All Classes");
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClientModeController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClientModeController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClientModeController.java
index 7485d25..b55c24b 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClientModeController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClientModeController.java
@@ -21,6 +21,9 @@ package org.apache.cayenne.modeler.editor.cgen;
 
 import org.apache.cayenne.gen.CgenConfiguration;
 
+/**
+ * @since 4.1
+ */
 public class ClientModeController extends StandardModeController {
 
     public ClientModeController(CodeGeneratorControllerBase parent) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
index 1274ecb..1244178 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
@@ -30,14 +30,15 @@ import org.apache.cayenne.swing.BindingBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JOptionPane;
+import java.awt.Component;
 import java.util.Collections;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.function.Predicate;
 
 /**
+ * @since 4.1
  * A controller for the class generator dialog.
  */
 public class CodeGeneratorController extends CodeGeneratorControllerBase {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
index 211384d..21a3736 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
@@ -32,19 +32,27 @@ import org.apache.cayenne.modeler.util.ModelerUtil;
 import org.apache.cayenne.validation.ValidationFailure;
 import org.apache.cayenne.validation.ValidationResult;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.Icon;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import java.awt.Component;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
 import java.util.List;
 import java.util.function.Predicate;
 import java.util.prefs.Preferences;
 import java.util.stream.Collectors;
 
 /**
+ * @since 4.1
  * A base superclass of a top controller for the code generator. Defines all 
common model
  * parts used in class generation.
  *
@@ -108,11 +116,13 @@ public abstract class CodeGeneratorControllerBase extends 
CayenneController {
         if(cgenConfiguration != null){
             addToSelectedEntities(cgenConfiguration.getDataMap(), 
cgenConfiguration.getEntities());
             addToSelectedEmbeddables(cgenConfiguration.getDataMap(), 
cgenConfiguration.getEmbeddables());
+            cgenConfiguration.setForce(true);
             return cgenConfiguration;
         }
 
         try {
             cgenConfiguration = new CgenConfiguration();
+            cgenConfiguration.setForce(true);
             cgenConfiguration.setDataMap(map);
 
             Path basePath = Paths.get(ModelerUtil.initOutputFolder());
@@ -238,9 +248,7 @@ public abstract class CodeGeneratorControllerBase extends 
CayenneController {
     }
 
     public List<Embeddable> getSelectedEmbeddables() {
-
         List<Embeddable> selected = new 
ArrayList<>(selectedEmbeddables.size());
-
         for (Object classObj : classes) {
             if (classObj instanceof Embeddable
                     && selectedEmbeddables.contains(((Embeddable) classObj)
@@ -379,16 +387,29 @@ public abstract class CodeGeneratorControllerBase extends 
CayenneController {
         return labelIcon;
     }
 
-    public void updateEntities(){
+    public void updateSelectedEntities(){
+        updateEntities();
+        updateEmbeddables();
+    }
+
+    public void updateEntities() {
         DataMap map = getProjectController().getCurrentDataMap();
         CgenConfiguration cgenConfiguration = 
projectController.getApplication().getMetaData().get(map, 
CgenConfiguration.class);
         if(cgenConfiguration != null) {
-            cgenConfiguration.resetCollections();
+            cgenConfiguration.getEntities().clear();
             for(ObjEntity entity: getSelectedEntities()) {
                 if(!entity.isGeneric()) {
                     cgenConfiguration.loadEntity(entity.getName());
                 }
             }
+        }
+    }
+
+    public void updateEmbeddables() {
+        DataMap map = getProjectController().getCurrentDataMap();
+        CgenConfiguration cgenConfiguration = 
projectController.getApplication().getMetaData().get(map, 
CgenConfiguration.class);
+        if(cgenConfiguration != null) {
+            cgenConfiguration.getEmbeddables().clear();
             for(Embeddable embeddable : getSelectedEmbeddables()) {
                 cgenConfiguration.loadEmbeddable(embeddable.getClassName());
             }
@@ -404,7 +425,7 @@ public abstract class CodeGeneratorControllerBase extends 
CayenneController {
     void addToSelectedEmbeddables(DataMap dataMap, Collection<String> 
embeddables) {
         prepareClasses(dataMap);
         selectedEmbeddables.addAll(embeddables);
-        updateEntities();
+        updateEmbeddables();
     }
 
     public int getSelectedEntitiesSize() {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorPane.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorPane.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorPane.java
index 859cb2d..003d850 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorPane.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorPane.java
@@ -19,10 +19,15 @@
 
 package org.apache.cayenne.modeler.editor.cgen;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.ScrollPaneConstants;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Dimension;
 
 /**
+ * @since 4.1
  */
 public class CodeGeneratorPane extends JSplitPane {
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
index 247d747..4a23e6b 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
@@ -25,13 +25,14 @@ import org.apache.cayenne.modeler.CodeTemplateManager;
 import org.apache.cayenne.modeler.dialog.pref.PreferenceDialog;
 import org.apache.cayenne.swing.BindingBuilder;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.DefaultComboBoxModel;
+import java.awt.Component;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
 /**
+ * @since 4.1
  * A controller for the custom generation mode.
  */
 public class CustomModeController extends GeneratorController {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
index 468eec7..8b1d2a3 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
@@ -29,9 +29,16 @@ import org.apache.cayenne.swing.components.JCayenneCheckBox;
 import org.apache.cayenne.swing.control.ActionLink;
 import org.apache.cayenne.validation.ValidationException;
 
-import javax.swing.*;
-import java.awt.*;
-
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+
+/**
+ * @since 4.1
+ */
 public class CustomModePanel extends GeneratorControllerPanel {
 
     private ComboBoxAdapter<String> subclassTemplate;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
index 22187f5..1b49a46 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
@@ -21,7 +21,12 @@ package org.apache.cayenne.modeler.editor.cgen;
 
 import org.apache.cayenne.gen.ArtifactsGenerationMode;
 import org.apache.cayenne.gen.CgenConfiguration;
-import org.apache.cayenne.map.*;
+import org.apache.cayenne.map.Embeddable;
+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.map.ObjRelationship;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.pref.FSPath;
 import org.apache.cayenne.modeler.util.CayenneController;
@@ -34,13 +39,14 @@ import 
org.apache.cayenne.validation.SimpleValidationFailure;
 import org.apache.cayenne.validation.ValidationFailure;
 import org.apache.cayenne.validation.ValidationResult;
 
-import javax.swing.*;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
 import java.io.File;
 import java.util.function.Predicate;
 
 /**
+ * @since 4.1
  * A mode-specific part of the code generation dialog.
- * 
  */
 public abstract class GeneratorController extends CayenneController {
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
index 5771b89..3275726 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
@@ -25,11 +25,13 @@ import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.util.TextAdapter;
 import org.apache.cayenne.validation.ValidationException;
 
-import javax.swing.*;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
 
 /**
+ * @since 4.1
  * A generic panel that is a superclass of generator panels, defining common 
fields.
- * 
  */
 public class GeneratorControllerPanel extends JPanel {
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
index 6af5436..77a71b8 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
@@ -23,11 +23,13 @@ import org.apache.cayenne.gen.CgenConfiguration;
 import org.apache.cayenne.modeler.util.CayenneController;
 import org.apache.cayenne.pref.PreferenceDetail;
 
-import java.awt.*;
+import java.awt.Component;
+import java.awt.Dimension;
 import java.util.HashMap;
 import java.util.Map;
 
 /**
+ * @since 4.1
  */
 public class GeneratorTabController extends CayenneController {
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabPanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabPanel.java
index 08f1dee..a10fe21 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabPanel.java
@@ -24,8 +24,16 @@ import com.jgoodies.forms.layout.FormLayout;
 import org.apache.cayenne.modeler.util.ModelerUtil;
 import org.apache.cayenne.swing.components.TopBorder;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.Box;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import java.awt.BorderLayout;
+import java.awt.CardLayout;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
 import java.util.Objects;
 
 /**

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModeController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModeController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModeController.java
index 5b34efc..ba4344e 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModeController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModeController.java
@@ -22,8 +22,11 @@ package org.apache.cayenne.modeler.editor.cgen;
 import org.apache.cayenne.gen.CgenConfiguration;
 import org.apache.cayenne.modeler.pref.DataMapDefaults;
 
-import java.awt.*;
+import java.awt.Component;
 
+/**
+ * @since 4.1
+ */
 public class StandardModeController extends GeneratorController {
 
     protected StandardModePanel view;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModePanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModePanel.java
index 2b755e7..85c2d5f 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModePanel.java
@@ -23,8 +23,11 @@ import com.jgoodies.forms.builder.DefaultFormBuilder;
 import com.jgoodies.forms.layout.FormLayout;
 import org.apache.cayenne.modeler.Application;
 
-import java.awt.*;
+import java.awt.BorderLayout;
 
+/**
+ * @since 4.1
+ */
 public class StandardModePanel extends GeneratorControllerPanel {
 
     public StandardModePanel(CodeGeneratorControllerBase 
codeGeneratorControllerBase) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenPanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenPanel.java
index 637cc12..e8e6596 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenPanel.java
@@ -27,9 +27,15 @@ import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.util.ModelerUtil;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import java.awt.BorderLayout;
 
+/**
+ * @since 4.1
+ */
 public class CgenPanel extends JPanel {
 
     private JCheckBox checkConfig;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
index 0c5288e..5d7c88a 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
@@ -25,12 +25,21 @@ import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.util.ModelerUtil;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
 import java.util.SortedSet;
 import java.util.TreeSet;
 import java.util.concurrent.ConcurrentMap;
 
+/**
+ * @since 4.1
+ */
 public class CgenTab extends JPanel {
 
     protected ProjectController projectController;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ae49734/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
index 0f82abf..f9549ec 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
@@ -35,7 +35,7 @@ import org.apache.cayenne.project.Project;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.swing.*;
+import javax.swing.JOptionPane;
 import java.awt.event.ItemEvent;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -48,6 +48,9 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.prefs.Preferences;
 
+/**
+ * @since 4.1
+ */
 public class CgenTabController {
 
     private static Logger logObj = 
LoggerFactory.getLogger(ErrorDebugDialog.class);

Reply via email to