You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2022/08/19 11:27:26 UTC

[cayenne] branch master updated (bfdcbb56d -> 89370c5e7)

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

ntimofeev pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


    from bfdcbb56d Fix tests
     new 68352c2b6 CAY-2755 Modeler: Entities are not sorted by name in the class generation view
     new 89370c5e7 Return missing test comment and update test classes

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 RELEASE-NOTES.txt                                  |  2 +
 .../cayenne/testdo/testmap/auto/_ArtGroup.java     |  1 +
 .../cayenne/testdo/testmap/auto/_Artist.java       |  1 +
 .../testdo/testmap/auto/_ArtistCallback.java       |  1 +
 .../testdo/testmap/auto/_ArtistExhibit.java        |  1 +
 .../testdo/testmap/auto/_CompoundPainting.java     |  1 +
 .../testmap/auto/_CompoundPaintingLongNames.java   |  1 +
 .../cayenne/testdo/testmap/auto/_Exhibit.java      |  1 +
 .../cayenne/testdo/testmap/auto/_Gallery.java      |  1 +
 .../auto/_MeaningfulGeneratedColumnTestEntity.java |  1 +
 .../testdo/testmap/auto/_NullTestEntity.java       |  1 +
 .../cayenne/testdo/testmap/auto/_Painting.java     |  1 +
 .../cayenne/testdo/testmap/auto/_Painting1.java    |  1 +
 .../cayenne/testdo/testmap/auto/_PaintingInfo.java |  1 +
 .../cayenne/testdo/testmap/auto/_ROArtist.java     |  1 +
 .../cayenne/testdo/testmap/auto/_ROPainting.java   |  1 +
 .../testdo/testmap/auto/_RWCompoundPainting.java   |  1 +
 .../cayenne/testdo/testmap/auto/_SubPainting.java  |  1 +
 cayenne-server/src/test/resources/testmap.map.xml  |  1 +
 .../editor/cgen/ClassGenerationValidator.java      | 32 ++++++--
 .../modeler/editor/cgen/ClassesTabController.java  |  4 +-
 .../editor/cgen/CodeGeneratorController.java       | 87 ++++++++++++++++------
 .../modeler/editor/cgen/SelectionModel.java        |  9 ++-
 23 files changed, 118 insertions(+), 34 deletions(-)


[cayenne] 01/02: CAY-2755 Modeler: Entities are not sorted by name in the class generation view

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 68352c2b62fd61c2f2dda5f34df5307c9fb4dc51
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Fri Aug 19 14:12:26 2022 +0300

    CAY-2755 Modeler: Entities are not sorted by name in the class generation view
---
 RELEASE-NOTES.txt                                  |  2 +
 .../editor/cgen/ClassGenerationValidator.java      | 32 ++++++--
 .../modeler/editor/cgen/ClassesTabController.java  |  4 +-
 .../editor/cgen/CodeGeneratorController.java       | 87 ++++++++++++++++------
 .../modeler/editor/cgen/SelectionModel.java        |  9 ++-
 5 files changed, 100 insertions(+), 34 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 7458cf8dd..ee8f8b6f1 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -26,3 +26,5 @@ CAY-2754 Add SELF property to the cgen templates
 
 Bug Fixes:
 
+CAY-2755 Modeler: Entities are not sorted by name in the class generation view
+
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassGenerationValidator.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassGenerationValidator.java
index 75102271c..59dca0c12 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassGenerationValidator.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassGenerationValidator.java
@@ -18,8 +18,11 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.editor.cgen;
 
-import java.util.List;
+import java.util.Collection;
 
+import org.apache.cayenne.configuration.BaseConfigurationNodeVisitor;
+import org.apache.cayenne.configuration.ConfigurationNode;
+import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.Embeddable;
 import org.apache.cayenne.map.EmbeddableAttribute;
 import org.apache.cayenne.map.EmbeddedAttribute;
@@ -39,14 +42,27 @@ import org.apache.cayenne.validation.ValidationResult;
  */
 class ClassGenerationValidator {
 
-    ValidationResult getValidationResult(List<Object> classes) {
+    ValidationResult getValidationResult(Collection<? extends ConfigurationNode> classes) {
         ValidationResult validationResult = new ValidationResult();
-        for (Object classObj : classes) {
-            if (classObj instanceof ObjEntity) {
-                validateEntity(validationResult, (ObjEntity) classObj);
-            } else if (classObj instanceof Embeddable) {
-                validateEmbeddable(validationResult, (Embeddable) classObj);
-            }
+        for (ConfigurationNode configurationNode : classes) {
+            configurationNode.acceptVisitor(new BaseConfigurationNodeVisitor<Void>() {
+                @Override
+                public Void visitObjEntity(ObjEntity entity) {
+                    validateEntity(validationResult, entity);
+                    return null;
+                }
+
+                @Override
+                public Void visitEmbeddable(Embeddable embeddable) {
+                    validateEmbeddable(validationResult, embeddable);
+                    return null;
+                }
+
+                @Override
+                public Void visitDataMap(DataMap dataMap) {
+                    return null;
+                }
+            });
         }
         return validationResult;
     }
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 6141a7aac..d29a9b697 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
@@ -19,6 +19,7 @@
 
 package org.apache.cayenne.modeler.editor.cgen;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.Embeddable;
 import org.apache.cayenne.map.ObjEntity;
@@ -36,6 +37,7 @@ import javax.swing.Icon;
 import javax.swing.JLabel;
 import javax.swing.table.TableColumnModel;
 import java.awt.Component;
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -143,7 +145,7 @@ public class ClassesTabController extends CayenneController {
         }
     }
 
-    public void validate(List<Object> classes) {
+    public void validate(Collection<? extends ConfigurationNode> classes) {
         ClassGenerationValidator validator = new ClassGenerationValidator();
         this.lastValidationResult = validator.getValidationResult(classes);
     }
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 624eb6e55..46b837915 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
@@ -24,15 +24,19 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
+import java.util.Comparator;
+import java.util.Set;
+import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.function.Predicate;
 import java.util.prefs.Preferences;
 import java.util.stream.Collectors;
 
+import org.apache.cayenne.configuration.BaseConfigurationNodeVisitor;
+import org.apache.cayenne.configuration.ConfigurationNode;
+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;
@@ -67,7 +71,7 @@ public class CodeGeneratorController extends CayenneController implements ObjEnt
     private static final Logger LOGGER = LoggerFactory.getLogger(ErrorDebugDialog.class);
 
     protected final ProjectController projectController;
-    protected final List<Object> classes;
+    protected final Set<ConfigurationNode> classes;
     protected final SelectionModel selectionModel;
     protected final CodeGeneratorPane view;
     protected final ClassesTabController classesSelector;
@@ -85,7 +89,10 @@ public class CodeGeneratorController extends CayenneController implements ObjEnt
         this.view = new CodeGeneratorPane(generatorSelector.getView(), classesSelector.getView());
         this.prevGeneratorController = new ConcurrentHashMap<>();
         this.projectController = projectController;
-        this.classes = new ArrayList<>();
+        this.classes = new TreeSet<>(
+                Comparator.comparing((ConfigurationNode o) -> o.acceptVisitor(TYPE_GETTER))
+                        .thenComparing(o -> o.acceptVisitor(NAME_GETTER))
+        );
         this.selectionModel = new SelectionModel();
         initBindings();
         initListeners();
@@ -138,22 +145,9 @@ public class CodeGeneratorController extends CayenneController implements ObjEnt
     public void generatorSelectedAction() {
         GeneratorController controller = generatorSelector.getGeneratorController();
         classesSelector.validate(classes);
-
-        Predicate<Object> defaultPredicate = object -> {
-            if (object instanceof ObjEntity) {
-                return classesSelector.getProblem(((ObjEntity) object).getName()) == null;
-            }
-
-            if (object instanceof Embeddable) {
-                return classesSelector.getProblem(((Embeddable) object).getClassName()) == null;
-            }
-            return false;
-        };
-
-        Predicate<Object> predicate = controller != null
+        Predicate<ConfigurationNode> predicate = controller != null
                 ? defaultPredicate
                 : o -> false;
-
         updateSelection(predicate);
         classesSelector.classSelectedAction();
     }
@@ -250,14 +244,14 @@ public class CodeGeneratorController extends CayenneController implements ObjEnt
                 .collect(Collectors.toList()));
     }
 
-    public List<Object> getClasses() {
+    public Set<?> getClasses() {
         return classes;
     }
 
-    public boolean updateSelection(Predicate<Object> predicate) {
+    public boolean updateSelection(Predicate<ConfigurationNode> predicate) {
         boolean modified = selectionModel.updateSelection(predicate, classes);
 
-        for (Object classObj : classes) {
+        for (ConfigurationNode classObj : classes) {
             if (classObj instanceof DataMap) {
                 boolean selected = predicate.test(classObj);
                 updateArtifactGenerationMode(selected);
@@ -440,4 +434,55 @@ public class CodeGeneratorController extends CayenneController implements ObjEnt
     public CgenConfiguration getCgenConfiguration() {
         return cgenConfiguration;
     }
+
+    private final Predicate<ConfigurationNode> defaultPredicate = o -> o.acceptVisitor(new BaseConfigurationNodeVisitor<Boolean>() {
+        @Override
+        public Boolean visitDataMap(DataMap dataMap) {
+            return false;
+        }
+
+        @Override
+        public Boolean visitObjEntity(ObjEntity entity) {
+            return classesSelector.getProblem(entity.getName()) == null;
+        }
+
+        @Override
+        public Boolean visitEmbeddable(Embeddable embeddable) {
+            return classesSelector.getProblem(embeddable.getClassName()) == null;
+        }
+    });
+
+    private static final ConfigurationNodeVisitor<Integer> TYPE_GETTER = new BaseConfigurationNodeVisitor<Integer>() {
+        @Override
+        public Integer visitDataMap(DataMap dataMap) {
+            return 10;
+        }
+
+        @Override
+        public Integer visitObjEntity(ObjEntity entity) {
+            return 20;
+        }
+
+        @Override
+        public Integer visitEmbeddable(Embeddable embeddable) {
+            return 30;
+        }
+    };
+
+    private static final ConfigurationNodeVisitor<String> NAME_GETTER = new BaseConfigurationNodeVisitor<String>() {
+        @Override
+        public String visitDataMap(DataMap dataMap) {
+            return dataMap.getName();
+        }
+
+        @Override
+        public String visitEmbeddable(Embeddable embeddable) {
+            return embeddable.getClassName();
+        }
+
+        @Override
+        public String visitObjEntity(ObjEntity entity) {
+            return entity.getName();
+        }
+    };
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/SelectionModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/SelectionModel.java
index 3ef4a1e3a..2e561695d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/SelectionModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/SelectionModel.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.function.Predicate;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.Embeddable;
 import org.apache.cayenne.map.ObjEntity;
@@ -59,9 +60,9 @@ class SelectionModel {
         selectedDataMaps = selectedDataMapsForDataMap.computeIfAbsent(dataMap, dm -> new HashSet<>());
     }
 
-    boolean updateSelection(Predicate<Object> predicate, List<Object> classes) {
+    boolean updateSelection(Predicate<ConfigurationNode> predicate, Collection<ConfigurationNode> classes) {
         boolean modified = false;
-        for (Object classObj : classes) {
+        for (ConfigurationNode classObj : classes) {
             boolean select = predicate.test(classObj);
             if (classObj instanceof ObjEntity) {
                 if (select) {
@@ -98,7 +99,7 @@ class SelectionModel {
         return modified;
     }
 
-    List<Embeddable> getSelectedEmbeddables(List<Object> classes) {
+    List<Embeddable> getSelectedEmbeddables(Collection<ConfigurationNode> classes) {
         List<Embeddable> selected = new ArrayList<>(selectedEmbeddables.size());
         for (Object classObj : classes) {
             if (classObj instanceof Embeddable) {
@@ -112,7 +113,7 @@ class SelectionModel {
         return selected;
     }
 
-    List<ObjEntity> getSelectedEntities(List<Object> classes) {
+    List<ObjEntity> getSelectedEntities(Collection<ConfigurationNode> classes) {
         List<ObjEntity> selected = new ArrayList<>(selectedEntities.size());
         for (Object classObj : classes) {
             if (classObj instanceof ObjEntity) {


[cayenne] 02/02: Return missing test comment and update test classes

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 89370c5e72e872965315a4024b0e6f6e8a7e91ca
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Fri Aug 19 14:22:08 2022 +0300

    Return missing test comment and update test classes
---
 .../src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtGroup.java  | 1 +
 .../src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java    | 1 +
 .../java/org/apache/cayenne/testdo/testmap/auto/_ArtistCallback.java     | 1 +
 .../test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistExhibit.java | 1 +
 .../java/org/apache/cayenne/testdo/testmap/auto/_CompoundPainting.java   | 1 +
 .../apache/cayenne/testdo/testmap/auto/_CompoundPaintingLongNames.java   | 1 +
 .../src/test/java/org/apache/cayenne/testdo/testmap/auto/_Exhibit.java   | 1 +
 .../src/test/java/org/apache/cayenne/testdo/testmap/auto/_Gallery.java   | 1 +
 .../testdo/testmap/auto/_MeaningfulGeneratedColumnTestEntity.java        | 1 +
 .../java/org/apache/cayenne/testdo/testmap/auto/_NullTestEntity.java     | 1 +
 .../src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting.java  | 1 +
 .../src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting1.java | 1 +
 .../test/java/org/apache/cayenne/testdo/testmap/auto/_PaintingInfo.java  | 1 +
 .../src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROArtist.java  | 1 +
 .../test/java/org/apache/cayenne/testdo/testmap/auto/_ROPainting.java    | 1 +
 .../java/org/apache/cayenne/testdo/testmap/auto/_RWCompoundPainting.java | 1 +
 .../test/java/org/apache/cayenne/testdo/testmap/auto/_SubPainting.java   | 1 +
 cayenne-server/src/test/resources/testmap.map.xml                        | 1 +
 18 files changed, 18 insertions(+)

diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtGroup.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtGroup.java
index 3ed21811d..9589412bb 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtGroup.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtGroup.java
@@ -25,6 +25,7 @@ public abstract class _ArtGroup extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<ArtGroup> SELF = PropertyFactory.createSelf(ArtGroup.class);
+
     public static final NumericIdProperty<Integer> GROUP_ID_PK_PROPERTY = PropertyFactory.createNumericId("GROUP_ID", "ArtGroup", Integer.class);
     public static final String GROUP_ID_PK_COLUMN = "GROUP_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java
index 520382bc0..db06d16fc 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java
@@ -32,6 +32,7 @@ public abstract class _Artist extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<Artist> SELF = PropertyFactory.createSelf(Artist.class);
+
     public static final NumericIdProperty<Long> ARTIST_ID_PK_PROPERTY = PropertyFactory.createNumericId("ARTIST_ID", "Artist", Long.class);
     public static final String ARTIST_ID_PK_COLUMN = "ARTIST_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistCallback.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistCallback.java
index 352b9b34d..b1c5b575c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistCallback.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistCallback.java
@@ -24,6 +24,7 @@ public abstract class _ArtistCallback extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<ArtistCallback> SELF = PropertyFactory.createSelf(ArtistCallback.class);
+
     public static final NumericIdProperty<Integer> ARTIST_ID_PK_PROPERTY = PropertyFactory.createNumericId("ARTIST_ID", "ArtistCallback", Integer.class);
     public static final String ARTIST_ID_PK_COLUMN = "ARTIST_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistExhibit.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistExhibit.java
index da6255046..b7f30f292 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistExhibit.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistExhibit.java
@@ -23,6 +23,7 @@ public abstract class _ArtistExhibit extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<ArtistExhibit> SELF = PropertyFactory.createSelf(ArtistExhibit.class);
+
     public static final NumericIdProperty<Long> ARTIST_ID_PK_PROPERTY = PropertyFactory.createNumericId("ARTIST_ID", "ArtistExhibit", Long.class);
     public static final String ARTIST_ID_PK_COLUMN = "ARTIST_ID";
     public static final NumericIdProperty<Integer> EXHIBIT_ID_PK_PROPERTY = PropertyFactory.createNumericId("EXHIBIT_ID", "ArtistExhibit", Integer.class);
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPainting.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPainting.java
index b8222b1a1..2eff0dc3e 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPainting.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPainting.java
@@ -27,6 +27,7 @@ public abstract class _CompoundPainting extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<CompoundPainting> SELF = PropertyFactory.createSelf(CompoundPainting.class);
+
     public static final NumericIdProperty<Integer> PAINTING_ID_PK_PROPERTY = PropertyFactory.createNumericId("PAINTING_ID", "CompoundPainting", Integer.class);
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPaintingLongNames.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPaintingLongNames.java
index dfefc51ea..683a45613 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPaintingLongNames.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPaintingLongNames.java
@@ -28,6 +28,7 @@ public abstract class _CompoundPaintingLongNames extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<CompoundPaintingLongNames> SELF = PropertyFactory.createSelf(CompoundPaintingLongNames.class);
+
     public static final NumericIdProperty<Integer> PAINTING_ID_PK_PROPERTY = PropertyFactory.createNumericId("PAINTING_ID", "CompoundPaintingLongNames", Integer.class);
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Exhibit.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Exhibit.java
index 81dc145d3..e9cd48a61 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Exhibit.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Exhibit.java
@@ -27,6 +27,7 @@ public abstract class _Exhibit extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<Exhibit> SELF = PropertyFactory.createSelf(Exhibit.class);
+
     public static final NumericIdProperty<Integer> EXHIBIT_ID_PK_PROPERTY = PropertyFactory.createNumericId("EXHIBIT_ID", "Exhibit", Integer.class);
     public static final String EXHIBIT_ID_PK_COLUMN = "EXHIBIT_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Gallery.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Gallery.java
index 83377c295..7dcf6c7e8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Gallery.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Gallery.java
@@ -26,6 +26,7 @@ public abstract class _Gallery extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<Gallery> SELF = PropertyFactory.createSelf(Gallery.class);
+
     public static final NumericIdProperty<Integer> GALLERY_ID_PK_PROPERTY = PropertyFactory.createNumericId("GALLERY_ID", "Gallery", Integer.class);
     public static final String GALLERY_ID_PK_COLUMN = "GALLERY_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_MeaningfulGeneratedColumnTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_MeaningfulGeneratedColumnTestEntity.java
index 8be00d782..639f60262 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_MeaningfulGeneratedColumnTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_MeaningfulGeneratedColumnTestEntity.java
@@ -22,6 +22,7 @@ public abstract class _MeaningfulGeneratedColumnTestEntity extends BaseDataObjec
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<MeaningfulGeneratedColumnTestEntity> SELF = PropertyFactory.createSelf(MeaningfulGeneratedColumnTestEntity.class);
+
     public static final String GENERATED_COLUMN_PK_COLUMN = "GENERATED_COLUMN";
 
     public static final NumericProperty<Integer> GENERATED_COLUMN = PropertyFactory.createNumeric("generatedColumn", Integer.class);
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_NullTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_NullTestEntity.java
index 4271a91f4..e07f029ec 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_NullTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_NullTestEntity.java
@@ -22,6 +22,7 @@ public abstract class _NullTestEntity extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<NullTestEntity> SELF = PropertyFactory.createSelf(NullTestEntity.class);
+
     public static final NumericIdProperty<Integer> ID_PK_PROPERTY = PropertyFactory.createNumericId("ID", "NullTestEntity", Integer.class);
     public static final String ID_PK_COLUMN = "ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting.java
index 9f83398f6..16c455596 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting.java
@@ -27,6 +27,7 @@ public abstract class _Painting extends ArtDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<Painting> SELF = PropertyFactory.createSelf(Painting.class);
+
     public static final NumericIdProperty<Integer> PAINTING_ID_PK_PROPERTY = PropertyFactory.createNumericId("PAINTING_ID", "Painting", Integer.class);
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting1.java
index 9229c21cd..b8930e718 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting1.java
@@ -25,6 +25,7 @@ public abstract class _Painting1 extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<Painting1> SELF = PropertyFactory.createSelf(Painting1.class);
+
     public static final NumericIdProperty<Integer> PAINTING_ID_PK_PROPERTY = PropertyFactory.createNumericId("PAINTING_ID", "Painting1", Integer.class);
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_PaintingInfo.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_PaintingInfo.java
index 56edc7d8f..e484eb34c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_PaintingInfo.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_PaintingInfo.java
@@ -24,6 +24,7 @@ public abstract class _PaintingInfo extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<PaintingInfo> SELF = PropertyFactory.createSelf(PaintingInfo.class);
+
     public static final NumericIdProperty<Integer> PAINTING_ID_PK_PROPERTY = PropertyFactory.createNumericId("PAINTING_ID", "PaintingInfo", Integer.class);
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROArtist.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROArtist.java
index 0303ca128..2d2323e64 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROArtist.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROArtist.java
@@ -27,6 +27,7 @@ public abstract class _ROArtist extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<ROArtist> SELF = PropertyFactory.createSelf(ROArtist.class);
+
     public static final NumericIdProperty<Long> ARTIST_ID_PK_PROPERTY = PropertyFactory.createNumericId("ARTIST_ID", "ROArtist", Long.class);
     public static final String ARTIST_ID_PK_COLUMN = "ARTIST_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROPainting.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROPainting.java
index 797727e3f..f5886a8a3 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROPainting.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROPainting.java
@@ -25,6 +25,7 @@ public abstract class _ROPainting extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<ROPainting> SELF = PropertyFactory.createSelf(ROPainting.class);
+
     public static final NumericIdProperty<Integer> PAINTING_ID_PK_PROPERTY = PropertyFactory.createNumericId("PAINTING_ID", "ROPainting", Integer.class);
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_RWCompoundPainting.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_RWCompoundPainting.java
index 510001c20..52cd6e57d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_RWCompoundPainting.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_RWCompoundPainting.java
@@ -24,6 +24,7 @@ public abstract class _RWCompoundPainting extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<RWCompoundPainting> SELF = PropertyFactory.createSelf(RWCompoundPainting.class);
+
     public static final NumericIdProperty<Integer> PAINTING_ID_PK_PROPERTY = PropertyFactory.createNumericId("PAINTING_ID", "RWCompoundPainting", Integer.class);
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_SubPainting.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_SubPainting.java
index 3f97047e6..72a7d2180 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_SubPainting.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_SubPainting.java
@@ -22,6 +22,7 @@ public abstract class _SubPainting extends BaseDataObject {
     private static final long serialVersionUID = 1L;
 
     public static final EntityProperty<SubPainting> SELF = PropertyFactory.createSelf(SubPainting.class);
+
     public static final NumericIdProperty<Integer> PAINTING_ID_PK_PROPERTY = PropertyFactory.createNumericId("PAINTING_ID", "SubPainting", Integer.class);
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
diff --git a/cayenne-server/src/test/resources/testmap.map.xml b/cayenne-server/src/test/resources/testmap.map.xml
index 109aa7431..ef2584a65 100644
--- a/cayenne-server/src/test/resources/testmap.map.xml
+++ b/cayenne-server/src/test/resources/testmap.map.xml
@@ -84,6 +84,7 @@
 	<obj-entity name="Artist" className="org.apache.cayenne.testdo.testmap.Artist" dbEntityName="ARTIST">
 		<obj-attribute name="artistName" type="java.lang.String" db-attribute-path="ARTIST_NAME"/>
 		<obj-attribute name="dateOfBirth" type="java.util.Date" db-attribute-path="DATE_OF_BIRTH"/>
+		<info:property xmlns:info="http://cayenne.apache.org/schema/11/info" name="comment" value="Example of a comment"/>
 	</obj-entity>
 	<obj-entity name="ArtistCallback" className="org.apache.cayenne.testdo.testmap.ArtistCallback" dbEntityName="ARTIST_CT">
 		<obj-attribute name="artistName" type="java.lang.String"/>