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 2016/12/18 18:21:02 UTC

[01/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Repository: cayenne
Updated Branches:
  refs/heads/master 832401b32 -> a24473ad8


http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-tools/src/main/resources/templates/v1_2/singleclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/resources/templates/v1_2/singleclass.vm b/cayenne-tools/src/main/resources/templates/v1_2/singleclass.vm
index e6dabce..2d83cfd 100644
--- a/cayenne-tools/src/main/resources/templates/v1_2/singleclass.vm
+++ b/cayenne-tools/src/main/resources/templates/v1_2/singleclass.vm
@@ -72,19 +72,19 @@ public#if("true" == "${object.isAbstract()}") abstract#end class ${subClassName}
 
 ## Create Properties
 #foreach( $attr in ${object.DeclaredAttributes} )
-    public static final Property<$importUtils.formatJavaType(${attr.Type}, false)> ${stringUtils.capitalizedAsConstant($attr.Name)} = new Property<$importUtils.formatJavaType(${attr.Type}, false)>("${attr.Name}");
+    public static final Property<$importUtils.formatJavaType(${attr.Type}, false)> ${stringUtils.capitalizedAsConstant($attr.Name)} = new Property<>("${attr.Name}");
 #end
 #foreach( $rel in ${object.DeclaredRelationships} )
 #if( $rel.ToMany )
 #if ( ${rel.CollectionType} == "java.util.Map")
     #set( $type = "$importUtils.formatJavaType($rel.CollectionType)<$importUtils.formatJavaType($entityUtils.getMapKeyType($rel)), $importUtils.formatJavaType($rel.TargetEntity.ClassName)>" )
-    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<$type>("${rel.Name}");
+    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<>("${rel.Name}");
 #else
     #set( $type = "$importUtils.formatJavaType($rel.CollectionType)<$importUtils.formatJavaType($rel.TargetEntity.ClassName)>" )
-    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<$type>("${rel.Name}");
+    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<>("${rel.Name}");
 #end
 #else
-    public static final Property<$importUtils.formatJavaType(${rel.TargetEntity.ClassName})> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<$importUtils.formatJavaType(${rel.TargetEntity.ClassName})>("${rel.Name}");
+    public static final Property<$importUtils.formatJavaType(${rel.TargetEntity.ClassName})> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<>("${rel.Name}");
 #end
 #end
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm b/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm
index 4cee2be..9934a96 100644
--- a/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm
+++ b/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm
@@ -77,19 +77,19 @@ public abstract class ${superClassName} extends ${baseClassName} {
 
 ## Create Properties
 #foreach( $attr in ${object.DeclaredAttributes} )
-    public static final Property<$importUtils.formatJavaType(${attr.Type}, false)> ${stringUtils.capitalizedAsConstant($attr.Name)} = new Property<$importUtils.formatJavaType(${attr.Type}, false)>("${attr.Name}");
+    public static final Property<$importUtils.formatJavaType(${attr.Type}, false)> ${stringUtils.capitalizedAsConstant($attr.Name)} = new Property<>("${attr.Name}");
 #end
 #foreach( $rel in ${object.DeclaredRelationships} )
 #if( $rel.ToMany )
 #if ( ${rel.CollectionType} == "java.util.Map")
     #set( $type = "$importUtils.formatJavaType($rel.CollectionType)<$importUtils.formatJavaType($entityUtils.getMapKeyType($rel)), $importUtils.formatJavaType($rel.TargetEntity.ClassName)>" )
-    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<$type>("${rel.Name}");
+    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<>("${rel.Name}");
 #else
     #set( $type = "$importUtils.formatJavaType($rel.CollectionType)<$importUtils.formatJavaType($rel.TargetEntity.ClassName)>" )
-    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<$type>("${rel.Name}");
+    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<>("${rel.Name}");
 #end
 #else
-    public static final Property<$importUtils.formatJavaType(${rel.TargetEntity.ClassName})> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<$importUtils.formatJavaType(${rel.TargetEntity.ClassName})>("${rel.Name}");
+    public static final Property<$importUtils.formatJavaType(${rel.TargetEntity.ClassName})> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<>("${rel.Name}");
 #end
 #end
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/CayenneGeneratorMojoTest.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/CayenneGeneratorMojoTest.java b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/CayenneGeneratorMojoTest.java
index 10e843b..bd8068f 100644
--- a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/CayenneGeneratorMojoTest.java
+++ b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/CayenneGeneratorMojoTest.java
@@ -70,7 +70,7 @@ public class CayenneGeneratorMojoTest extends AbstractMojoTestCase {
         assertFalse(excludedEntity.exists());
 
         String content = FileUtils.readFileToString(superTestEntity);
-        assertTrue(content.contains("public static final Property<List<TestRelEntity>> ADDITIONAL_REL = new Property<List<TestRelEntity>>(\"additionalRel\");"));
+        assertTrue(content.contains("public static final Property<List<TestRelEntity>> ADDITIONAL_REL = new Property<>(\"additionalRel\");"));
         assertTrue(content.contains("public void addToAdditionalRel(TestRelEntity obj)"));
         assertTrue(content.contains("public void removeFromAdditionalRel(TestRelEntity obj)"));
 


[10/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
CAY-2176 Java 7 diamond class generation templates

* regenerated unit tests with the new templates and no String properties
* cleaned up String property refs in unit tests


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

Branch: refs/heads/master
Commit: a9d22d3afd6d0dfc5b203536afcc72cb0d75f306
Parents: aa962a8
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Dec 18 19:18:18 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Dec 18 21:17:10 2016 +0300

----------------------------------------------------------------------
 ...ataContextDisjointByIdPrefetch_ExtrasIT.java | 38 +++++++++-----------
 .../apache/cayenne/testdo/things/auto/_Bag.java | 17 +++------
 .../cayenne/testdo/things/auto/_Ball.java       | 17 +++------
 .../apache/cayenne/testdo/things/auto/_Box.java | 21 +++--------
 .../cayenne/testdo/things/auto/_BoxInfo.java    |  9 ++---
 .../cayenne/testdo/things/auto/_Thing.java      | 17 +++------
 .../cayenne/testdo/toone/auto/_TooneDep.java    |  9 +++--
 .../cayenne/testdo/toone/auto/_TooneMaster.java |  9 +++--
 .../auto/_Customer.java                         |  9 ++---
 .../auto/_Product.java                          | 17 +++------
 .../cayenne/testdo/uuid/auto/_UuidPkEntity.java |  5 +--
 .../testdo/uuid/auto/_UuidTestEntity.java       |  5 +--
 12 files changed, 55 insertions(+), 118 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
index e5bf301..44b2060 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
@@ -42,11 +41,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import static org.apache.cayenne.exp.ExpressionFactory.matchExp;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.THINGS_PROJECT)
 public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
@@ -129,7 +124,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
         SelectQuery query = new SelectQuery(Bag.class);
-        query.addPrefetch(Bag.BALLS_PROPERTY).setSemantics(PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+        query.addPrefetch(Bag.BALLS.disjointById());
         final List<Bag> result = context.performQuery(query);
 
         queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
@@ -137,7 +132,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
             public void execute() {
                 assertFalse(result.isEmpty());
                 Bag b1 = result.get(0);
-                List<Ball> balls = (List<Ball>) b1.readPropertyDirectly(Bag.BALLS_PROPERTY);
+                List<Ball> balls = (List<Ball>) b1.readPropertyDirectly(Bag.BALLS.getName());
                 assertNotNull(balls);
                 assertFalse(((ValueHolder) balls).isFault());
                 assertEquals(6, balls.size());
@@ -157,7 +152,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
         SelectQuery query = new SelectQuery(Box.class);
-        query.addPrefetch(Box.THINGS_PROPERTY).setSemantics(PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+        query.addPrefetch(Box.THINGS.disjointById());
         final List<Box> result = context.performQuery(query);
 
         queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
@@ -166,7 +161,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
                 assertFalse(result.isEmpty());
                 List<Integer> volumes = new ArrayList<Integer>();
                 for (Box box : result) {
-                    List<Thing> things = (List<Thing>) box.readPropertyDirectly(Box.THINGS_PROPERTY);
+                    List<Thing> things = (List<Thing>) box.readPropertyDirectly(Box.THINGS.getName());
                     assertNotNull(things);
                     assertFalse(((ValueHolder) things).isFault());
                     for (Thing t : things) {
@@ -185,7 +180,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
         SelectQuery query = new SelectQuery(Bag.class);
-        query.addPrefetch(Bag.THINGS_PROPERTY).setSemantics(PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+        query.addPrefetch(Bag.THINGS.disjointById());
         final List<Bag> result = context.performQuery(query);
 
         queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
@@ -193,7 +188,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
             public void execute() {
                 assertFalse(result.isEmpty());
                 Bag b1 = result.get(0);
-                List<Thing> things = (List<Thing>) b1.readPropertyDirectly(Bag.THINGS_PROPERTY);
+                List<Thing> things = (List<Thing>) b1.readPropertyDirectly(Bag.THINGS.getName());
                 assertNotNull(things);
                 assertFalse(((ValueHolder) things).isFault());
                 assertEquals(6, things.size());
@@ -213,10 +208,10 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
         SelectQuery query = new SelectQuery(Ball.class);
-        query.orQualifier(matchExp(Ball.THING_VOLUME_PROPERTY, 40).andExp(matchExp(Ball.THING_WEIGHT_PROPERTY, 30)));
-        query.orQualifier(matchExp(Ball.THING_VOLUME_PROPERTY, 20).andExp(matchExp(Ball.THING_WEIGHT_PROPERTY, 10)));
+        query.orQualifier(Ball.THING_VOLUME.eq(40).andExp(Ball.THING_WEIGHT.eq(30)));
+        query.orQualifier(Ball.THING_VOLUME.eq(20).andExp(Ball.THING_WEIGHT.eq(10)));
 
-        query.addPrefetch(Ball.THING_PROPERTY).setSemantics(PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+        query.addPrefetch(Ball.THING.disjointById());
 
         final List<Ball> balls = context.performQuery(query);
 
@@ -237,9 +232,8 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
         SelectQuery query = new SelectQuery(Box.class);
-        query.addPrefetch(Box.BALLS_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
-        query.addPrefetch(Box.BALLS_PROPERTY + "." + Ball.THING_PROPERTY).setSemantics(
-                PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+        query.addPrefetch(Box.BALLS.disjointById());
+        query.addPrefetch(Box.BALLS.dot(Ball.THING).disjointById());
         final List<Box> result = context.performQuery(query);
 
         queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
@@ -248,11 +242,11 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
                 assertFalse(result.isEmpty());
                 List<Integer> volumes = new ArrayList<Integer>();
                 for (Box box : result) {
-                    List<Ball> balls = (List<Ball>) box.readPropertyDirectly(Box.BALLS_PROPERTY);
+                    List<Ball> balls = (List<Ball>) box.readPropertyDirectly(Box.BALLS.getName());
                     assertNotNull(balls);
                     assertFalse(((ValueHolder) balls).isFault());
                     for (Ball ball : balls) {
-                        Thing thing = (Thing) ball.readPropertyDirectly(Ball.THING_PROPERTY);
+                        Thing thing = (Thing) ball.readPropertyDirectly(Ball.THING.getName());
                         assertNotNull(thing);
                         assertEquals(PersistenceState.COMMITTED, thing.getPersistenceState());
                         volumes.add(thing.getVolume());
@@ -280,7 +274,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
                 assertFalse(result.isEmpty());
 
                 Bag bag = result.get(0);
-                List<Box> boxes = (List<Box>) bag.readPropertyDirectly(Bag.BOXES_PROPERTY);
+                List<Box> boxes = (List<Box>) bag.readPropertyDirectly(Bag.BOXES.getName());
                 assertNotNull(boxes);
                 assertFalse(((ValueHolder) boxes).isFault());
                 assertEquals(2, boxes.size());
@@ -297,7 +291,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
                 assertTrue(names.contains("big"));
                 assertTrue(names.contains("small"));
 
-                List<Ball> balls = (List<Ball>) big.readPropertyDirectly(Box.BALLS_PROPERTY);
+                List<Ball> balls = (List<Ball>) big.readPropertyDirectly(Box.BALLS.getName());
                 assertNotNull(balls);
                 assertFalse(((ValueHolder) balls).isFault());
                 assertEquals(2, balls.size());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Bag.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Bag.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Bag.java
index 88b7319..a816483 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Bag.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Bag.java
@@ -18,21 +18,12 @@ public abstract class _Bag extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String BALLS_PROPERTY = "balls";
-    @Deprecated
-    public static final String BOXES_PROPERTY = "boxes";
-    @Deprecated
-    public static final String THINGS_PROPERTY = "things";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<List<Ball>> BALLS = new Property<List<Ball>>("balls");
-    public static final Property<List<Box>> BOXES = new Property<List<Box>>("boxes");
-    public static final Property<List<Thing>> THINGS = new Property<List<Thing>>("things");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<Ball>> BALLS = new Property<>("balls");
+    public static final Property<List<Box>> BOXES = new Property<>("boxes");
+    public static final Property<List<Thing>> THINGS = new Property<>("things");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Ball.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Ball.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Ball.java
index 61321b2..c8e3a78 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Ball.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Ball.java
@@ -15,21 +15,12 @@ public abstract class _Ball extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String THING_VOLUME_PROPERTY = "thingVolume";
-    @Deprecated
-    public static final String THING_WEIGHT_PROPERTY = "thingWeight";
-    @Deprecated
-    public static final String BOX_PROPERTY = "box";
-    @Deprecated
-    public static final String THING_PROPERTY = "thing";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Integer> THING_VOLUME = new Property<Integer>("thingVolume");
-    public static final Property<Integer> THING_WEIGHT = new Property<Integer>("thingWeight");
-    public static final Property<Box> BOX = new Property<Box>("box");
-    public static final Property<Thing> THING = new Property<Thing>("thing");
+    public static final Property<Integer> THING_VOLUME = new Property<>("thingVolume");
+    public static final Property<Integer> THING_WEIGHT = new Property<>("thingWeight");
+    public static final Property<Box> BOX = new Property<>("box");
+    public static final Property<Thing> THING = new Property<>("thing");
 
     public void setThingVolume(Integer thingVolume) {
         writeProperty("thingVolume", thingVolume);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Box.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Box.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Box.java
index 8da6b32..2bfe42a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Box.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Box.java
@@ -19,24 +19,13 @@ public abstract class _Box extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String BAG_PROPERTY = "bag";
-    @Deprecated
-    public static final String BALLS_PROPERTY = "balls";
-    @Deprecated
-    public static final String BOX_INFO_PROPERTY = "boxInfo";
-    @Deprecated
-    public static final String THINGS_PROPERTY = "things";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<Bag> BAG = new Property<Bag>("bag");
-    public static final Property<List<Ball>> BALLS = new Property<List<Ball>>("balls");
-    public static final Property<BoxInfo> BOX_INFO = new Property<BoxInfo>("boxInfo");
-    public static final Property<List<Thing>> THINGS = new Property<List<Thing>>("things");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<Bag> BAG = new Property<>("bag");
+    public static final Property<List<Ball>> BALLS = new Property<>("balls");
+    public static final Property<BoxInfo> BOX_INFO = new Property<>("boxInfo");
+    public static final Property<List<Thing>> THINGS = new Property<>("things");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_BoxInfo.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_BoxInfo.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_BoxInfo.java
index 8d37e3b..9f4222a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_BoxInfo.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_BoxInfo.java
@@ -14,15 +14,10 @@ public abstract class _BoxInfo extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String COLOR_PROPERTY = "color";
-    @Deprecated
-    public static final String BOX_PROPERTY = "box";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> COLOR = new Property<String>("color");
-    public static final Property<Box> BOX = new Property<Box>("box");
+    public static final Property<String> COLOR = new Property<>("color");
+    public static final Property<Box> BOX = new Property<>("box");
 
     public void setColor(String color) {
         writeProperty("color", color);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Thing.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Thing.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Thing.java
index 5b604b8..1ef46f0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Thing.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/things/auto/_Thing.java
@@ -17,21 +17,12 @@ public abstract class _Thing extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String VOLUME_PROPERTY = "volume";
-    @Deprecated
-    public static final String WEIGHT_PROPERTY = "weight";
-    @Deprecated
-    public static final String BALL_PROPERTY = "ball";
-    @Deprecated
-    public static final String BOX_PROPERTY = "box";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Integer> VOLUME = new Property<Integer>("volume");
-    public static final Property<Integer> WEIGHT = new Property<Integer>("weight");
-    public static final Property<Ball> BALL = new Property<Ball>("ball");
-    public static final Property<List<Box>> BOX = new Property<List<Box>>("box");
+    public static final Property<Integer> VOLUME = new Property<>("volume");
+    public static final Property<Integer> WEIGHT = new Property<>("weight");
+    public static final Property<Ball> BALL = new Property<>("ball");
+    public static final Property<List<Box>> BOX = new Property<>("box");
 
     public void setVolume(Integer volume) {
         writeProperty("volume", volume);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneDep.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneDep.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneDep.java
index 262d73f..fc9917d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneDep.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneDep.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.toone.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.toone.TooneMaster;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.toone.TooneMaster;
  */
 public abstract class _TooneDep extends CayenneDataObject {
 
-    public static final String TO_MASTER_PROPERTY = "toMaster";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<TooneMaster> TO_MASTER = new Property<>("toMaster");
+
     public void setToMaster(TooneMaster toMaster) {
-        setToOneTarget(TO_MASTER_PROPERTY, toMaster, true);
+        setToOneTarget("toMaster", toMaster, true);
     }
 
     public TooneMaster getToMaster() {
-        return (TooneMaster)readProperty(TO_MASTER_PROPERTY);
+        return (TooneMaster)readProperty("toMaster");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneMaster.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneMaster.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneMaster.java
index 788411f..b89c729 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneMaster.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneMaster.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.toone.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.toone.TooneDep;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.toone.TooneDep;
  */
 public abstract class _TooneMaster extends CayenneDataObject {
 
-    public static final String TO_DEPENDENT_PROPERTY = "toDependent";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<TooneDep> TO_DEPENDENT = new Property<>("toDependent");
+
     public void setToDependent(TooneDep toDependent) {
-        setToOneTarget(TO_DEPENDENT_PROPERTY, toDependent, true);
+        setToOneTarget("toDependent", toDependent, true);
     }
 
     public TooneDep getToDependent() {
-        return (TooneDep)readProperty(TO_DEPENDENT_PROPERTY);
+        return (TooneDep)readProperty("toDependent");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Customer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Customer.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Customer.java
index f071ed8..6d6a902 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Customer.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Customer.java
@@ -16,15 +16,10 @@ public abstract class _Customer extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String LONGVARCHAR_COL_PROPERTY = "longvarcharCol";
-    @Deprecated
-    public static final String ORDER_PROPERTY = "order";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> LONGVARCHAR_COL = new Property<String>("longvarcharCol");
-    public static final Property<List<Product>> ORDER = new Property<List<Product>>("order");
+    public static final Property<String> LONGVARCHAR_COL = new Property<>("longvarcharCol");
+    public static final Property<List<Product>> ORDER = new Property<>("order");
 
     public void setLongvarcharCol(String longvarcharCol) {
         writeProperty("longvarcharCol", longvarcharCol);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Product.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Product.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Product.java
index 02209b8..7b320c8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Product.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/unsupported_distinct_types/auto/_Product.java
@@ -17,21 +17,12 @@ public abstract class _Product extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String LONGVARCHAR_COL_PROPERTY = "longvarcharCol";
-    @Deprecated
-    public static final String BASE_PROPERTY = "base";
-    @Deprecated
-    public static final String CONTAINED_PROPERTY = "contained";
-    @Deprecated
-    public static final String ORDER_BY_PROPERTY = "orderBy";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> LONGVARCHAR_COL = new Property<String>("longvarcharCol");
-    public static final Property<List<Product>> BASE = new Property<List<Product>>("base");
-    public static final Property<List<Product>> CONTAINED = new Property<List<Product>>("contained");
-    public static final Property<List<Customer>> ORDER_BY = new Property<List<Customer>>("orderBy");
+    public static final Property<String> LONGVARCHAR_COL = new Property<>("longvarcharCol");
+    public static final Property<List<Product>> BASE = new Property<>("base");
+    public static final Property<List<Product>> CONTAINED = new Property<>("contained");
+    public static final Property<List<Customer>> ORDER_BY = new Property<>("orderBy");
 
     public void setLongvarcharCol(String longvarcharCol) {
         writeProperty("longvarcharCol", longvarcharCol);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidPkEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidPkEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidPkEntity.java
index 492c380..b8bc876 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidPkEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidPkEntity.java
@@ -15,12 +15,9 @@ public abstract class _UuidPkEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ID_PROPERTY = "id";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<UUID> ID = new Property<UUID>("id");
+    public static final Property<UUID> ID = new Property<>("id");
 
     public void setId(UUID id) {
         writeProperty("id", id);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a9d22d3a/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidTestEntity.java
index 82315b4..3cf702b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/uuid/auto/_UuidTestEntity.java
@@ -15,12 +15,9 @@ public abstract class _UuidTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String UUID_PROPERTY = "uuid";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<UUID> UUID = new Property<UUID>("uuid");
+    public static final Property<UUID> UUID = new Property<>("uuid");
 
     public void setUuid(UUID uuid) {
         writeProperty("uuid", uuid);


[04/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass2.java
index 0beee0a..1492830 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass2.java
@@ -11,12 +11,11 @@ import org.apache.cayenne.testdo.mt.MtTable1;
  */
 public abstract class _MtTable1Subclass2 extends MtTable1 {
 
-    @Deprecated
-    public static final String SUBCLASS2ATTRIBUTE1_PROPERTY = "subclass2Attribute1";
+    private static final long serialVersionUID = 1L; 
 
     public static final String TABLE1_ID_PK_COLUMN = "TABLE1_ID";
 
-    public static final Property<String> SUBCLASS2ATTRIBUTE1 = new Property<String>("subclass2Attribute1");
+    public static final Property<String> SUBCLASS2ATTRIBUTE1 = new Property<>("subclass2Attribute1");
 
     public void setSubclass2Attribute1(String subclass2Attribute1) {
         writeProperty("subclass2Attribute1", subclass2Attribute1);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable2.java
index 2305667..19ab637 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable2.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.mt.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.mt.MtTable1;
 import org.apache.cayenne.testdo.mt.MtTable3;
 
@@ -12,34 +13,36 @@ import org.apache.cayenne.testdo.mt.MtTable3;
  */
 public abstract class _MtTable2 extends CayenneDataObject {
 
-    public static final String GLOBAL_ATTRIBUTE_PROPERTY = "globalAttribute";
-    public static final String TABLE1_PROPERTY = "table1";
-    public static final String TABLE3_PROPERTY = "table3";
+    private static final long serialVersionUID = 1L; 
 
     public static final String TABLE2_ID_PK_COLUMN = "TABLE2_ID";
 
+    public static final Property<String> GLOBAL_ATTRIBUTE = new Property<>("globalAttribute");
+    public static final Property<MtTable1> TABLE1 = new Property<>("table1");
+    public static final Property<MtTable3> TABLE3 = new Property<>("table3");
+
     public void setGlobalAttribute(String globalAttribute) {
-        writeProperty(GLOBAL_ATTRIBUTE_PROPERTY, globalAttribute);
+        writeProperty("globalAttribute", globalAttribute);
     }
     public String getGlobalAttribute() {
-        return (String)readProperty(GLOBAL_ATTRIBUTE_PROPERTY);
+        return (String)readProperty("globalAttribute");
     }
 
     public void setTable1(MtTable1 table1) {
-        setToOneTarget(TABLE1_PROPERTY, table1, true);
+        setToOneTarget("table1", table1, true);
     }
 
     public MtTable1 getTable1() {
-        return (MtTable1)readProperty(TABLE1_PROPERTY);
+        return (MtTable1)readProperty("table1");
     }
 
 
     public void setTable3(MtTable3 table3) {
-        setToOneTarget(TABLE3_PROPERTY, table3, true);
+        setToOneTarget("table3", table3, true);
     }
 
     public MtTable3 getTable3() {
-        return (MtTable3)readProperty(TABLE3_PROPERTY);
+        return (MtTable3)readProperty("table3");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable3.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable3.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable3.java
index 6409b17..5761c5d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable3.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable3.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.mt.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.mt.MtTable2;
 
 /**
@@ -13,43 +14,45 @@ import org.apache.cayenne.testdo.mt.MtTable2;
  */
 public abstract class _MtTable3 extends CayenneDataObject {
 
-    public static final String BINARY_COLUMN_PROPERTY = "binaryColumn";
-    public static final String CHAR_COLUMN_PROPERTY = "charColumn";
-    public static final String INT_COLUMN_PROPERTY = "intColumn";
-    public static final String TABLE2ARRAY_PROPERTY = "table2Array";
+    private static final long serialVersionUID = 1L; 
 
     public static final String TABLE3_ID_PK_COLUMN = "TABLE3_ID";
 
+    public static final Property<byte[]> BINARY_COLUMN = new Property<>("binaryColumn");
+    public static final Property<String> CHAR_COLUMN = new Property<>("charColumn");
+    public static final Property<Integer> INT_COLUMN = new Property<>("intColumn");
+    public static final Property<List<MtTable2>> TABLE2ARRAY = new Property<>("table2Array");
+
     public void setBinaryColumn(byte[] binaryColumn) {
-        writeProperty(BINARY_COLUMN_PROPERTY, binaryColumn);
+        writeProperty("binaryColumn", binaryColumn);
     }
     public byte[] getBinaryColumn() {
-        return (byte[])readProperty(BINARY_COLUMN_PROPERTY);
+        return (byte[])readProperty("binaryColumn");
     }
 
     public void setCharColumn(String charColumn) {
-        writeProperty(CHAR_COLUMN_PROPERTY, charColumn);
+        writeProperty("charColumn", charColumn);
     }
     public String getCharColumn() {
-        return (String)readProperty(CHAR_COLUMN_PROPERTY);
+        return (String)readProperty("charColumn");
     }
 
     public void setIntColumn(Integer intColumn) {
-        writeProperty(INT_COLUMN_PROPERTY, intColumn);
+        writeProperty("intColumn", intColumn);
     }
     public Integer getIntColumn() {
-        return (Integer)readProperty(INT_COLUMN_PROPERTY);
+        return (Integer)readProperty("intColumn");
     }
 
     public void addToTable2Array(MtTable2 obj) {
-        addToManyTarget(TABLE2ARRAY_PROPERTY, obj, true);
+        addToManyTarget("table2Array", obj, true);
     }
     public void removeFromTable2Array(MtTable2 obj) {
-        removeToManyTarget(TABLE2ARRAY_PROPERTY, obj, true);
+        removeToManyTarget("table2Array", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<MtTable2> getTable2Array() {
-        return (List<MtTable2>)readProperty(TABLE2ARRAY_PROPERTY);
+        return (List<MtTable2>)readProperty("table2Array");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java
index 8892540..fb1b8d7 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.mt.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.mt.MtTable5;
 
 /**
@@ -13,19 +14,21 @@ import org.apache.cayenne.testdo.mt.MtTable5;
  */
 public abstract class _MtTable4 extends CayenneDataObject {
 
-    public static final String TABLE5S_PROPERTY = "table5s";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<List<MtTable5>> TABLE5S = new Property<>("table5s");
+
     public void addToTable5s(MtTable5 obj) {
-        addToManyTarget(TABLE5S_PROPERTY, obj, true);
+        addToManyTarget("table5s", obj, true);
     }
     public void removeFromTable5s(MtTable5 obj) {
-        removeToManyTarget(TABLE5S_PROPERTY, obj, true);
+        removeToManyTarget("table5s", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<MtTable5> getTable5s() {
-        return (List<MtTable5>)readProperty(TABLE5S_PROPERTY);
+        return (List<MtTable5>)readProperty("table5s");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java
index 613c818..aa3e7bf 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.mt.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.mt.MtTable4;
 
 /**
@@ -13,19 +14,21 @@ import org.apache.cayenne.testdo.mt.MtTable4;
  */
 public abstract class _MtTable5 extends CayenneDataObject {
 
-    public static final String TABLE4S_PROPERTY = "table4s";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<List<MtTable4>> TABLE4S = new Property<>("table4s");
+
     public void addToTable4s(MtTable4 obj) {
-        addToManyTarget(TABLE4S_PROPERTY, obj, true);
+        addToManyTarget("table4s", obj, true);
     }
     public void removeFromTable4s(MtTable4 obj) {
-        removeToManyTarget(TABLE4S_PROPERTY, obj, true);
+        removeToManyTarget("table4s", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<MtTable4> getTable4s() {
-        return (List<MtTable4>)readProperty(TABLE4S_PROPERTY);
+        return (List<MtTable4>)readProperty("table4s");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/no_pk/auto/_NoPkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/no_pk/auto/_NoPkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/no_pk/auto/_NoPkTestEntity.java
index 2cfbe63..34083f4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/no_pk/auto/_NoPkTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/no_pk/auto/_NoPkTestEntity.java
@@ -13,11 +13,8 @@ public abstract class _NoPkTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ATTRIBUTE1_PROPERTY = "attribute1";
 
-
-    public static final Property<Integer> ATTRIBUTE1 = new Property<Integer>("attribute1");
+    public static final Property<Integer> ATTRIBUTE1 = new Property<>("attribute1");
 
     public void setAttribute1(Integer attribute1) {
         writeProperty("attribute1", attribute1);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigDecimalEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigDecimalEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigDecimalEntity.java
index dc6d5bb..718a600 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigDecimalEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigDecimalEntity.java
@@ -15,12 +15,9 @@ public abstract class _BigDecimalEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BIG_DECIMAL_FIELD_PROPERTY = "bigDecimalField";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<BigDecimal> BIG_DECIMAL_FIELD = new Property<BigDecimal>("bigDecimalField");
+    public static final Property<BigDecimal> BIG_DECIMAL_FIELD = new Property<>("bigDecimalField");
 
     public void setBigDecimalField(BigDecimal bigDecimalField) {
         writeProperty("bigDecimalField", bigDecimalField);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigIntegerEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigIntegerEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigIntegerEntity.java
index 2d9d988..1fac071 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigIntegerEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BigIntegerEntity.java
@@ -15,12 +15,9 @@ public abstract class _BigIntegerEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BIG_INTEGER_FIELD_PROPERTY = "bigIntegerField";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<BigInteger> BIG_INTEGER_FIELD = new Property<BigInteger>("bigIntegerField");
+    public static final Property<BigInteger> BIG_INTEGER_FIELD = new Property<>("bigIntegerField");
 
     public void setBigIntegerField(BigInteger bigIntegerField) {
         writeProperty("bigIntegerField", bigIntegerField);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitNumberTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitNumberTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitNumberTestEntity.java
index 50bc6c0..b0a4a82 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitNumberTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitNumberTestEntity.java
@@ -13,12 +13,9 @@ public abstract class _BitNumberTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BIT_COLUMN_PROPERTY = "bitColumn";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Integer> BIT_COLUMN = new Property<Integer>("bitColumn");
+    public static final Property<Integer> BIT_COLUMN = new Property<>("bitColumn");
 
     public void setBitColumn(Integer bitColumn) {
         writeProperty("bitColumn", bitColumn);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitTestEntity.java
index 91d49dd..1820a4c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BitTestEntity.java
@@ -13,12 +13,9 @@ public abstract class _BitTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BIT_COLUMN_PROPERTY = "bitColumn";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Boolean> BIT_COLUMN = new Property<Boolean>("bitColumn");
+    public static final Property<Boolean> BIT_COLUMN = new Property<>("bitColumn");
 
     public void setBitColumn(Boolean bitColumn) {
         writeProperty("bitColumn", bitColumn);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BooleanTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BooleanTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BooleanTestEntity.java
index 6651379..4da9062 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BooleanTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_BooleanTestEntity.java
@@ -13,12 +13,9 @@ public abstract class _BooleanTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BOOLEAN_COLUMN_PROPERTY = "booleanColumn";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Boolean> BOOLEAN_COLUMN = new Property<Boolean>("booleanColumn");
+    public static final Property<Boolean> BOOLEAN_COLUMN = new Property<>("booleanColumn");
 
     public void setBooleanColumn(Boolean booleanColumn) {
         writeProperty("booleanColumn", booleanColumn);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTest1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTest1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTest1.java
index ef70095..1877aae 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTest1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTest1.java
@@ -13,15 +13,10 @@ public abstract class _DecimalPKTest1 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String DECIMAL_PK_PROPERTY = "decimalPK";
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-
     public static final String DECIMAL_PK_PK_COLUMN = "DECIMAL_PK";
 
-    public static final Property<Double> DECIMAL_PK = new Property<Double>("decimalPK");
-    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<Double> DECIMAL_PK = new Property<>("decimalPK");
+    public static final Property<String> NAME = new Property<>("name");
 
     public void setDecimalPK(Double decimalPK) {
         writeProperty("decimalPK", decimalPK);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTestEntity.java
index 8f51019..6a79d2c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_DecimalPKTestEntity.java
@@ -15,15 +15,10 @@ public abstract class _DecimalPKTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String DECIMAL_PK_PROPERTY = "decimalPK";
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-
     public static final String DECIMAL_PK_PK_COLUMN = "DECIMAL_PK";
 
-    public static final Property<BigDecimal> DECIMAL_PK = new Property<BigDecimal>("decimalPK");
-    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<BigDecimal> DECIMAL_PK = new Property<>("decimalPK");
+    public static final Property<String> NAME = new Property<>("name");
 
     public void setDecimalPK(BigDecimal decimalPK) {
         writeProperty("decimalPK", decimalPK);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_LongEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_LongEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_LongEntity.java
index 3f976b6..8d7789a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_LongEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_LongEntity.java
@@ -13,12 +13,9 @@ public abstract class _LongEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String LONG_FIELD_PROPERTY = "longField";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Long> LONG_FIELD = new Property<Long>("longField");
+    public static final Property<Long> LONG_FIELD = new Property<>("longField");
 
     public void setLongField(Long longField) {
         writeProperty("longField", longField);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_SmallintTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_SmallintTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_SmallintTestEntity.java
index 8be4455..cc916ba 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_SmallintTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_SmallintTestEntity.java
@@ -13,12 +13,9 @@ public abstract class _SmallintTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String SMALLINT_COL_PROPERTY = "smallintCol";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Short> SMALLINT_COL = new Property<Short>("smallintCol");
+    public static final Property<Short> SMALLINT_COL = new Property<>("smallintCol");
 
     public void setSmallintCol(Short smallintCol) {
         writeProperty("smallintCol", smallintCol);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_TinyintTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_TinyintTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_TinyintTestEntity.java
index d31fccd..3021254 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_TinyintTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/numeric_types/auto/_TinyintTestEntity.java
@@ -13,12 +13,9 @@ public abstract class _TinyintTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String TINYINT_COL_PROPERTY = "tinyintCol";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Byte> TINYINT_COL = new Property<Byte>("tinyintCol");
+    public static final Property<Byte> TINYINT_COL = new Property<>("tinyintCol");
 
     public void setTinyintCol(Byte tinyintCol) {
         writeProperty("tinyintCol", tinyintCol);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java
index 136eb14..8f2b5f2 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java
@@ -1,7 +1,6 @@
 package org.apache.cayenne.testdo.oneway.auto;
 
 import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.exp.Property;
 
 /**
  * Class _OnewayTable1 was generated by Cayenne.
@@ -11,6 +10,7 @@ import org.apache.cayenne.exp.Property;
  */
 public abstract class _OnewayTable1 extends CayenneDataObject {
 
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java
index 960d372..6425946 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java
@@ -12,15 +12,12 @@ import org.apache.cayenne.testdo.oneway.OnewayTable1;
  */
 public abstract class _OnewayTable2 extends CayenneDataObject {
 
-    @Deprecated
-    public static final String ID_PROPERTY = "id";
-    @Deprecated
-    public static final String TO_ONE_ONE_WAY_DB_PROPERTY = "toOneOneWayDb";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Integer> ID = new Property<Integer>("id");
-    public static final Property<OnewayTable1> TO_ONE_ONE_WAY_DB = new Property<OnewayTable1>("toOneOneWayDb");
+    public static final Property<Integer> ID = new Property<>("id");
+    public static final Property<OnewayTable1> TO_ONE_ONE_WAY_DB = new Property<>("toOneOneWayDb");
 
     public void setId(Integer id) {
         writeProperty("id", id);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java
index 840224e..bd25371 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java
@@ -16,12 +16,9 @@ public abstract class _OnewayTable3 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String TO_MANY_ONE_WAY_DB_PROPERTY = "toManyOneWayDb";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<List<OnewayTable4>> TO_MANY_ONE_WAY_DB = new Property<List<OnewayTable4>>("toManyOneWayDb");
+    public static final Property<List<OnewayTable4>> TO_MANY_ONE_WAY_DB = new Property<>("toManyOneWayDb");
 
     public void addToToManyOneWayDb(OnewayTable4 obj) {
         addToManyTarget("toManyOneWayDb", obj, true);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java
index ba06814..1f0ca75 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java
@@ -1,7 +1,6 @@
 package org.apache.cayenne.testdo.oneway.auto;
 
 import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.exp.Property;
 
 /**
  * Class _OnewayTable4 was generated by Cayenne.
@@ -11,6 +10,7 @@ import org.apache.cayenne.exp.Property;
  */
 public abstract class _OnewayTable4 extends CayenneDataObject {
 
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/Continent.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/Continent.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/Continent.java
deleted file mode 100644
index faa7c30..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/Continent.java
+++ /dev/null
@@ -1,25 +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
- *
- *    http://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.
- ****************************************************************/
-package org.apache.cayenne.testdo.persistent;
-
-import org.apache.cayenne.testdo.persistent.auto._Continent;
-
-public class Continent extends _Continent {
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/Country.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/Country.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/Country.java
deleted file mode 100644
index e20e213..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/Country.java
+++ /dev/null
@@ -1,25 +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
- *
- *    http://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.
- ****************************************************************/
-package org.apache.cayenne.testdo.persistent;
-
-import org.apache.cayenne.testdo.persistent.auto._Country;
-
-public class Country extends _Country {
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/auto/_Continent.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/auto/_Continent.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/auto/_Continent.java
deleted file mode 100644
index 798c45b..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/auto/_Continent.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.apache.cayenne.testdo.persistent.auto;
-
-import java.util.List;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.testdo.persistent.Country;
-
-/**
- * A generated persistent class mapped as "Continent" Cayenne entity. It is a good idea to
- * avoid changing this class manually, since it will be overwritten next time code is
- * regenerated. If you need to make any customizations, put them in a subclass.
- */
-public abstract class _Continent extends PersistentObject {
-
-    public static final String NAME_PROPERTY = "name";
-    public static final String COUNTRIES_PROPERTY = "countries";
-
-    protected String name;
-    protected List<Country> countries;
-
-    public String getName() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        return name;
-    }
-    public void setName(String name) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        Object oldValue = this.name;
-        this.name = name;
-
-        // notify objectContext about simple property change
-        if(objectContext != null) {
-            objectContext.propertyChanged(this, "name", oldValue, name);
-        }
-    }
-
-    public List<Country> getCountries() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "countries", true);
-        }
-
-        return countries;
-    }
-    public void addToCountries(Country object) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "countries", true);
-        }
-
-        this.countries.add(object);
-    }
-    public void removeFromCountries(Country object) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "countries", true);
-        }
-
-        this.countries.remove(object);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/auto/_Country.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/auto/_Country.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/auto/_Country.java
deleted file mode 100644
index 45c0ee4..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/persistent/auto/_Country.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.apache.cayenne.testdo.persistent.auto;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.ValueHolder;
-import org.apache.cayenne.testdo.persistent.Continent;
-
-/**
- * A generated persistent class mapped as "Country" Cayenne entity. It is a good idea to
- * avoid changing this class manually, since it will be overwritten next time code is
- * regenerated. If you need to make any customizations, put them in a subclass.
- */
-public abstract class _Country extends PersistentObject {
-
-    public static final String NAME_PROPERTY = "name";
-    public static final String CONTINENT_PROPERTY = "continent";
-
-    protected String name;
-    protected ValueHolder continent;
-
-    public String getName() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        return name;
-    }
-    public void setName(String name) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        Object oldValue = this.name;
-        this.name = name;
-
-        // notify objectContext about simple property change
-        if(objectContext != null) {
-            objectContext.propertyChanged(this, "name", oldValue, name);
-        }
-    }
-
-    public Continent getContinent() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "continent", true);
-        }
-
-        return (Continent) continent.getValue();
-    }
-    public void setContinent(Continent continent) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "continent", true);
-        }
-
-        this.continent.setValue(continent);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/primitive/auto/_PrimitivesTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/primitive/auto/_PrimitivesTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/primitive/auto/_PrimitivesTestEntity.java
index 6bdb279..4056499 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/primitive/auto/_PrimitivesTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/primitive/auto/_PrimitivesTestEntity.java
@@ -13,15 +13,10 @@ public abstract class _PrimitivesTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BOOLEAN_COLUMN_PROPERTY = "booleanColumn";
-    @Deprecated
-    public static final String INT_COLUMN_PROPERTY = "intColumn";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Boolean> BOOLEAN_COLUMN = new Property<Boolean>("booleanColumn");
-    public static final Property<Integer> INT_COLUMN = new Property<Integer>("intColumn");
+    public static final Property<Boolean> BOOLEAN_COLUMN = new Property<>("booleanColumn");
+    public static final Property<Integer> INT_COLUMN = new Property<>("intColumn");
 
     public void setBooleanColumn(boolean booleanColumn) {
         writeProperty("booleanColumn", booleanColumn);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java
index 99a98da..ee51554 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java
@@ -54,7 +54,6 @@ public class CayenneProjects {
     public static final String NUMERIC_TYPES_PROJECT = "cayenne-numeric-types.xml";
     public static final String ONEWAY_PROJECT = "cayenne-oneway-rels.xml";
     public static final String PEOPLE_PROJECT = "cayenne-people.xml";
-    public static final String PERSISTENT_PROJECT = "cayenne-persistent.xml";
     public static final String PRIMITIVE_PROJECT = "cayenne-primitive.xml";
     public static final String QUALIFIED_PROJECT = "cayenne-qualified.xml";
     public static final String QUOTED_IDENTIFIERS_PROJECT = "cayenne-quoted-identifiers.xml";

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
index 8c8a208..8cab9b1 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
@@ -78,7 +78,7 @@ public class SchemaBuilder {
 			"relationships-collection-to-many.map.xml", "relationships-child-master.map.xml",
 			"relationships-clob.map.xml", "relationships-flattened.map.xml", "relationships-set-to-many.map.xml",
 			"relationships-to-many-fk.map.xml", "relationships-to-one-fk.map.xml", "return-types.map.xml",
-			"uuid.map.xml", "multi-tier.map.xml", "persistent.map.xml", "reflexive.map.xml", "delete-rules.map.xml",
+			"uuid.map.xml", "multi-tier.map.xml", "reflexive.map.xml", "delete-rules.map.xml",
             "lifecycle-callbacks-order.map.xml", "lifecycles.map.xml", "map-to-many.map.xml", "toone.map.xml", "meaningful-pk.map.xml",
 			"table-primitives.map.xml", "generic.map.xml", "map-db1.map.xml", "map-db2.map.xml", "embeddable.map.xml",
 			"qualified.map.xml", "quoted-identifiers.map.xml", "inheritance-single-table1.map.xml",

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/resources/cayenne-persistent.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/cayenne-persistent.xml b/cayenne-server/src/test/resources/cayenne-persistent.xml
deleted file mode 100644
index e368c57..0000000
--- a/cayenne-server/src/test/resources/cayenne-persistent.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<domain project-version="9">
-	<map name="persistent"/>
-</domain>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/resources/persistent.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/persistent.map.xml b/cayenne-server/src/test/resources/persistent.map.xml
deleted file mode 100644
index ee0481a..0000000
--- a/cayenne-server/src/test/resources/persistent.map.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<data-map xmlns="http://cayenne.apache.org/schema/9/modelMap"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://cayenne.apache.org/schema/9/modelMap http://cayenne.apache.org/schema/9/modelMap.xsd"
-	 project-version="9">
-	<property name="defaultPackage" value="org.apache.cayenne.testdo.persistent"/>
-	<property name="clientSupported" value="true"/>
-	<property name="defaultClientPackage" value="org.apache.cayenne.testdo.persistent"/>
-	<db-entity name="CONTINENT">
-		<db-attribute name="CONTINENTD" type="BIGINT" isPrimaryKey="true" isMandatory="true"/>
-		<db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
-	</db-entity>
-	<db-entity name="COUNTRY">
-		<db-attribute name="CONTINENTID" type="BIGINT" isMandatory="true"/>
-		<db-attribute name="COUNTRYID" type="BIGINT" isPrimaryKey="true" isMandatory="true"/>
-		<db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
-	</db-entity>
-	<obj-entity name="Continent" className="org.apache.cayenne.testdo.persistent.Continent" clientClassName="org.apache.cayenne.testdo.persistent.Continent" dbEntityName="CONTINENT" superClassName="org.apache.cayenne.PersistentObject">
-		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-	</obj-entity>
-	<obj-entity name="Country" className="org.apache.cayenne.testdo.persistent.Country" clientClassName="org.apache.cayenne.testdo.persistent.Country" dbEntityName="COUNTRY" superClassName="org.apache.cayenne.PersistentObject">
-		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-	</obj-entity>
-	<db-relationship name="countries" source="CONTINENT" target="COUNTRY" toMany="true">
-		<db-attribute-pair source="CONTINENTD" target="CONTINENTID"/>
-	</db-relationship>
-	<db-relationship name="continent" source="COUNTRY" target="CONTINENT" toMany="false">
-		<db-attribute-pair source="CONTINENTID" target="CONTINENTD"/>
-	</db-relationship>
-	<obj-relationship name="countries" source="Continent" target="Country" deleteRule="Cascade" db-relationship-path="countries"/>
-	<obj-relationship name="continent" source="Country" target="Continent" deleteRule="Nullify" db-relationship-path="continent"/>
-</data-map>	


[03/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
CAY-2176 Java 7 diamond class generation templates

* regenerated unit tests with the new templates and no String properties
* cleaned up String property refs in unit tests


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

Branch: refs/heads/master
Commit: 48a350282612d0ae9769fb11a86f938a89a0c0c6
Parents: bb981ae
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Dec 18 19:18:18 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Dec 18 20:23:28 2016 +0300

----------------------------------------------------------------------
 .../DataContextExtendedTypeOperationsIT.java    |  9 ++---
 .../org/apache/cayenne/access/EmbeddingIT.java  | 17 ++++-----
 .../java/org/apache/cayenne/access/EnumIT.java  |  5 +--
 .../access/SingleTableInheritance1IT.java       |  2 +-
 .../testdo/date_time/auto/_CalendarEntity.java  |  5 +--
 .../testdo/date_time/auto/_DateTestEntity.java  | 13 ++-----
 .../testdo/deleterules/auto/_DeleteCascade.java | 15 ++++----
 .../testdo/deleterules/auto/_DeleteDeny.java    | 15 ++++----
 .../testdo/deleterules/auto/_DeleteNullify.java | 15 ++++----
 .../testdo/deleterules/auto/_DeleteRule.java    | 37 +++++++++++---------
 .../testdo/embeddable/auto/_EmbedEntity1.java   | 21 ++++++-----
 .../testdo/embeddable/auto/_Embeddable1.java    |  5 +--
 .../testdo/enum_test/auto/_EnumEntity.java      |  5 +--
 .../extended_type/auto/_ExtendedTypeEntity.java |  5 +--
 .../generated/auto/_GeneratedColumnCompKey.java |  9 ++---
 .../auto/_GeneratedColumnCompMaster.java        |  9 ++---
 .../generated/auto/_GeneratedColumnDep.java     |  9 ++---
 .../generated/auto/_GeneratedColumnTest2.java   |  5 +--
 .../auto/_GeneratedColumnTestEntity.java        |  9 ++---
 .../testdo/generated/auto/_GeneratedF1.java     |  5 +--
 .../testdo/generated/auto/_GeneratedF2.java     |  5 +--
 .../testdo/inheritance/auto/_BaseEntity.java    | 21 ++++++-----
 .../inheritance/auto/_DirectToSubEntity.java    | 15 ++++----
 .../testdo/inheritance/auto/_RelatedEntity.java | 23 ++++++------
 .../testdo/inheritance/auto/_SubEntity.java     |  2 ++
 .../testdo/inheritance_flat/auto/_Group.java    | 17 +++++----
 .../inheritance_flat/auto/_GroupProperties.java | 21 ++++++-----
 .../testdo/inheritance_flat/auto/_Role.java     | 29 ++++++++-------
 .../testdo/inheritance_flat/auto/_User.java     |  9 +++--
 .../inheritance_flat/auto/_UserProperties.java  | 21 ++++++-----
 .../testdo/inheritance_vertical/IvSub3.java     |  7 ++--
 .../inheritance_vertical/auto/_Iv1Root.java     |  4 +--
 .../inheritance_vertical/auto/_Iv1Sub1.java     |  2 +-
 .../inheritance_vertical/auto/_Iv2Root.java     |  2 +-
 .../inheritance_vertical/auto/_Iv2Sub1.java     |  2 +-
 .../inheritance_vertical/auto/_IvAbstract.java  |  2 +-
 .../inheritance_vertical/auto/_IvBase.java      | 20 +++++------
 .../inheritance_vertical/auto/_IvConcrete.java  |  6 ++--
 .../inheritance_vertical/auto/_IvImpl.java      |  6 ++--
 .../inheritance_vertical/auto/_IvOther.java     | 11 +++---
 .../inheritance_vertical/auto/_IvRoot.java      |  4 +--
 .../inheritance_vertical/auto/_IvSub1.java      |  2 +-
 .../inheritance_vertical/auto/_IvSub1Sub1.java  |  2 +-
 .../inheritance_vertical/auto/_IvSub2.java      |  4 +--
 .../inheritance_vertical/auto/_IvSub3.java      |  6 +---
 .../auto/_Lifecycle.java                        |  2 +-
 .../src/test/resources/cayenne-enum.xml         |  2 +-
 cayenne-server/src/test/resources/enum.map.xml  | 30 ++++++++--------
 48 files changed, 236 insertions(+), 256 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
index ee041cf..89ef0ca 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
-import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.SelectQuery;
@@ -69,10 +68,7 @@ public class DataContextExtendedTypeOperationsIT extends ServerCase {
 
         e1.getObjectContext().commitChanges();
 
-        Expression in = ExpressionFactory.inExp(
-                ExtendedTypeEntity.NAME_PROPERTY,
-                new StringET1("X"),
-                new StringET1("Y"));
+        Expression in = ExtendedTypeEntity.NAME.in(new StringET1("X"), new StringET1("Y"));
         SelectQuery query = new SelectQuery(ExtendedTypeEntity.class, in);
         assertEquals(2, e1.getObjectContext().performQuery(query).size());
     }
@@ -90,8 +86,7 @@ public class DataContextExtendedTypeOperationsIT extends ServerCase {
 
         e1.getObjectContext().commitChanges();
 
-        Expression in = ExpressionFactory.inExp(ExtendedTypeEntity.NAME_PROPERTY, Arrays
-                .asList(new StringET1("X"), new StringET1("Y")));
+        Expression in = ExtendedTypeEntity.NAME.in(Arrays.asList(new StringET1("X"), new StringET1("Y")));
         SelectQuery query = new SelectQuery(ExtendedTypeEntity.class, in);
         assertEquals(2, e1.getObjectContext().performQuery(query).size());
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/EmbeddingIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
index 58ddaf4..1486d33 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
@@ -24,7 +24,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.embeddable.EmbedEntity1;
@@ -73,7 +72,7 @@ public class EmbeddingIT extends ServerCase {
         createSelectDataSet();
 
         SelectQuery query = new SelectQuery(EmbedEntity1.class);
-        query.addOrdering(EmbedEntity1.NAME_PROPERTY, SortOrder.ASCENDING);
+        query.addOrdering(EmbedEntity1.NAME.asc());
 
         List<?> results = context.performQuery(query);
         assertEquals(2, results.size());
@@ -127,9 +126,8 @@ public class EmbeddingIT extends ServerCase {
 
         context.commitChanges();
 
-        SelectQuery query = new SelectQuery(EmbedEntity1.class);
-        query.setFetchingDataRows(true);
-        DataRow row = (DataRow) Cayenne.objectForQuery(context, query);
+        SelectQuery<DataRow> query = SelectQuery.dataRowQuery(EmbedEntity1.class);
+        DataRow row = query.selectOne(context);
         assertNotNull(row);
         assertEquals("E11", row.get("EMBEDDED10"));
         assertEquals("E12", row.get("EMBEDDED20"));
@@ -142,7 +140,7 @@ public class EmbeddingIT extends ServerCase {
         createUpdateDataSet();
 
         SelectQuery query = new SelectQuery(EmbedEntity1.class);
-        query.addOrdering(EmbedEntity1.NAME_PROPERTY, SortOrder.ASCENDING);
+        query.addOrdering(EmbedEntity1.NAME.asc());
 
         List<?> results = context.performQuery(query);
         EmbedEntity1 o1 = (EmbedEntity1) results.get(0);
@@ -165,7 +163,7 @@ public class EmbeddingIT extends ServerCase {
         createUpdateDataSet();
 
         SelectQuery query = new SelectQuery(EmbedEntity1.class);
-        query.addOrdering(EmbedEntity1.NAME_PROPERTY, SortOrder.ASCENDING);
+        query.addOrdering(EmbedEntity1.NAME.asc());
 
         List<?> results = context.performQuery(query);
         EmbedEntity1 o1 = (EmbedEntity1) results.get(0);
@@ -178,9 +176,8 @@ public class EmbeddingIT extends ServerCase {
         assertEquals(PersistenceState.MODIFIED, o1.getPersistenceState());
 
         context.commitChanges();
-        SelectQuery query1 = new SelectQuery(EmbedEntity1.class);
-        query1.setFetchingDataRows(true);
-        DataRow row = (DataRow) Cayenne.objectForQuery(context, query1);
+        SelectQuery<DataRow> query1 = SelectQuery.dataRowQuery(EmbedEntity1.class);
+        DataRow row = query1.selectOne(context);
         assertNotNull(row);
         assertEquals("x1", row.get("EMBEDDED10"));
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/access/EnumIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/EnumIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/EnumIT.java
index 81d9b75..035fc3a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/EnumIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/EnumIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.SelectQuery;
@@ -66,9 +65,7 @@ public class EnumIT extends ServerCase {
         createDataSet();
 
         SelectQuery q = new SelectQuery(EnumEntity.class);
-        q.andQualifier(ExpressionFactory.matchExp(
-                EnumEntity.ENUM_ATTRIBUTE_PROPERTY,
-                Enum1.one));
+        q.andQualifier(EnumEntity.ENUM_ATTRIBUTE.eq(Enum1.one));
 
         EnumEntity e = (EnumEntity) Cayenne.objectForQuery(context, q);
         assertNotNull(e);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritance1IT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritance1IT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritance1IT.java
index 29fab90..d5ae2f0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritance1IT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritance1IT.java
@@ -61,7 +61,7 @@ public class SingleTableInheritance1IT extends ServerCase {
 
         // Per CAY-1379 removing user and then refetching resulted in a FFE downstream
         group1.removeFromGroupMembers(user);
-        Expression exp = ExpressionFactory.matchExp(Role.ROLE_GROUPS_PROPERTY, group2);
+        Expression exp = ExpressionFactory.matchExp(Role.ROLE_GROUPS.getName(), group2);
         SelectQuery query = new SelectQuery(Group.class, exp);
         context.performQuery(query);
         context.commitChanges();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_CalendarEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_CalendarEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_CalendarEntity.java
index b3a8f50..52ad2e1 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_CalendarEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_CalendarEntity.java
@@ -15,12 +15,9 @@ public abstract class _CalendarEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String CALENDAR_FIELD_PROPERTY = "calendarField";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Calendar> CALENDAR_FIELD = new Property<Calendar>("calendarField");
+    public static final Property<Calendar> CALENDAR_FIELD = new Property<>("calendarField");
 
     public void setCalendarField(Calendar calendarField) {
         writeProperty("calendarField", calendarField);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_DateTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_DateTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_DateTestEntity.java
index 10163cc..66dc69e 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_DateTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_DateTestEntity.java
@@ -15,18 +15,11 @@ public abstract class _DateTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String DATE_COLUMN_PROPERTY = "dateColumn";
-    @Deprecated
-    public static final String TIME_COLUMN_PROPERTY = "timeColumn";
-    @Deprecated
-    public static final String TIMESTAMP_COLUMN_PROPERTY = "timestampColumn";
-
     public static final String DATE_TEST_ID_PK_COLUMN = "DATE_TEST_ID";
 
-    public static final Property<Date> DATE_COLUMN = new Property<Date>("dateColumn");
-    public static final Property<Date> TIME_COLUMN = new Property<Date>("timeColumn");
-    public static final Property<Date> TIMESTAMP_COLUMN = new Property<Date>("timestampColumn");
+    public static final Property<Date> DATE_COLUMN = new Property<>("dateColumn");
+    public static final Property<Date> TIME_COLUMN = new Property<>("timeColumn");
+    public static final Property<Date> TIMESTAMP_COLUMN = new Property<>("timestampColumn");
 
     public void setDateColumn(Date dateColumn) {
         writeProperty("dateColumn", dateColumn);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
index bd8be7c..691cb9b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.deleterules.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.deleterules.DeleteRule;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.deleterules.DeleteRule;
  */
 public abstract class _DeleteCascade extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String CASCADE_PROPERTY = "cascade";
+    private static final long serialVersionUID = 1L; 
 
     public static final String DELETE_CASCADE_ID_PK_COLUMN = "DELETE_CASCADE_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<DeleteRule> CASCADE = new Property<>("cascade");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setCascade(DeleteRule cascade) {
-        setToOneTarget(CASCADE_PROPERTY, cascade, true);
+        setToOneTarget("cascade", cascade, true);
     }
 
     public DeleteRule getCascade() {
-        return (DeleteRule)readProperty(CASCADE_PROPERTY);
+        return (DeleteRule)readProperty("cascade");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteDeny.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteDeny.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteDeny.java
index 4b5069c..56621b8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteDeny.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteDeny.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.deleterules.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.deleterules.DeleteRule;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.deleterules.DeleteRule;
  */
 public abstract class _DeleteDeny extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String DENY_PROPERTY = "deny";
+    private static final long serialVersionUID = 1L; 
 
     public static final String DELETE_DENY_ID_PK_COLUMN = "DELETE_DENY_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<DeleteRule> DENY = new Property<>("deny");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setDeny(DeleteRule deny) {
-        setToOneTarget(DENY_PROPERTY, deny, true);
+        setToOneTarget("deny", deny, true);
     }
 
     public DeleteRule getDeny() {
-        return (DeleteRule)readProperty(DENY_PROPERTY);
+        return (DeleteRule)readProperty("deny");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteNullify.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteNullify.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteNullify.java
index 10906cb..542a9a5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteNullify.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteNullify.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.deleterules.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.deleterules.DeleteRule;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.deleterules.DeleteRule;
  */
 public abstract class _DeleteNullify extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String NULLIFY_PROPERTY = "nullify";
+    private static final long serialVersionUID = 1L; 
 
     public static final String DELETE_NULLIFY_ID_PK_COLUMN = "DELETE_NULLIFY_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<DeleteRule> NULLIFY = new Property<>("nullify");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setNullify(DeleteRule nullify) {
-        setToOneTarget(NULLIFY_PROPERTY, nullify, true);
+        setToOneTarget("nullify", nullify, true);
     }
 
     public DeleteRule getNullify() {
-        return (DeleteRule)readProperty(NULLIFY_PROPERTY);
+        return (DeleteRule)readProperty("nullify");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteRule.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteRule.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteRule.java
index 6dedf75..b7cad7d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteRule.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteRule.java
@@ -1,12 +1,13 @@
 package org.apache.cayenne.testdo.deleterules.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.deleterules.DeleteCascade;
 import org.apache.cayenne.testdo.deleterules.DeleteDeny;
 import org.apache.cayenne.testdo.deleterules.DeleteNullify;
 
-import java.util.List;
-
 /**
  * Class _DeleteRule was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -15,53 +16,55 @@ import java.util.List;
  */
 public abstract class _DeleteRule extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String FROM_CASCADE_PROPERTY = "fromCascade";
-    public static final String FROM_DENY_PROPERTY = "fromDeny";
-    public static final String FROM_NULLIFY_PROPERTY = "fromNullify";
+    private static final long serialVersionUID = 1L; 
 
     public static final String DELETE_RULE_ID_PK_COLUMN = "DELETE_RULE_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<DeleteCascade>> FROM_CASCADE = new Property<>("fromCascade");
+    public static final Property<List<DeleteDeny>> FROM_DENY = new Property<>("fromDeny");
+    public static final Property<List<DeleteNullify>> FROM_NULLIFY = new Property<>("fromNullify");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToFromCascade(DeleteCascade obj) {
-        addToManyTarget(FROM_CASCADE_PROPERTY, obj, true);
+        addToManyTarget("fromCascade", obj, true);
     }
     public void removeFromFromCascade(DeleteCascade obj) {
-        removeToManyTarget(FROM_CASCADE_PROPERTY, obj, true);
+        removeToManyTarget("fromCascade", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<DeleteCascade> getFromCascade() {
-        return (List<DeleteCascade>)readProperty(FROM_CASCADE_PROPERTY);
+        return (List<DeleteCascade>)readProperty("fromCascade");
     }
 
 
     public void addToFromDeny(DeleteDeny obj) {
-        addToManyTarget(FROM_DENY_PROPERTY, obj, true);
+        addToManyTarget("fromDeny", obj, true);
     }
     public void removeFromFromDeny(DeleteDeny obj) {
-        removeToManyTarget(FROM_DENY_PROPERTY, obj, true);
+        removeToManyTarget("fromDeny", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<DeleteDeny> getFromDeny() {
-        return (List<DeleteDeny>)readProperty(FROM_DENY_PROPERTY);
+        return (List<DeleteDeny>)readProperty("fromDeny");
     }
 
 
     public void addToFromNullify(DeleteNullify obj) {
-        addToManyTarget(FROM_NULLIFY_PROPERTY, obj, true);
+        addToManyTarget("fromNullify", obj, true);
     }
     public void removeFromFromNullify(DeleteNullify obj) {
-        removeToManyTarget(FROM_NULLIFY_PROPERTY, obj, true);
+        removeToManyTarget("fromNullify", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<DeleteNullify> getFromNullify() {
-        return (List<DeleteNullify>)readProperty(FROM_NULLIFY_PROPERTY);
+        return (List<DeleteNullify>)readProperty("fromNullify");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java
index eceeaed..b610a19 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.embeddable.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.embeddable.Embeddable1;
 
 /**
@@ -11,31 +12,33 @@ import org.apache.cayenne.testdo.embeddable.Embeddable1;
  */
 public abstract class _EmbedEntity1 extends CayenneDataObject {
 
-    public static final String EMBEDDED1_PROPERTY = "embedded1";
-    public static final String EMBEDDED2_PROPERTY = "embedded2";
-    public static final String NAME_PROPERTY = "name";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Embeddable1> EMBEDDED1 = new Property<>("embedded1");
+    public static final Property<Embeddable1> EMBEDDED2 = new Property<>("embedded2");
+    public static final Property<String> NAME = new Property<>("name");
+
     public void setEmbedded1(Embeddable1 embedded1) {
-        writeProperty(EMBEDDED1_PROPERTY, embedded1);
+        writeProperty("embedded1", embedded1);
     }
     public Embeddable1 getEmbedded1() {
-        return (Embeddable1)readProperty(EMBEDDED1_PROPERTY);
+        return (Embeddable1)readProperty("embedded1");
     }
 
     public void setEmbedded2(Embeddable1 embedded2) {
-        writeProperty(EMBEDDED2_PROPERTY, embedded2);
+        writeProperty("embedded2", embedded2);
     }
     public Embeddable1 getEmbedded2() {
-        return (Embeddable1)readProperty(EMBEDDED2_PROPERTY);
+        return (Embeddable1)readProperty("embedded2");
     }
 
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java
index c69e006..449a8f8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.embeddable.auto;
 
 import org.apache.cayenne.Persistent;
+import org.apache.cayenne.exp.Property;
 
 /** 
  * Embeddable class _Embeddable1 was generated by Cayenne.
@@ -10,8 +11,8 @@ import org.apache.cayenne.Persistent;
  */
 public abstract class _Embeddable1 extends Object {
 
-    public static final String EMBEDDED10_PROPERTY = "embedded10";
-    public static final String EMBEDDED20_PROPERTY = "embedded20";
+    public static final Property<String> EMBEDDED10 = new Property<>("embedded10");
+    public static final Property<String> EMBEDDED20 = new Property<>("embedded20");
 
     // special properties injected by Cayenne
     private Persistent owner;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/auto/_EnumEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/auto/_EnumEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/auto/_EnumEntity.java
index ed1fee6..50b4821 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/auto/_EnumEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/auto/_EnumEntity.java
@@ -14,12 +14,9 @@ public abstract class _EnumEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ENUM_ATTRIBUTE_PROPERTY = "enumAttribute";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Enum1> ENUM_ATTRIBUTE = new Property<Enum1>("enumAttribute");
+    public static final Property<Enum1> ENUM_ATTRIBUTE = new Property<>("enumAttribute");
 
     public void setEnumAttribute(Enum1 enumAttribute) {
         writeProperty("enumAttribute", enumAttribute);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/auto/_ExtendedTypeEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/auto/_ExtendedTypeEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/auto/_ExtendedTypeEntity.java
index e71a1b5..6ecda53 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/auto/_ExtendedTypeEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/auto/_ExtendedTypeEntity.java
@@ -14,12 +14,9 @@ public abstract class _ExtendedTypeEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<StringET1> NAME = new Property<StringET1>("name");
+    public static final Property<StringET1> NAME = new Property<>("name");
 
     public void setName(StringET1 name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompKey.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompKey.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompKey.java
index 78e9132..91178ee 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompKey.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompKey.java
@@ -14,17 +14,12 @@ public abstract class _GeneratedColumnCompKey extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String TO_MASTER_PROPERTY = "toMaster";
-
     public static final String AUTO_PK_PK_COLUMN = "AUTO_PK";
     public static final String GENERATED_COLUMN_PK_COLUMN = "GENERATED_COLUMN";
     public static final String PROPAGATED_PK_PK_COLUMN = "PROPAGATED_PK";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<GeneratedColumnCompMaster> TO_MASTER = new Property<GeneratedColumnCompMaster>("toMaster");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<GeneratedColumnCompMaster> TO_MASTER = new Property<>("toMaster");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompMaster.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompMaster.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompMaster.java
index 16d97ed..bf07582 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompMaster.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompMaster.java
@@ -16,15 +16,10 @@ public abstract class _GeneratedColumnCompMaster extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String TO_DETAIL_PROPERTY = "toDetail";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<List<GeneratedColumnCompKey>> TO_DETAIL = new Property<List<GeneratedColumnCompKey>>("toDetail");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<GeneratedColumnCompKey>> TO_DETAIL = new Property<>("toDetail");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnDep.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnDep.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnDep.java
index 38be7ff..fb524f8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnDep.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnDep.java
@@ -14,15 +14,10 @@ public abstract class _GeneratedColumnDep extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String TO_MASTER_PROPERTY = "toMaster";
-
     public static final String GENERATED_COLUMN_FK_PK_COLUMN = "GENERATED_COLUMN_FK";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<GeneratedColumnTestEntity> TO_MASTER = new Property<GeneratedColumnTestEntity>("toMaster");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<GeneratedColumnTestEntity> TO_MASTER = new Property<>("toMaster");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTest2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTest2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTest2.java
index 3628bfb..5f27685 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTest2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTest2.java
@@ -13,12 +13,9 @@ public abstract class _GeneratedColumnTest2 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-
     public static final String GENERATED_COLUMN_PK_COLUMN = "GENERATED_COLUMN";
 
-    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<String> NAME = new Property<>("name");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTestEntity.java
index 8c82030..83b3ec2 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTestEntity.java
@@ -14,15 +14,10 @@ public abstract class _GeneratedColumnTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String TO_DEP_PROPERTY = "toDep";
-
     public static final String GENERATED_COLUMN_PK_COLUMN = "GENERATED_COLUMN";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<GeneratedColumnDep> TO_DEP = new Property<GeneratedColumnDep>("toDep");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<GeneratedColumnDep> TO_DEP = new Property<>("toDep");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF1.java
index d93337d..d139240 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF1.java
@@ -16,12 +16,9 @@ public abstract class _GeneratedF1 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String F2_PROPERTY = "f2";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<List<GeneratedF2>> F2 = new Property<List<GeneratedF2>>("f2");
+    public static final Property<List<GeneratedF2>> F2 = new Property<>("f2");
 
     public void addToF2(GeneratedF2 obj) {
         addToManyTarget("f2", obj, true);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF2.java
index 048e8a5..1d1b92f 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF2.java
@@ -16,12 +16,9 @@ public abstract class _GeneratedF2 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String F1_PROPERTY = "f1";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<List<GeneratedF1>> F1 = new Property<List<GeneratedF1>>("f1");
+    public static final Property<List<GeneratedF1>> F1 = new Property<>("f1");
 
     public void addToF1(GeneratedF1 obj) {
         addToManyTarget("f1", obj, true);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_BaseEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_BaseEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_BaseEntity.java
index 50f239c..ea0d99b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_BaseEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_BaseEntity.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.inheritance.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance.DirectToSubEntity;
 import org.apache.cayenne.testdo.inheritance.RelatedEntity;
 
@@ -12,34 +13,36 @@ import org.apache.cayenne.testdo.inheritance.RelatedEntity;
  */
 public abstract class _BaseEntity extends CayenneDataObject {
 
-    public static final String ENTITY_TYPE_PROPERTY = "entityType";
-    public static final String TO_DIRECT_TO_SUB_ENTITY_PROPERTY = "toDirectToSubEntity";
-    public static final String TO_RELATED_ENTITY_PROPERTY = "toRelatedEntity";
+    private static final long serialVersionUID = 1L; 
 
     public static final String BASE_ENTITY_ID_PK_COLUMN = "BASE_ENTITY_ID";
 
+    public static final Property<String> ENTITY_TYPE = new Property<>("entityType");
+    public static final Property<DirectToSubEntity> TO_DIRECT_TO_SUB_ENTITY = new Property<>("toDirectToSubEntity");
+    public static final Property<RelatedEntity> TO_RELATED_ENTITY = new Property<>("toRelatedEntity");
+
     public void setEntityType(String entityType) {
-        writeProperty(ENTITY_TYPE_PROPERTY, entityType);
+        writeProperty("entityType", entityType);
     }
     public String getEntityType() {
-        return (String)readProperty(ENTITY_TYPE_PROPERTY);
+        return (String)readProperty("entityType");
     }
 
     public void setToDirectToSubEntity(DirectToSubEntity toDirectToSubEntity) {
-        setToOneTarget(TO_DIRECT_TO_SUB_ENTITY_PROPERTY, toDirectToSubEntity, true);
+        setToOneTarget("toDirectToSubEntity", toDirectToSubEntity, true);
     }
 
     public DirectToSubEntity getToDirectToSubEntity() {
-        return (DirectToSubEntity)readProperty(TO_DIRECT_TO_SUB_ENTITY_PROPERTY);
+        return (DirectToSubEntity)readProperty("toDirectToSubEntity");
     }
 
 
     public void setToRelatedEntity(RelatedEntity toRelatedEntity) {
-        setToOneTarget(TO_RELATED_ENTITY_PROPERTY, toRelatedEntity, true);
+        setToOneTarget("toRelatedEntity", toRelatedEntity, true);
     }
 
     public RelatedEntity getToRelatedEntity() {
-        return (RelatedEntity)readProperty(TO_RELATED_ENTITY_PROPERTY);
+        return (RelatedEntity)readProperty("toRelatedEntity");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_DirectToSubEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_DirectToSubEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_DirectToSubEntity.java
index d731b06..c6ec424 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_DirectToSubEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_DirectToSubEntity.java
@@ -1,10 +1,11 @@
 package org.apache.cayenne.testdo.inheritance.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance.SubEntity;
 
-import java.util.List;
-
 /**
  * Class _DirectToSubEntity was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -13,19 +14,21 @@ import java.util.List;
  */
 public abstract class _DirectToSubEntity extends CayenneDataObject {
 
-    public static final String SUB_ENTITIES_PROPERTY = "subEntities";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<List<SubEntity>> SUB_ENTITIES = new Property<>("subEntities");
+
     public void addToSubEntities(SubEntity obj) {
-        addToManyTarget(SUB_ENTITIES_PROPERTY, obj, true);
+        addToManyTarget("subEntities", obj, true);
     }
     public void removeFromSubEntities(SubEntity obj) {
-        removeToManyTarget(SUB_ENTITIES_PROPERTY, obj, true);
+        removeToManyTarget("subEntities", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<SubEntity> getSubEntities() {
-        return (List<SubEntity>)readProperty(SUB_ENTITIES_PROPERTY);
+        return (List<SubEntity>)readProperty("subEntities");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_RelatedEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_RelatedEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_RelatedEntity.java
index 4cd2462..b860ca2 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_RelatedEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_RelatedEntity.java
@@ -1,11 +1,12 @@
 package org.apache.cayenne.testdo.inheritance.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance.BaseEntity;
 import org.apache.cayenne.testdo.inheritance.SubEntity;
 
-import java.util.List;
-
 /**
  * Class _RelatedEntity was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -14,32 +15,34 @@ import java.util.List;
  */
 public abstract class _RelatedEntity extends CayenneDataObject {
 
-    public static final String BASE_ENTITIES_PROPERTY = "baseEntities";
-    public static final String SUB_ENTITIES_PROPERTY = "subEntities";
+    private static final long serialVersionUID = 1L; 
 
     public static final String RELATED_ENTITY_ID_PK_COLUMN = "RELATED_ENTITY_ID";
 
+    public static final Property<List<BaseEntity>> BASE_ENTITIES = new Property<>("baseEntities");
+    public static final Property<List<SubEntity>> SUB_ENTITIES = new Property<>("subEntities");
+
     public void addToBaseEntities(BaseEntity obj) {
-        addToManyTarget(BASE_ENTITIES_PROPERTY, obj, true);
+        addToManyTarget("baseEntities", obj, true);
     }
     public void removeFromBaseEntities(BaseEntity obj) {
-        removeToManyTarget(BASE_ENTITIES_PROPERTY, obj, true);
+        removeToManyTarget("baseEntities", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<BaseEntity> getBaseEntities() {
-        return (List<BaseEntity>)readProperty(BASE_ENTITIES_PROPERTY);
+        return (List<BaseEntity>)readProperty("baseEntities");
     }
 
 
     public void addToSubEntities(SubEntity obj) {
-        addToManyTarget(SUB_ENTITIES_PROPERTY, obj, true);
+        addToManyTarget("subEntities", obj, true);
     }
     public void removeFromSubEntities(SubEntity obj) {
-        removeToManyTarget(SUB_ENTITIES_PROPERTY, obj, true);
+        removeToManyTarget("subEntities", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<SubEntity> getSubEntities() {
-        return (List<SubEntity>)readProperty(SUB_ENTITIES_PROPERTY);
+        return (List<SubEntity>)readProperty("subEntities");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_SubEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_SubEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_SubEntity.java
index 8ede368..29ec798 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_SubEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance/auto/_SubEntity.java
@@ -10,7 +10,9 @@ import org.apache.cayenne.testdo.inheritance.BaseEntity;
  */
 public abstract class _SubEntity extends BaseEntity {
 
+    private static final long serialVersionUID = 1L; 
 
     public static final String BASE_ENTITY_ID_PK_COLUMN = "BASE_ENTITY_ID";
 
+
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Group.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Group.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Group.java
index 68fc5d8..f2a4032 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Group.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Group.java
@@ -2,6 +2,7 @@ package org.apache.cayenne.testdo.inheritance_flat.auto;
 
 import java.util.List;
 
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_flat.GroupProperties;
 import org.apache.cayenne.testdo.inheritance_flat.Role;
 import org.apache.cayenne.testdo.inheritance_flat.User;
@@ -14,29 +15,31 @@ import org.apache.cayenne.testdo.inheritance_flat.User;
  */
 public abstract class _Group extends User {
 
-    public static final String GROUP_MEMBERS_PROPERTY = "groupMembers";
-    public static final String GROUP_PROPERTIES_PROPERTY = "groupProperties";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "id";
 
+    public static final Property<List<Role>> GROUP_MEMBERS = new Property<>("groupMembers");
+    public static final Property<GroupProperties> GROUP_PROPERTIES = new Property<>("groupProperties");
+
     public void addToGroupMembers(Role obj) {
-        addToManyTarget(GROUP_MEMBERS_PROPERTY, obj, true);
+        addToManyTarget("groupMembers", obj, true);
     }
     public void removeFromGroupMembers(Role obj) {
-        removeToManyTarget(GROUP_MEMBERS_PROPERTY, obj, true);
+        removeToManyTarget("groupMembers", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<Role> getGroupMembers() {
-        return (List<Role>)readProperty(GROUP_MEMBERS_PROPERTY);
+        return (List<Role>)readProperty("groupMembers");
     }
 
 
     public void setGroupProperties(GroupProperties groupProperties) {
-        setToOneTarget(GROUP_PROPERTIES_PROPERTY, groupProperties, true);
+        setToOneTarget("groupProperties", groupProperties, true);
     }
 
     public GroupProperties getGroupProperties() {
-        return (GroupProperties)readProperty(GROUP_PROPERTIES_PROPERTY);
+        return (GroupProperties)readProperty("groupProperties");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_GroupProperties.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_GroupProperties.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_GroupProperties.java
index 1a64a47..5f6c4d4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_GroupProperties.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_GroupProperties.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.inheritance_flat.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_flat.Group;
 
 /**
@@ -11,32 +12,34 @@ import org.apache.cayenne.testdo.inheritance_flat.Group;
  */
 public abstract class _GroupProperties extends CayenneDataObject {
 
-    public static final String DESCRIPTION_PROPERTY = "description";
-    public static final String ID_PROPERTY = "id";
-    public static final String GROUP_PROPERTY = "group";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "id";
 
+    public static final Property<String> DESCRIPTION = new Property<>("description");
+    public static final Property<Long> ID = new Property<>("id");
+    public static final Property<Group> GROUP = new Property<>("group");
+
     public void setDescription(String description) {
-        writeProperty(DESCRIPTION_PROPERTY, description);
+        writeProperty("description", description);
     }
     public String getDescription() {
-        return (String)readProperty(DESCRIPTION_PROPERTY);
+        return (String)readProperty("description");
     }
 
     public void setId(Long id) {
-        writeProperty(ID_PROPERTY, id);
+        writeProperty("id", id);
     }
     public Long getId() {
-        return (Long)readProperty(ID_PROPERTY);
+        return (Long)readProperty("id");
     }
 
     public void setGroup(Group group) {
-        setToOneTarget(GROUP_PROPERTY, group, true);
+        setToOneTarget("group", group, true);
     }
 
     public Group getGroup() {
-        return (Group)readProperty(GROUP_PROPERTY);
+        return (Group)readProperty("group");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Role.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Role.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Role.java
index 055615d..6b16b42 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Role.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_Role.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.inheritance_flat.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_flat.Group;
 
 /**
@@ -13,45 +14,47 @@ import org.apache.cayenne.testdo.inheritance_flat.Group;
  */
 public abstract class _Role extends CayenneDataObject {
 
-    public static final String ID_PROPERTY = "id";
-    public static final String NAME_PROPERTY = "name";
-    public static final String TYPE_PROPERTY = "type";
-    public static final String ROLE_GROUPS_PROPERTY = "roleGroups";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "id";
 
+    public static final Property<Long> ID = new Property<>("id");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<Integer> TYPE = new Property<>("type");
+    public static final Property<List<Group>> ROLE_GROUPS = new Property<>("roleGroups");
+
     public void setId(long id) {
-        writeProperty(ID_PROPERTY, id);
+        writeProperty("id", id);
     }
     public long getId() {
-        Object value = readProperty(ID_PROPERTY);
+        Object value = readProperty("id");
         return (value != null) ? (Long) value : 0;
     }
 
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setType(int type) {
-        writeProperty(TYPE_PROPERTY, type);
+        writeProperty("type", type);
     }
     public int getType() {
-        Object value = readProperty(TYPE_PROPERTY);
+        Object value = readProperty("type");
         return (value != null) ? (Integer) value : 0;
     }
 
     public void addToRoleGroups(Group obj) {
-        addToManyTarget(ROLE_GROUPS_PROPERTY, obj, true);
+        addToManyTarget("roleGroups", obj, true);
     }
     public void removeFromRoleGroups(Group obj) {
-        removeToManyTarget(ROLE_GROUPS_PROPERTY, obj, true);
+        removeToManyTarget("roleGroups", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<Group> getRoleGroups() {
-        return (List<Group>)readProperty(ROLE_GROUPS_PROPERTY);
+        return (List<Group>)readProperty("roleGroups");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_User.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_User.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_User.java
index 72494f2..769f40a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_User.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_User.java
@@ -1,5 +1,6 @@
 package org.apache.cayenne.testdo.inheritance_flat.auto;
 
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_flat.Role;
 import org.apache.cayenne.testdo.inheritance_flat.UserProperties;
 
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.inheritance_flat.UserProperties;
  */
 public abstract class _User extends Role {
 
-    public static final String USER_PROPERTIES_PROPERTY = "userProperties";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "id";
 
+    public static final Property<UserProperties> USER_PROPERTIES = new Property<>("userProperties");
+
     public void setUserProperties(UserProperties userProperties) {
-        setToOneTarget(USER_PROPERTIES_PROPERTY, userProperties, true);
+        setToOneTarget("userProperties", userProperties, true);
     }
 
     public UserProperties getUserProperties() {
-        return (UserProperties)readProperty(USER_PROPERTIES_PROPERTY);
+        return (UserProperties)readProperty("userProperties");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_UserProperties.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_UserProperties.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_UserProperties.java
index ecb7423..7a046a8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_UserProperties.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_flat/auto/_UserProperties.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.inheritance_flat.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_flat.User;
 
 /**
@@ -11,32 +12,34 @@ import org.apache.cayenne.testdo.inheritance_flat.User;
  */
 public abstract class _UserProperties extends CayenneDataObject {
 
-    public static final String ID_PROPERTY = "id";
-    public static final String NICKNAME_PROPERTY = "nickname";
-    public static final String USER_PROPERTY = "user";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "id";
 
+    public static final Property<Long> ID = new Property<>("id");
+    public static final Property<String> NICKNAME = new Property<>("nickname");
+    public static final Property<User> USER = new Property<>("user");
+
     public void setId(Long id) {
-        writeProperty(ID_PROPERTY, id);
+        writeProperty("id", id);
     }
     public Long getId() {
-        return (Long)readProperty(ID_PROPERTY);
+        return (Long)readProperty("id");
     }
 
     public void setNickname(String nickname) {
-        writeProperty(NICKNAME_PROPERTY, nickname);
+        writeProperty("nickname", nickname);
     }
     public String getNickname() {
-        return (String)readProperty(NICKNAME_PROPERTY);
+        return (String)readProperty("nickname");
     }
 
     public void setUser(User user) {
-        setToOneTarget(USER_PROPERTY, user, true);
+        setToOneTarget("user", user, true);
     }
 
     public User getUser() {
-        return (User)readProperty(USER_PROPERTY);
+        return (User)readProperty("user");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/IvSub3.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/IvSub3.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/IvSub3.java
index 13bf43d..8e3fb72 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/IvSub3.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/IvSub3.java
@@ -25,10 +25,7 @@ public class IvSub3 extends _IvSub3 {
 
     private static final long serialVersionUID = 1L;
 
-    @Override
-    protected void onPrePersist() {
-//        if(getIvRoot() == null) {
-//            throw new IllegalStateException("IvRoot must be set");
-//        }
+    public void setIvRoot(IvRoot ivRoot) {
+        setToOneTarget("ivRoot", ivRoot, true);
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Root.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Root.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Root.java
index d17dce6..51d7c2d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Root.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Root.java
@@ -15,8 +15,8 @@ public abstract class _Iv1Root extends CayenneDataObject {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> DISCRIMINATOR = new Property<String>("discriminator");
-    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<String> DISCRIMINATOR = new Property<>("discriminator");
+    public static final Property<String> NAME = new Property<>("name");
 
     public void setDiscriminator(String discriminator) {
         writeProperty("discriminator", discriminator);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Sub1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Sub1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Sub1.java
index 7990007..47e6d58 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Sub1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv1Sub1.java
@@ -15,7 +15,7 @@ public abstract class _Iv1Sub1 extends Iv1Root {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<String> NAME = new Property<>("name");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Root.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Root.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Root.java
index c118504..70d8ec6 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Root.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Root.java
@@ -15,7 +15,7 @@ public abstract class _Iv2Root extends CayenneDataObject {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> DISCRIMINATOR = new Property<String>("discriminator");
+    public static final Property<String> DISCRIMINATOR = new Property<>("discriminator");
 
     public void setDiscriminator(String discriminator) {
         writeProperty("discriminator", discriminator);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Sub1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Sub1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Sub1.java
index 0e2a642..b086375 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Sub1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_Iv2Sub1.java
@@ -16,7 +16,7 @@ public abstract class _Iv2Sub1 extends Iv2Root {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Iv2X> X = new Property<Iv2X>("x");
+    public static final Property<Iv2X> X = new Property<>("x");
 
     public void setX(Iv2X x) {
         setToOneTarget("x", x, true);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvAbstract.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvAbstract.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvAbstract.java
index b22d7f8..fc65225 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvAbstract.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvAbstract.java
@@ -15,7 +15,7 @@ public abstract class _IvAbstract extends CayenneDataObject {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> TYPE = new Property<String>("type");
+    public static final Property<String> TYPE = new Property<>("type");
 
     public void setType(String type) {
         writeProperty("type", type);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvBase.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvBase.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvBase.java
index a7325ff..30dd58d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvBase.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvBase.java
@@ -4,7 +4,7 @@ import org.apache.cayenne.CayenneDataObject;
 import org.apache.cayenne.exp.Property;
 
 /**
- * Class _IvAbstract was generated by Cayenne.
+ * Class _IvBase was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
  * since it may be overwritten next time code is regenerated.
  * If you need to make any customizations, please use subclass.
@@ -15,15 +15,8 @@ public abstract class _IvBase extends CayenneDataObject {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> TYPE = new Property<String>("type");
-    public static final Property<String> NAME = new Property<String>("name");
-
-    public void setType(String type) {
-        writeProperty("type", type);
-    }
-    public String getType() {
-        return (String)readProperty("type");
-    }
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<String> TYPE = new Property<>("type");
 
     public void setName(String name) {
         writeProperty("name", name);
@@ -32,4 +25,11 @@ public abstract class _IvBase extends CayenneDataObject {
         return (String)readProperty("name");
     }
 
+    public void setType(String type) {
+        writeProperty("type", type);
+    }
+    public String getType() {
+        return (String)readProperty("type");
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvConcrete.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvConcrete.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvConcrete.java
index 6cdc238..9d83a29 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvConcrete.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvConcrete.java
@@ -18,9 +18,9 @@ public abstract class _IvConcrete extends IvAbstract {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<List<IvConcrete>> CHILDREN = new Property<List<IvConcrete>>("children");
-    public static final Property<IvConcrete> PARENT = new Property<IvConcrete>("parent");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<IvConcrete>> CHILDREN = new Property<>("children");
+    public static final Property<IvConcrete> PARENT = new Property<>("parent");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvImpl.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvImpl.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvImpl.java
index 4e05db3..cd71ea5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvImpl.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvImpl.java
@@ -5,7 +5,7 @@ import org.apache.cayenne.testdo.inheritance_vertical.IvBase;
 import org.apache.cayenne.testdo.inheritance_vertical.IvOther;
 
 /**
- * Class _IvConcrete was generated by Cayenne.
+ * Class _IvImpl was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
  * since it may be overwritten next time code is regenerated.
  * If you need to make any customizations, please use subclass.
@@ -16,8 +16,8 @@ public abstract class _IvImpl extends IvBase {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> ATTR1 = new Property<String>("attr1");
-    public static final Property<IvOther> OTHER = new Property<IvOther>("other");
+    public static final Property<String> ATTR1 = new Property<>("attr1");
+    public static final Property<IvOther> OTHER = new Property<>("other");
 
     public void setAttr1(String attr1) {
         writeProperty("attr1", attr1);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvOther.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvOther.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvOther.java
index 52be2ea..e4ae2af 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvOther.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvOther.java
@@ -1,13 +1,13 @@
 package org.apache.cayenne.testdo.inheritance_vertical.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
 import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_vertical.IvImpl;
 
-import java.util.List;
-
 /**
- * Class _IvConcrete was generated by Cayenne.
+ * Class _IvOther was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
  * since it may be overwritten next time code is regenerated.
  * If you need to make any customizations, please use subclass.
@@ -18,8 +18,8 @@ public abstract class _IvOther extends CayenneDataObject {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<List<IvImpl>> IMPLS = new Property<List<IvImpl>>("impls");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<IvImpl>> IMPLS = new Property<>("impls");
 
     public void setName(String name) {
         writeProperty("name", name);
@@ -39,4 +39,5 @@ public abstract class _IvOther extends CayenneDataObject {
         return (List<IvImpl>)readProperty("impls");
     }
 
+
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvRoot.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvRoot.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvRoot.java
index 09b8ceb..814608a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvRoot.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvRoot.java
@@ -15,8 +15,8 @@ public abstract class _IvRoot extends CayenneDataObject {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> DISCRIMINATOR = new Property<String>("discriminator");
-    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<String> DISCRIMINATOR = new Property<>("discriminator");
+    public static final Property<String> NAME = new Property<>("name");
 
     public void setDiscriminator(String discriminator) {
         writeProperty("discriminator", discriminator);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1.java
index ff4410b..1aa12cd 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1.java
@@ -15,7 +15,7 @@ public abstract class _IvSub1 extends IvRoot {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> SUB1NAME = new Property<String>("sub1Name");
+    public static final Property<String> SUB1NAME = new Property<>("sub1Name");
 
     public void setSub1Name(String sub1Name) {
         writeProperty("sub1Name", sub1Name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1Sub1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1Sub1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1Sub1.java
index 21a8525..3dcda28 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1Sub1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub1Sub1.java
@@ -15,7 +15,7 @@ public abstract class _IvSub1Sub1 extends IvSub1 {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> SUB1SUB1NAME = new Property<String>("sub1Sub1Name");
+    public static final Property<String> SUB1SUB1NAME = new Property<>("sub1Sub1Name");
 
     public void setSub1Sub1Name(String sub1Sub1Name) {
         writeProperty("sub1Sub1Name", sub1Sub1Name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub2.java
index 88f8e32..a245879 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub2.java
@@ -15,8 +15,8 @@ public abstract class _IvSub2 extends IvRoot {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> SUB2ATTR = new Property<String>("sub2Attr");
-    public static final Property<String> SUB2NAME = new Property<String>("sub2Name");
+    public static final Property<String> SUB2ATTR = new Property<>("sub2Attr");
+    public static final Property<String> SUB2NAME = new Property<>("sub2Name");
 
     public void setSub2Attr(String sub2Attr) {
         writeProperty("sub2Attr", sub2Attr);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub3.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub3.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub3.java
index 16b4edf..1b66feb 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub3.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_vertical/auto/_IvSub3.java
@@ -15,16 +15,12 @@ public abstract class _IvSub3 extends IvRoot {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<IvRoot> IV_ROOT = new Property<IvRoot>("ivRoot");
+    public static final Property<IvRoot> IV_ROOT = new Property<>("ivRoot");
 
-    public void setIvRoot(IvRoot ivRoot) {
-        setToOneTarget("ivRoot", ivRoot, true);
-    }
 
     public IvRoot getIvRoot() {
         return (IvRoot)readProperty("ivRoot");
     }
 
-    protected abstract void onPrePersist();
 
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/auto/_Lifecycle.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/auto/_Lifecycle.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/auto/_Lifecycle.java
index 76958cd..1353bf4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/auto/_Lifecycle.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/auto/_Lifecycle.java
@@ -15,7 +15,7 @@ public abstract class _Lifecycle extends CayenneDataObject {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<String> NAME = new Property<>("name");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/resources/cayenne-enum.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/cayenne-enum.xml b/cayenne-server/src/test/resources/cayenne-enum.xml
index df69b89..17eda24 100644
--- a/cayenne-server/src/test/resources/cayenne-enum.xml
+++ b/cayenne-server/src/test/resources/cayenne-enum.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <domain project-version="9">
-    <map name="enum"/>
+	<map name="enum"/>
 </domain>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48a35028/cayenne-server/src/test/resources/enum.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/enum.map.xml b/cayenne-server/src/test/resources/enum.map.xml
index 9a1e9c9..e4a2807 100644
--- a/cayenne-server/src/test/resources/enum.map.xml
+++ b/cayenne-server/src/test/resources/enum.map.xml
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <data-map xmlns="http://cayenne.apache.org/schema/9/modelMap"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://cayenne.apache.org/schema/9/modelMap http://cayenne.apache.org/schema/9/modelMap.xsd"
-          project-version="9">
-    <property name="defaultPackage" value="org.apache.cayenne.testdo.enum"/>
-    <property name="defaultSuperclass" value="org.apache.cayenne.CayenneDataObject"/>
-    <property name="clientSupported" value="true"/>
-    <property name="defaultClientPackage" value="test.client"/>
-    <property name="defaultClientSuperclass" value="org.apache.cayenne.PersistentObject"/>
-    <db-entity name="ENUM_ENTITY">
-        <db-attribute name="ENUM_ATTRIBUTE" type="VARCHAR" length="250"/>
-        <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-    </db-entity>
-    <obj-entity name="EnumEntity" className="org.apache.cayenne.testdo.enum_test.EnumEntity" dbEntityName="ENUM_ENTITY">
-        <obj-attribute name="enumAttribute" type="org.apache.cayenne.testdo.enum_test.Enum1" db-attribute-path="ENUM_ATTRIBUTE"/>
-    </obj-entity>
+	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	 xsi:schemaLocation="http://cayenne.apache.org/schema/9/modelMap http://cayenne.apache.org/schema/9/modelMap.xsd"
+	 project-version="9">
+	<property name="defaultPackage" value="org.apache.cayenne.testdo.enum_test"/>
+	<property name="defaultSuperclass" value="org.apache.cayenne.CayenneDataObject"/>
+	<property name="clientSupported" value="true"/>
+	<property name="defaultClientPackage" value="test.client"/>
+	<property name="defaultClientSuperclass" value="org.apache.cayenne.PersistentObject"/>
+	<db-entity name="ENUM_ENTITY">
+		<db-attribute name="ENUM_ATTRIBUTE" type="VARCHAR" length="250"/>
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+	</db-entity>
+	<obj-entity name="EnumEntity" className="org.apache.cayenne.testdo.enum_test.EnumEntity" dbEntityName="ENUM_ENTITY">
+		<obj-attribute name="enumAttribute" type="org.apache.cayenne.testdo.enum_test.Enum1" db-attribute-path="ENUM_ATTRIBUTE"/>
+	</obj-entity>
 </data-map>


[07/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
CAY-2176 Java 7 diamond class generation templates

* regenerated unit tests with the new templates and no String properties
* cleaned up String property refs in unit tests
* removing server-side Persistent tests (objects that do not inherit from CayenneDataObject)


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

Branch: refs/heads/master
Commit: 5042973c1a640f07d0f591958d3ed496f24852d8
Parents: 9261634
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Dec 18 19:18:18 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Dec 18 20:54:34 2016 +0300

----------------------------------------------------------------------
 .../cayenne/CDOCollectionRelationshipIT.java    |   4 +-
 .../apache/cayenne/CDOSetRelationshipIT.java    |   2 +-
 .../CayenneDataObjectSetToManyCollectionIT.java |   4 +-
 .../CayenneDataObjectSetToManySetIT.java        |   4 +-
 .../apache/cayenne/access/DeleteRulesIT.java    |  10 +-
 .../cayenne/access/FlattenedArcKeyIT.java       |  10 +-
 .../cayenne/access/QuotedIdentifiersIT.java     |   2 +-
 .../testdo/qualified/auto/_Qualified1.java      |  23 +-
 .../testdo/qualified/auto/_Qualified2.java      |  21 +-
 .../testdo/quotemap/auto/_QuoteAdress.java      |   9 +-
 .../testdo/quotemap/auto/_Quote_Person.java     |  15 +-
 .../testdo/reflexive/auto/_Reflexive.java       |  27 +--
 .../relationships/auto/_FkOfDifferentType.java  |   9 +-
 .../relationships/auto/_MeaningfulFK.java       |  15 +-
 .../relationships/auto/_ReflexiveAndToOne.java  |  29 +--
 .../relationships/auto/_RelationshipHelper.java |  33 +--
 .../relationships_activity/auto/_Activity.java  |  13 +-
 .../auto/_ActivityResult.java                   |  13 +-
 .../relationships_child_master/auto/_Child.java |   9 +-
 .../auto/_Master.java                           |  17 +-
 .../relationships_clob/auto/_ClobDetail.java    |  15 +-
 .../relationships_clob/auto/_ClobMaster.java    |  27 +--
 .../auto/_CollectionToMany.java                 |  11 +-
 .../auto/_CollectionToManyTarget.java           |   9 +-
 .../auto/_DeleteRuleFlatA.java                  |  15 +-
 .../auto/_DeleteRuleFlatB.java                  |  15 +-
 .../auto/_DeleteRuleTest1.java                  |   9 +-
 .../auto/_DeleteRuleTest2.java                  |  23 +-
 .../auto/_DeleteRuleTest3.java                  |   9 +-
 .../auto/_FlattenedCircular.java                |  23 +-
 .../auto/_FlattenedTest1.java                   |  37 ++--
 .../auto/_FlattenedTest2.java                   |  27 +--
 .../auto/_FlattenedTest3.java                   |  31 +--
 .../auto/_FlattenedTest4.java                   |  15 +-
 .../auto/_SetToMany.java                        |  11 +-
 .../auto/_SetToManyTarget.java                  |   9 +-
 .../auto/_ToManyFkDep.java                      |  27 +--
 .../auto/_ToManyFkRoot.java                     |  23 +-
 .../auto/_ToManyRoot2.java                      |  17 +-
 .../relationships_to_one_fk/auto/_ToOneFK1.java |  11 +-
 .../relationships_to_one_fk/auto/_ToOneFK2.java |  11 +-
 .../org/apache/cayenne/unit/jira/CAY_115IT.java |   5 +-
 .../resources/cayenne-relationships-clob.xml    |   2 +-
 .../cayenne-relationships-flattened.xml         |   2 +-
 .../test/resources/relationships-clob.map.xml   |  58 +++---
 .../resources/relationships-flattened.map.xml   | 208 +++++++++----------
 46 files changed, 502 insertions(+), 417 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
index 5992f4c..ff69a64 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
@@ -95,8 +95,8 @@ public class CDOCollectionRelationshipIT extends ServerCase {
     public void testReadToManyPrefetching() throws Exception {
 
         SelectQuery query = new SelectQuery(CollectionToMany.class, ExpressionFactory
-                .matchDbExp(CollectionToMany.ID_PK_COLUMN, new Integer(1)));
-        query.addPrefetch(CollectionToMany.TARGETS_PROPERTY);
+                .matchDbExp(CollectionToMany.ID_PK_COLUMN, 1));
+        query.addPrefetch(CollectionToMany.TARGETS.disjoint());
         CollectionToMany o1 = (CollectionToMany) Cayenne.objectForQuery(context, query);
 
         Collection<?> targets = o1.getTargets();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
index 7c33bc8..8d9f411 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
@@ -104,7 +104,7 @@ public class CDOSetRelationshipIT extends ServerCase {
 
         SelectQuery query = new SelectQuery(SetToMany.class, ExpressionFactory
                 .matchDbExp(SetToMany.ID_PK_COLUMN, new Integer(1)));
-        query.addPrefetch(SetToMany.TARGETS_PROPERTY);
+        query.addPrefetch(SetToMany.TARGETS.disjoint());
         SetToMany o1 = (SetToMany) Cayenne.objectForQuery(context, query);
 
         Set targets = o1.getTargets();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionIT.java
index edbbc9b..ccb4a4c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionIT.java
@@ -85,10 +85,10 @@ public class CayenneDataObjectSetToManyCollectionIT extends ServerCase {
 	@Test
 	public void testRelationCollectionTypeCollection() throws Exception {
 		CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1);
-		assertTrue(o1.readProperty(CollectionToMany.TARGETS_PROPERTY) instanceof Collection);
+		assertTrue(o1.readProperty(CollectionToMany.TARGETS.getName()) instanceof Collection);
 		boolean catchedSomething = false;
 		try {
-			o1.setToManyTarget(CollectionToMany.TARGETS_PROPERTY, new ArrayList<CollectionToMany>(0), true);
+			o1.setToManyTarget(CollectionToMany.TARGETS.getName(), new ArrayList<CollectionToMany>(0), true);
 		} catch (RuntimeException e) {
 			catchedSomething = true;
 		}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetIT.java
index 8fcf23b..b3ec782 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetIT.java
@@ -77,10 +77,10 @@ public class CayenneDataObjectSetToManySetIT extends ServerCase {
 		createTestDataSet();
 
 		SetToMany o1 = Cayenne.objectForPK(context, SetToMany.class, 1);
-		assertTrue(o1.readProperty(SetToMany.TARGETS_PROPERTY) instanceof Set);
+		assertTrue(o1.readProperty(SetToMany.TARGETS.getName()) instanceof Set);
 		boolean catchedSomething = false;
 		try {
-			o1.setToManyTarget(SetToMany.TARGETS_PROPERTY, new ArrayList<MapToMany>(0), true);
+			o1.setToManyTarget(SetToMany.TARGETS.getName(), new ArrayList<MapToMany>(0), true);
 		} catch (RuntimeException e) {
 			catchedSomething = true;
 		}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
index 4c1aece..430c28d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
@@ -303,7 +303,7 @@ public class DeleteRulesIT extends ServerCase {
     private int changeDeleteRule(int deleteRule) {
         ObjEntity entity = context.getEntityResolver().getObjEntity(DeleteRuleFlatA.class);
 
-        ObjRelationship relationship = entity.getRelationship(DeleteRuleFlatA.FLAT_B_PROPERTY);
+        ObjRelationship relationship = entity.getRelationship(DeleteRuleFlatA.FLAT_B.getName());
         int oldRule = relationship.getDeleteRule();
         relationship.setDeleteRule(deleteRule);
         return oldRule;
@@ -312,7 +312,7 @@ public class DeleteRulesIT extends ServerCase {
     private ObjRelationship unsetReverse() {
         ObjEntity entity = context.getEntityResolver().getObjEntity(DeleteRuleFlatA.class);
 
-        ObjRelationship relationship = entity.getRelationship(DeleteRuleFlatA.FLAT_B_PROPERTY);
+        ObjRelationship relationship = entity.getRelationship(DeleteRuleFlatA.FLAT_B.getName());
         ObjRelationship reverse = relationship.getReverseRelationship();
 
         if (reverse != null) {
@@ -327,7 +327,7 @@ public class DeleteRulesIT extends ServerCase {
     private void restoreReverse(ObjRelationship reverse) {
         ObjEntity entity = context.getEntityResolver().getObjEntity(DeleteRuleFlatA.class);
 
-        ObjRelationship relationship = entity.getRelationship(DeleteRuleFlatA.FLAT_B_PROPERTY);
+        ObjRelationship relationship = entity.getRelationship(DeleteRuleFlatA.FLAT_B.getName());
         relationship.getTargetEntity().addRelationship(reverse);
         context.getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatA");
         context.getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatB");
@@ -347,7 +347,7 @@ public class DeleteRulesIT extends ServerCase {
                 ArcOperation arcDelete = (ArcOperation) diff;
                 if (arcDelete.getNodeId().equals(a.getObjectId())
                         && arcDelete.getTargetNodeId().equals(b.getObjectId())
-                        && arcDelete.getArcId().equals(DeleteRuleFlatA.FLAT_B_PROPERTY) && arcDelete.isDelete()) {
+                        && arcDelete.getArcId().equals(DeleteRuleFlatA.FLAT_B.getName()) && arcDelete.isDelete()) {
                     return;
                 }
             }
@@ -369,7 +369,7 @@ public class DeleteRulesIT extends ServerCase {
                     ArcOperation arcDelete = (ArcOperation) diff;
                     if (arcDelete.getNodeId().equals(a.getObjectId())
                             && arcDelete.getTargetNodeId().equals(b.getObjectId())
-                            && arcDelete.getArcId().equals(DeleteRuleFlatA.FLAT_B_PROPERTY) && !arcDelete.isDelete()) {
+                            && arcDelete.getArcId().equals(DeleteRuleFlatA.FLAT_B.getName()) && !arcDelete.isDelete()) {
                         fail("Join was  deleted for flattened relationship");
                     }
                 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedArcKeyIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedArcKeyIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedArcKeyIT.java
index 7e3bd7f..6afa006 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedArcKeyIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedArcKeyIT.java
@@ -45,7 +45,7 @@ public class FlattenedArcKeyIT extends ServerCase {
         ObjectId src = new ObjectId("X");
         ObjectId target = new ObjectId("Y");
         ObjRelationship r1 = entityResolver.getObjEntity(FlattenedTest3.class).getRelationship(
-                FlattenedTest3.TO_FT1_PROPERTY);
+                FlattenedTest3.TO_FT1.getName());
 
         FlattenedArcKey update = new FlattenedArcKey(src, target, r1);
 
@@ -59,13 +59,13 @@ public class FlattenedArcKeyIT extends ServerCase {
         ObjectId src = new ObjectId("X");
         ObjectId target = new ObjectId("Y");
         ObjRelationship r1 = entityResolver.getObjEntity(FlattenedTest3.class).getRelationship(
-                FlattenedTest3.TO_FT1_PROPERTY);
+                FlattenedTest3.TO_FT1.getName());
 
         FlattenedArcKey update = new FlattenedArcKey(src, target, r1);
         FlattenedArcKey update1 = new FlattenedArcKey(target, src, r1.getReverseRelationship());
 
         ObjRelationship r3 = entityResolver.getObjEntity(FlattenedTest1.class).getRelationship(
-                FlattenedTest1.FT3OVER_COMPLEX_PROPERTY);
+                FlattenedTest1.FT3OVER_COMPLEX.getName());
 
         FlattenedArcKey update2 = new FlattenedArcKey(target, src, r3);
 
@@ -82,13 +82,13 @@ public class FlattenedArcKeyIT extends ServerCase {
         ObjectId src = new ObjectId("X");
         ObjectId target = new ObjectId("Y");
         ObjRelationship r1 = entityResolver.getObjEntity(FlattenedTest3.class).getRelationship(
-                FlattenedTest3.TO_FT1_PROPERTY);
+                FlattenedTest3.TO_FT1.getName());
 
         FlattenedArcKey update = new FlattenedArcKey(src, target, r1);
         FlattenedArcKey update1 = new FlattenedArcKey(target, src, r1.getReverseRelationship());
 
         ObjRelationship r3 = entityResolver.getObjEntity(FlattenedTest1.class).getRelationship(
-                FlattenedTest1.FT3OVER_COMPLEX_PROPERTY);
+                FlattenedTest1.FT3OVER_COMPLEX.getName());
 
         FlattenedArcKey update2 = new FlattenedArcKey(target, src, r3);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
index 2f46cfe..5ab8a96 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
@@ -112,7 +112,7 @@ public class QuotedIdentifiersIT extends ServerCase {
         List objects7 = context.performQuery(quoteAdress1);
         assertEquals(1, objects7.size());
 
-        ObjectIdQuery queryObjectId = new ObjectIdQuery(new ObjectId("QuoteAdress", QuoteAdress.GROUP_PROPERTY, "324"));
+        ObjectIdQuery queryObjectId = new ObjectIdQuery(new ObjectId("QuoteAdress", QuoteAdress.GROUP.getName(), "324"));
 
         List objects8 = context.performQuery(queryObjectId);
         assertEquals(1, objects8.size());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified1.java
index f09fcf9..3e92446 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified1.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.qualified.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.qualified.Qualified2;
 
 /**
@@ -13,35 +14,37 @@ import org.apache.cayenne.testdo.qualified.Qualified2;
  */
 public abstract class _Qualified1 extends CayenneDataObject {
 
-    public static final String DELETED_PROPERTY = "deleted";
-    public static final String NAME_PROPERTY = "name";
-    public static final String QUALIFIED2S_PROPERTY = "qualified2s";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Boolean> DELETED = new Property<>("deleted");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<Qualified2>> QUALIFIED2S = new Property<>("qualified2s");
+
     public void setDeleted(Boolean deleted) {
-        writeProperty(DELETED_PROPERTY, deleted);
+        writeProperty("deleted", deleted);
     }
     public Boolean getDeleted() {
-        return (Boolean)readProperty(DELETED_PROPERTY);
+        return (Boolean)readProperty("deleted");
     }
 
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToQualified2s(Qualified2 obj) {
-        addToManyTarget(QUALIFIED2S_PROPERTY, obj, true);
+        addToManyTarget("qualified2s", obj, true);
     }
     public void removeFromQualified2s(Qualified2 obj) {
-        removeToManyTarget(QUALIFIED2S_PROPERTY, obj, true);
+        removeToManyTarget("qualified2s", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<Qualified2> getQualified2s() {
-        return (List<Qualified2>)readProperty(QUALIFIED2S_PROPERTY);
+        return (List<Qualified2>)readProperty("qualified2s");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified2.java
index af30577..2676435 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/qualified/auto/_Qualified2.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.qualified.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.qualified.Qualified1;
 
 /**
@@ -11,32 +12,34 @@ import org.apache.cayenne.testdo.qualified.Qualified1;
  */
 public abstract class _Qualified2 extends CayenneDataObject {
 
-    public static final String DELETED_PROPERTY = "deleted";
-    public static final String NAME_PROPERTY = "name";
-    public static final String QUALIFIED1_PROPERTY = "qualified1";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Boolean> DELETED = new Property<>("deleted");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<Qualified1> QUALIFIED1 = new Property<>("qualified1");
+
     public void setDeleted(Boolean deleted) {
-        writeProperty(DELETED_PROPERTY, deleted);
+        writeProperty("deleted", deleted);
     }
     public Boolean getDeleted() {
-        return (Boolean)readProperty(DELETED_PROPERTY);
+        return (Boolean)readProperty("deleted");
     }
 
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setQualified1(Qualified1 qualified1) {
-        setToOneTarget(QUALIFIED1_PROPERTY, qualified1, true);
+        setToOneTarget("qualified1", qualified1, true);
     }
 
     public Qualified1 getQualified1() {
-        return (Qualified1)readProperty(QUALIFIED1_PROPERTY);
+        return (Qualified1)readProperty("qualified1");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_QuoteAdress.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_QuoteAdress.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_QuoteAdress.java
index 6bcf34f..5e37233 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_QuoteAdress.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_QuoteAdress.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.quotemap.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.quotemap.Quote_Person;
 
 /**
@@ -11,12 +12,14 @@ import org.apache.cayenne.testdo.quotemap.Quote_Person;
  */
 public abstract class _QuoteAdress extends CayenneDataObject {
 
-    public static final String CITY_PROPERTY = "city";
-    public static final String GROUP_PROPERTY = "group";
-    public static final String PERSON_REL_PROPERTY = "person_Rel";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ADDRESS_ID_PK_COLUMN = "ADDRESS ID";
 
+    public static final Property<String> CITY = new Property<>("city");
+    public static final Property<String> GROUP = new Property<>("group");
+    public static final Property<Quote_Person> PERSON_REL = new Property<>("person_Rel");
+
     public void setCity(String city) {
         writeProperty("city", city);
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_Quote_Person.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_Quote_Person.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_Quote_Person.java
index b34b2d7..6585299 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_Quote_Person.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/quotemap/auto/_Quote_Person.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.quotemap.auto;
 import java.util.Date;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.quotemap.QuoteAdress;
 
 /**
@@ -13,15 +14,17 @@ import org.apache.cayenne.testdo.quotemap.QuoteAdress;
  */
 public abstract class _Quote_Person extends CayenneDataObject {
 
-    public static final String D_ATE_PROPERTY = "dAte";
-    public static final String F_ULL_NAME_PROPERTY = "fULL_name";
-    public static final String GROUP_PROPERTY = "group";
-    public static final String NAME_PROPERTY = "name";
-    public static final String SALARY_PROPERTY = "salary";
-    public static final String ADDRESS_REL_PROPERTY = "address_Rel";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "id";
 
+    public static final Property<Date> D_ATE = new Property<>("dAte");
+    public static final Property<String> F_ULL_NAME = new Property<>("fULL_name");
+    public static final Property<String> GROUP = new Property<>("group");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<Integer> SALARY = new Property<>("salary");
+    public static final Property<QuoteAdress> ADDRESS_REL = new Property<>("address_Rel");
+
     public void setDAte(Date dAte) {
         writeProperty("dAte", dAte);
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/reflexive/auto/_Reflexive.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/reflexive/auto/_Reflexive.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/reflexive/auto/_Reflexive.java
index e8d57b3..8a809bd 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/reflexive/auto/_Reflexive.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/reflexive/auto/_Reflexive.java
@@ -1,10 +1,11 @@
 package org.apache.cayenne.testdo.reflexive.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.reflexive.Reflexive;
 
-import java.util.List;
-
 /**
  * Class _Reflexive was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -13,37 +14,39 @@ import java.util.List;
  */
 public abstract class _Reflexive extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String CHILDREN_PROPERTY = "children";
-    public static final String TO_PARENT_PROPERTY = "toParent";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<Reflexive>> CHILDREN = new Property<>("children");
+    public static final Property<Reflexive> TO_PARENT = new Property<>("toParent");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToChildren(Reflexive obj) {
-        addToManyTarget(CHILDREN_PROPERTY, obj, true);
+        addToManyTarget("children", obj, true);
     }
     public void removeFromChildren(Reflexive obj) {
-        removeToManyTarget(CHILDREN_PROPERTY, obj, true);
+        removeToManyTarget("children", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<Reflexive> getChildren() {
-        return (List<Reflexive>)readProperty(CHILDREN_PROPERTY);
+        return (List<Reflexive>)readProperty("children");
     }
 
 
     public void setToParent(Reflexive toParent) {
-        setToOneTarget(TO_PARENT_PROPERTY, toParent, true);
+        setToOneTarget("toParent", toParent, true);
     }
 
     public Reflexive getToParent() {
-        return (Reflexive)readProperty(TO_PARENT_PROPERTY);
+        return (Reflexive)readProperty("toParent");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_FkOfDifferentType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_FkOfDifferentType.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_FkOfDifferentType.java
index 63b1138..11a4093 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_FkOfDifferentType.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_FkOfDifferentType.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships.RelationshipHelper;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.relationships.RelationshipHelper;
  */
 public abstract class _FkOfDifferentType extends CayenneDataObject {
 
-    public static final String RELATIONSHIP_HELPER_PROPERTY = "relationshipHelper";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<RelationshipHelper> RELATIONSHIP_HELPER = new Property<>("relationshipHelper");
+
     public void setRelationshipHelper(RelationshipHelper relationshipHelper) {
-        setToOneTarget(RELATIONSHIP_HELPER_PROPERTY, relationshipHelper, true);
+        setToOneTarget("relationshipHelper", relationshipHelper, true);
     }
 
     public RelationshipHelper getRelationshipHelper() {
-        return (RelationshipHelper)readProperty(RELATIONSHIP_HELPER_PROPERTY);
+        return (RelationshipHelper)readProperty("relationshipHelper");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_MeaningfulFK.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_MeaningfulFK.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_MeaningfulFK.java
index 65e855c..a628172 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_MeaningfulFK.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_MeaningfulFK.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships.RelationshipHelper;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.relationships.RelationshipHelper;
  */
 public abstract class _MeaningfulFK extends CayenneDataObject {
 
-    public static final String RELATIONSHIP_HELPER_ID_PROPERTY = "relationshipHelperID";
-    public static final String TO_RELATIONSHIP_HELPER_PROPERTY = "toRelationshipHelper";
+    private static final long serialVersionUID = 1L; 
 
     public static final String MEANIGNFUL_FK_ID_PK_COLUMN = "MEANIGNFUL_FK_ID";
 
+    public static final Property<Integer> RELATIONSHIP_HELPER_ID = new Property<>("relationshipHelperID");
+    public static final Property<RelationshipHelper> TO_RELATIONSHIP_HELPER = new Property<>("toRelationshipHelper");
+
     public void setRelationshipHelperID(Integer relationshipHelperID) {
-        writeProperty(RELATIONSHIP_HELPER_ID_PROPERTY, relationshipHelperID);
+        writeProperty("relationshipHelperID", relationshipHelperID);
     }
     public Integer getRelationshipHelperID() {
-        return (Integer)readProperty(RELATIONSHIP_HELPER_ID_PROPERTY);
+        return (Integer)readProperty("relationshipHelperID");
     }
 
     public void setToRelationshipHelper(RelationshipHelper toRelationshipHelper) {
-        setToOneTarget(TO_RELATIONSHIP_HELPER_PROPERTY, toRelationshipHelper, true);
+        setToOneTarget("toRelationshipHelper", toRelationshipHelper, true);
     }
 
     public RelationshipHelper getToRelationshipHelper() {
-        return (RelationshipHelper)readProperty(TO_RELATIONSHIP_HELPER_PROPERTY);
+        return (RelationshipHelper)readProperty("toRelationshipHelper");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_ReflexiveAndToOne.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_ReflexiveAndToOne.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_ReflexiveAndToOne.java
index 01f17c7..f556f18 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_ReflexiveAndToOne.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_ReflexiveAndToOne.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.relationships.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships.ReflexiveAndToOne;
 import org.apache.cayenne.testdo.relationships.RelationshipHelper;
 
@@ -14,47 +15,49 @@ import org.apache.cayenne.testdo.relationships.RelationshipHelper;
  */
 public abstract class _ReflexiveAndToOne extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String CHILDREN_PROPERTY = "children";
-    public static final String TO_HELPER_PROPERTY = "toHelper";
-    public static final String TO_PARENT_PROPERTY = "toParent";
+    private static final long serialVersionUID = 1L; 
 
     public static final String REFLEXIVE_AND_TO_ONE_ID_PK_COLUMN = "REFLEXIVE_AND_TO_ONE_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<ReflexiveAndToOne>> CHILDREN = new Property<>("children");
+    public static final Property<RelationshipHelper> TO_HELPER = new Property<>("toHelper");
+    public static final Property<ReflexiveAndToOne> TO_PARENT = new Property<>("toParent");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToChildren(ReflexiveAndToOne obj) {
-        addToManyTarget(CHILDREN_PROPERTY, obj, true);
+        addToManyTarget("children", obj, true);
     }
     public void removeFromChildren(ReflexiveAndToOne obj) {
-        removeToManyTarget(CHILDREN_PROPERTY, obj, true);
+        removeToManyTarget("children", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<ReflexiveAndToOne> getChildren() {
-        return (List<ReflexiveAndToOne>)readProperty(CHILDREN_PROPERTY);
+        return (List<ReflexiveAndToOne>)readProperty("children");
     }
 
 
     public void setToHelper(RelationshipHelper toHelper) {
-        setToOneTarget(TO_HELPER_PROPERTY, toHelper, true);
+        setToOneTarget("toHelper", toHelper, true);
     }
 
     public RelationshipHelper getToHelper() {
-        return (RelationshipHelper)readProperty(TO_HELPER_PROPERTY);
+        return (RelationshipHelper)readProperty("toHelper");
     }
 
 
     public void setToParent(ReflexiveAndToOne toParent) {
-        setToOneTarget(TO_PARENT_PROPERTY, toParent, true);
+        setToOneTarget("toParent", toParent, true);
     }
 
     public ReflexiveAndToOne getToParent() {
-        return (ReflexiveAndToOne)readProperty(TO_PARENT_PROPERTY);
+        return (ReflexiveAndToOne)readProperty("toParent");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_RelationshipHelper.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_RelationshipHelper.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_RelationshipHelper.java
index 9cdff59..1e4213e 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_RelationshipHelper.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_RelationshipHelper.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.relationships.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships.FkOfDifferentType;
 import org.apache.cayenne.testdo.relationships.MeaningfulFK;
 import org.apache.cayenne.testdo.relationships.ReflexiveAndToOne;
@@ -15,53 +16,55 @@ import org.apache.cayenne.testdo.relationships.ReflexiveAndToOne;
  */
 public abstract class _RelationshipHelper extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String FKS_OF_DIFFERENT_TYPE_PROPERTY = "fksOfDifferentType";
-    public static final String MEANIGFUL_FKS_PROPERTY = "meanigfulFKs";
-    public static final String REFLEXIVE_AND_TO_ONE_ARRAY_PROPERTY = "reflexiveAndToOneArray";
+    private static final long serialVersionUID = 1L; 
 
     public static final String RELATIONSHIP_HELPER_ID_PK_COLUMN = "RELATIONSHIP_HELPER_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<FkOfDifferentType>> FKS_OF_DIFFERENT_TYPE = new Property<>("fksOfDifferentType");
+    public static final Property<List<MeaningfulFK>> MEANIGFUL_FKS = new Property<>("meanigfulFKs");
+    public static final Property<List<ReflexiveAndToOne>> REFLEXIVE_AND_TO_ONE_ARRAY = new Property<>("reflexiveAndToOneArray");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToFksOfDifferentType(FkOfDifferentType obj) {
-        addToManyTarget(FKS_OF_DIFFERENT_TYPE_PROPERTY, obj, true);
+        addToManyTarget("fksOfDifferentType", obj, true);
     }
     public void removeFromFksOfDifferentType(FkOfDifferentType obj) {
-        removeToManyTarget(FKS_OF_DIFFERENT_TYPE_PROPERTY, obj, true);
+        removeToManyTarget("fksOfDifferentType", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<FkOfDifferentType> getFksOfDifferentType() {
-        return (List<FkOfDifferentType>)readProperty(FKS_OF_DIFFERENT_TYPE_PROPERTY);
+        return (List<FkOfDifferentType>)readProperty("fksOfDifferentType");
     }
 
 
     public void addToMeanigfulFKs(MeaningfulFK obj) {
-        addToManyTarget(MEANIGFUL_FKS_PROPERTY, obj, true);
+        addToManyTarget("meanigfulFKs", obj, true);
     }
     public void removeFromMeanigfulFKs(MeaningfulFK obj) {
-        removeToManyTarget(MEANIGFUL_FKS_PROPERTY, obj, true);
+        removeToManyTarget("meanigfulFKs", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<MeaningfulFK> getMeanigfulFKs() {
-        return (List<MeaningfulFK>)readProperty(MEANIGFUL_FKS_PROPERTY);
+        return (List<MeaningfulFK>)readProperty("meanigfulFKs");
     }
 
 
     public void addToReflexiveAndToOneArray(ReflexiveAndToOne obj) {
-        addToManyTarget(REFLEXIVE_AND_TO_ONE_ARRAY_PROPERTY, obj, true);
+        addToManyTarget("reflexiveAndToOneArray", obj, true);
     }
     public void removeFromReflexiveAndToOneArray(ReflexiveAndToOne obj) {
-        removeToManyTarget(REFLEXIVE_AND_TO_ONE_ARRAY_PROPERTY, obj, true);
+        removeToManyTarget("reflexiveAndToOneArray", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<ReflexiveAndToOne> getReflexiveAndToOneArray() {
-        return (List<ReflexiveAndToOne>)readProperty(REFLEXIVE_AND_TO_ONE_ARRAY_PROPERTY);
+        return (List<ReflexiveAndToOne>)readProperty("reflexiveAndToOneArray");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_Activity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_Activity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_Activity.java
index 2ab4c3c..f5c51c8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_Activity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_Activity.java
@@ -15,18 +15,13 @@ import org.apache.cayenne.testdo.relationships_activity.ActivityResult;
  */
 public abstract class _Activity extends CayenneDataObject {
 
-    @Deprecated
-    public static final String APPOINTMENT_DATE_PROPERTY = "appointmentDate";
-    @Deprecated
-    public static final String APPOINTMENT_NO_PROPERTY = "appointmentNo";
-    @Deprecated
-    public static final String RESULTS_PROPERTY = "results";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ACTIVITY_ID_PK_COLUMN = "ACTIVITY_ID";
 
-    public static final Property<Date> APPOINTMENT_DATE = new Property<Date>("appointmentDate");
-    public static final Property<Integer> APPOINTMENT_NO = new Property<Integer>("appointmentNo");
-    public static final Property<Map<String, ActivityResult>> RESULTS = new Property<Map<String, ActivityResult>>("results");
+    public static final Property<Date> APPOINTMENT_DATE = new Property<>("appointmentDate");
+    public static final Property<Integer> APPOINTMENT_NO = new Property<>("appointmentNo");
+    public static final Property<Map<String, ActivityResult>> RESULTS = new Property<>("results");
 
     public void setAppointmentDate(Date appointmentDate) {
         writeProperty("appointmentDate", appointmentDate);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_ActivityResult.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_ActivityResult.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_ActivityResult.java
index 6971f0e..794bf39 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_ActivityResult.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_activity/auto/_ActivityResult.java
@@ -13,20 +13,15 @@ import org.apache.cayenne.exp.Property;
  */
 public abstract class _ActivityResult extends CayenneDataObject {
 
-    @Deprecated
-    public static final String APPOINT_DATE_PROPERTY = "appointDate";
-    @Deprecated
-    public static final String APPOINT_NO_PROPERTY = "appointNo";
-    @Deprecated
-    public static final String FIELD_PROPERTY = "field";
+    private static final long serialVersionUID = 1L; 
 
     public static final String APPOINT_DATE_PK_COLUMN = "APPOINT_DATE";
     public static final String APPOINT_NO_PK_COLUMN = "APPOINT_NO";
     public static final String RESULTNAME_PK_COLUMN = "RESULTNAME";
 
-    public static final Property<Date> APPOINT_DATE = new Property<Date>("appointDate");
-    public static final Property<Integer> APPOINT_NO = new Property<Integer>("appointNo");
-    public static final Property<String> FIELD = new Property<String>("field");
+    public static final Property<Date> APPOINT_DATE = new Property<>("appointDate");
+    public static final Property<Integer> APPOINT_NO = new Property<>("appointNo");
+    public static final Property<String> FIELD = new Property<>("field");
 
     public void setAppointDate(Date appointDate) {
         writeProperty("appointDate", appointDate);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Child.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Child.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Child.java
index 4798c5b..afefdf4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Child.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Child.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_child_master.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_child_master.Master;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.relationships_child_master.Master;
  */
 public abstract class _Child extends CayenneDataObject {
 
-    public static final String MASTER_PROPERTY = "master";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Master> MASTER = new Property<>("master");
+
     public void setMaster(Master master) {
-        setToOneTarget(MASTER_PROPERTY, master, true);
+        setToOneTarget("master", master, true);
     }
 
     public Master getMaster() {
-        return (Master)readProperty(MASTER_PROPERTY);
+        return (Master)readProperty("master");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Master.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Master.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Master.java
index 3b9fde7..d09eabb 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Master.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_child_master/auto/_Master.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.relationships_child_master.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_child_master.Child;
 
 /**
@@ -13,27 +14,29 @@ import org.apache.cayenne.testdo.relationships_child_master.Child;
  */
 public abstract class _Master extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String CHILDREN_PROPERTY = "children";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<Child>> CHILDREN = new Property<>("children");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToChildren(Child obj) {
-        addToManyTarget(CHILDREN_PROPERTY, obj, true);
+        addToManyTarget("children", obj, true);
     }
     public void removeFromChildren(Child obj) {
-        removeToManyTarget(CHILDREN_PROPERTY, obj, true);
+        removeToManyTarget("children", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<Child> getChildren() {
-        return (List<Child>)readProperty(CHILDREN_PROPERTY);
+        return (List<Child>)readProperty("children");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobDetail.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobDetail.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobDetail.java
index 3d37f60..e044a13 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobDetail.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobDetail.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_clob.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_clob.ClobMaster;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.relationships_clob.ClobMaster;
  */
 public abstract class _ClobDetail extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String MASTER_PROPERTY = "master";
+    private static final long serialVersionUID = 1L; 
 
     public static final String CLOB_DETAIL_ID_PK_COLUMN = "CLOB_DETAIL_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<ClobMaster> MASTER = new Property<>("master");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setMaster(ClobMaster master) {
-        setToOneTarget(MASTER_PROPERTY, master, true);
+        setToOneTarget("master", master, true);
     }
 
     public ClobMaster getMaster() {
-        return (ClobMaster)readProperty(MASTER_PROPERTY);
+        return (ClobMaster)readProperty("master");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobMaster.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobMaster.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobMaster.java
index 76a077c..3593963 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobMaster.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_clob/auto/_ClobMaster.java
@@ -1,10 +1,11 @@
 package org.apache.cayenne.testdo.relationships_clob.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_clob.ClobDetail;
 
-import java.util.List;
-
 /**
  * Class _ClobMaster was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -13,35 +14,37 @@ import java.util.List;
  */
 public abstract class _ClobMaster extends CayenneDataObject {
 
-    public static final String CLOB_COLUMN_PROPERTY = "clobColumn";
-    public static final String NAME_PROPERTY = "name";
-    public static final String DETAILS_PROPERTY = "details";
+    private static final long serialVersionUID = 1L; 
 
     public static final String CLOB_MASTER_ID_PK_COLUMN = "CLOB_MASTER_ID";
 
+    public static final Property<String> CLOB_COLUMN = new Property<>("clobColumn");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<ClobDetail>> DETAILS = new Property<>("details");
+
     public void setClobColumn(String clobColumn) {
-        writeProperty(CLOB_COLUMN_PROPERTY, clobColumn);
+        writeProperty("clobColumn", clobColumn);
     }
     public String getClobColumn() {
-        return (String)readProperty(CLOB_COLUMN_PROPERTY);
+        return (String)readProperty("clobColumn");
     }
 
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToDetails(ClobDetail obj) {
-        addToManyTarget(DETAILS_PROPERTY, obj, true);
+        addToManyTarget("details", obj, true);
     }
     public void removeFromDetails(ClobDetail obj) {
-        removeToManyTarget(DETAILS_PROPERTY, obj, true);
+        removeToManyTarget("details", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<ClobDetail> getDetails() {
-        return (List<ClobDetail>)readProperty(DETAILS_PROPERTY);
+        return (List<ClobDetail>)readProperty("details");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToMany.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToMany.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToMany.java
index 2e10a01..02d8a75 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToMany.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToMany.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.relationships_collection_to_many.auto;
 import java.util.Collection;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToManyTarget;
 
 /**
@@ -13,19 +14,21 @@ import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToMa
  */
 public abstract class _CollectionToMany extends CayenneDataObject {
 
-    public static final String TARGETS_PROPERTY = "targets";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Collection<CollectionToManyTarget>> TARGETS = new Property<>("targets");
+
     public void addToTargets(CollectionToManyTarget obj) {
-        addToManyTarget(TARGETS_PROPERTY, obj, true);
+        addToManyTarget("targets", obj, true);
     }
     public void removeFromTargets(CollectionToManyTarget obj) {
-        removeToManyTarget(TARGETS_PROPERTY, obj, true);
+        removeToManyTarget("targets", obj, true);
     }
     @SuppressWarnings("unchecked")
     public Collection<CollectionToManyTarget> getTargets() {
-        return (Collection<CollectionToManyTarget>)readProperty(TARGETS_PROPERTY);
+        return (Collection<CollectionToManyTarget>)readProperty("targets");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToManyTarget.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToManyTarget.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToManyTarget.java
index be533ef..21d0932 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToManyTarget.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_collection_to_many/auto/_CollectionToManyTarget.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_collection_to_many.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToMany;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToMa
  */
 public abstract class _CollectionToManyTarget extends CayenneDataObject {
 
-    public static final String COLLECTION_TO_MANY_PROPERTY = "collectionToMany";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<CollectionToMany> COLLECTION_TO_MANY = new Property<>("collectionToMany");
+
     public void setCollectionToMany(CollectionToMany collectionToMany) {
-        setToOneTarget(COLLECTION_TO_MANY_PROPERTY, collectionToMany, true);
+        setToOneTarget("collectionToMany", collectionToMany, true);
     }
 
     public CollectionToMany getCollectionToMany() {
-        return (CollectionToMany)readProperty(COLLECTION_TO_MANY_PROPERTY);
+        return (CollectionToMany)readProperty("collectionToMany");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatA.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatA.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatA.java
index 2c9ff1a..6bfe499 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatA.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatA.java
@@ -1,10 +1,11 @@
 package org.apache.cayenne.testdo.relationships_delete_rules.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatB;
 
-import java.util.List;
-
 /**
  * Class _DeleteRuleFlatA was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -13,19 +14,21 @@ import java.util.List;
  */
 public abstract class _DeleteRuleFlatA extends CayenneDataObject {
 
-    public static final String FLAT_B_PROPERTY = "flatB";
+    private static final long serialVersionUID = 1L; 
 
     public static final String FLATA_ID_PK_COLUMN = "FLATA_ID";
 
+    public static final Property<List<DeleteRuleFlatB>> FLAT_B = new Property<>("flatB");
+
     public void addToFlatB(DeleteRuleFlatB obj) {
-        addToManyTarget(FLAT_B_PROPERTY, obj, true);
+        addToManyTarget("flatB", obj, true);
     }
     public void removeFromFlatB(DeleteRuleFlatB obj) {
-        removeToManyTarget(FLAT_B_PROPERTY, obj, true);
+        removeToManyTarget("flatB", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<DeleteRuleFlatB> getFlatB() {
-        return (List<DeleteRuleFlatB>)readProperty(FLAT_B_PROPERTY);
+        return (List<DeleteRuleFlatB>)readProperty("flatB");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatB.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatB.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatB.java
index 07de891..da06854 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatB.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleFlatB.java
@@ -1,10 +1,11 @@
 package org.apache.cayenne.testdo.relationships_delete_rules.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatA;
 
-import java.util.List;
-
 /**
  * Class _DeleteRuleFlatB was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -13,19 +14,21 @@ import java.util.List;
  */
 public abstract class _DeleteRuleFlatB extends CayenneDataObject {
 
-    public static final String UNTITLED_REL_PROPERTY = "untitledRel";
+    private static final long serialVersionUID = 1L; 
 
     public static final String FLATB_ID_PK_COLUMN = "FLATB_ID";
 
+    public static final Property<List<DeleteRuleFlatA>> UNTITLED_REL = new Property<>("untitledRel");
+
     public void addToUntitledRel(DeleteRuleFlatA obj) {
-        addToManyTarget(UNTITLED_REL_PROPERTY, obj, true);
+        addToManyTarget("untitledRel", obj, true);
     }
     public void removeFromUntitledRel(DeleteRuleFlatA obj) {
-        removeToManyTarget(UNTITLED_REL_PROPERTY, obj, true);
+        removeToManyTarget("untitledRel", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<DeleteRuleFlatA> getUntitledRel() {
-        return (List<DeleteRuleFlatA>)readProperty(UNTITLED_REL_PROPERTY);
+        return (List<DeleteRuleFlatA>)readProperty("untitledRel");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest1.java
index 6cef752..74234aa 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest1.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_delete_rules.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleTest2;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleTest2;
  */
 public abstract class _DeleteRuleTest1 extends CayenneDataObject {
 
-    public static final String TEST2_PROPERTY = "test2";
+    private static final long serialVersionUID = 1L; 
 
     public static final String DEL_RULE_TEST1_ID_PK_COLUMN = "DEL_RULE_TEST1_ID";
 
+    public static final Property<DeleteRuleTest2> TEST2 = new Property<>("test2");
+
     public void setTest2(DeleteRuleTest2 test2) {
-        setToOneTarget(TEST2_PROPERTY, test2, true);
+        setToOneTarget("test2", test2, true);
     }
 
     public DeleteRuleTest2 getTest2() {
-        return (DeleteRuleTest2)readProperty(TEST2_PROPERTY);
+        return (DeleteRuleTest2)readProperty("test2");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest2.java
index 098b0b2..733b2a8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest2.java
@@ -1,11 +1,12 @@
 package org.apache.cayenne.testdo.relationships_delete_rules.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleTest1;
 import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleTest3;
 
-import java.util.List;
-
 /**
  * Class _DeleteRuleTest2 was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -14,32 +15,34 @@ import java.util.List;
  */
 public abstract class _DeleteRuleTest2 extends CayenneDataObject {
 
-    public static final String DELETE_RULE_TEST3ARRAY_PROPERTY = "deleteRuleTest3Array";
-    public static final String TEST1ARRAY_PROPERTY = "test1Array";
+    private static final long serialVersionUID = 1L; 
 
     public static final String DEL_RULE_TEST2_ID_PK_COLUMN = "DEL_RULE_TEST2_ID";
 
+    public static final Property<List<DeleteRuleTest3>> DELETE_RULE_TEST3ARRAY = new Property<>("deleteRuleTest3Array");
+    public static final Property<List<DeleteRuleTest1>> TEST1ARRAY = new Property<>("test1Array");
+
     public void addToDeleteRuleTest3Array(DeleteRuleTest3 obj) {
-        addToManyTarget(DELETE_RULE_TEST3ARRAY_PROPERTY, obj, true);
+        addToManyTarget("deleteRuleTest3Array", obj, true);
     }
     public void removeFromDeleteRuleTest3Array(DeleteRuleTest3 obj) {
-        removeToManyTarget(DELETE_RULE_TEST3ARRAY_PROPERTY, obj, true);
+        removeToManyTarget("deleteRuleTest3Array", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<DeleteRuleTest3> getDeleteRuleTest3Array() {
-        return (List<DeleteRuleTest3>)readProperty(DELETE_RULE_TEST3ARRAY_PROPERTY);
+        return (List<DeleteRuleTest3>)readProperty("deleteRuleTest3Array");
     }
 
 
     public void addToTest1Array(DeleteRuleTest1 obj) {
-        addToManyTarget(TEST1ARRAY_PROPERTY, obj, true);
+        addToManyTarget("test1Array", obj, true);
     }
     public void removeFromTest1Array(DeleteRuleTest1 obj) {
-        removeToManyTarget(TEST1ARRAY_PROPERTY, obj, true);
+        removeToManyTarget("test1Array", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<DeleteRuleTest1> getTest1Array() {
-        return (List<DeleteRuleTest1>)readProperty(TEST1ARRAY_PROPERTY);
+        return (List<DeleteRuleTest1>)readProperty("test1Array");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest3.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest3.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest3.java
index cdff598..bc27d9f 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest3.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_delete_rules/auto/_DeleteRuleTest3.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_delete_rules.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleTest2;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleTest2;
  */
 public abstract class _DeleteRuleTest3 extends CayenneDataObject {
 
-    public static final String TO_DELETE_RULE_TEST2_PROPERTY = "toDeleteRuleTest2";
+    private static final long serialVersionUID = 1L; 
 
     public static final String DELETE_RULE_TEST_3_ID_PK_COLUMN = "DELETE_RULE_TEST_3_ID";
 
+    public static final Property<DeleteRuleTest2> TO_DELETE_RULE_TEST2 = new Property<>("toDeleteRuleTest2");
+
     public void setToDeleteRuleTest2(DeleteRuleTest2 toDeleteRuleTest2) {
-        setToOneTarget(TO_DELETE_RULE_TEST2_PROPERTY, toDeleteRuleTest2, true);
+        setToOneTarget("toDeleteRuleTest2", toDeleteRuleTest2, true);
     }
 
     public DeleteRuleTest2 getToDeleteRuleTest2() {
-        return (DeleteRuleTest2)readProperty(TO_DELETE_RULE_TEST2_PROPERTY);
+        return (DeleteRuleTest2)readProperty("toDeleteRuleTest2");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedCircular.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedCircular.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedCircular.java
index 7f41da2..45b95c2 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedCircular.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedCircular.java
@@ -1,10 +1,11 @@
 package org.apache.cayenne.testdo.relationships_flattened.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedCircular;
 
-import java.util.List;
-
 /**
  * Class _FlattenedCircular was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -13,32 +14,34 @@ import java.util.List;
  */
 public abstract class _FlattenedCircular extends CayenneDataObject {
 
-    public static final String SIDE1S_PROPERTY = "side1s";
-    public static final String SIDE2S_PROPERTY = "side2s";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<List<FlattenedCircular>> SIDE1S = new Property<>("side1s");
+    public static final Property<List<FlattenedCircular>> SIDE2S = new Property<>("side2s");
+
     public void addToSide1s(FlattenedCircular obj) {
-        addToManyTarget(SIDE1S_PROPERTY, obj, true);
+        addToManyTarget("side1s", obj, true);
     }
     public void removeFromSide1s(FlattenedCircular obj) {
-        removeToManyTarget(SIDE1S_PROPERTY, obj, true);
+        removeToManyTarget("side1s", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<FlattenedCircular> getSide1s() {
-        return (List<FlattenedCircular>)readProperty(SIDE1S_PROPERTY);
+        return (List<FlattenedCircular>)readProperty("side1s");
     }
 
 
     public void addToSide2s(FlattenedCircular obj) {
-        addToManyTarget(SIDE2S_PROPERTY, obj, true);
+        addToManyTarget("side2s", obj, true);
     }
     public void removeFromSide2s(FlattenedCircular obj) {
-        removeToManyTarget(SIDE2S_PROPERTY, obj, true);
+        removeToManyTarget("side2s", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<FlattenedCircular> getSide2s() {
-        return (List<FlattenedCircular>)readProperty(SIDE2S_PROPERTY);
+        return (List<FlattenedCircular>)readProperty("side2s");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest1.java
index 4e7ea7a..828d273 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest1.java
@@ -1,12 +1,13 @@
 package org.apache.cayenne.testdo.relationships_flattened.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest2;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest3;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest4;
 
-import java.util.List;
-
 /**
  * Class _FlattenedTest1 was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -15,54 +16,56 @@ import java.util.List;
  */
 public abstract class _FlattenedTest1 extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String FT2ARRAY_PROPERTY = "ft2Array";
-    public static final String FT3ARRAY_PROPERTY = "ft3Array";
-    public static final String FT3OVER_COMPLEX_PROPERTY = "ft3OverComplex";
-    public static final String FT4ARRAY_FOR1_PROPERTY = "ft4ArrayFor1";
+    private static final long serialVersionUID = 1L; 
 
     public static final String FT1_ID_PK_COLUMN = "FT1_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<FlattenedTest2>> FT2ARRAY = new Property<>("ft2Array");
+    public static final Property<List<FlattenedTest3>> FT3ARRAY = new Property<>("ft3Array");
+    public static final Property<List<FlattenedTest3>> FT3OVER_COMPLEX = new Property<>("ft3OverComplex");
+    public static final Property<List<FlattenedTest4>> FT4ARRAY_FOR1 = new Property<>("ft4ArrayFor1");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToFt2Array(FlattenedTest2 obj) {
-        addToManyTarget(FT2ARRAY_PROPERTY, obj, true);
+        addToManyTarget("ft2Array", obj, true);
     }
     public void removeFromFt2Array(FlattenedTest2 obj) {
-        removeToManyTarget(FT2ARRAY_PROPERTY, obj, true);
+        removeToManyTarget("ft2Array", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<FlattenedTest2> getFt2Array() {
-        return (List<FlattenedTest2>)readProperty(FT2ARRAY_PROPERTY);
+        return (List<FlattenedTest2>)readProperty("ft2Array");
     }
 
 
     @SuppressWarnings("unchecked")
     public List<FlattenedTest3> getFt3Array() {
-        return (List<FlattenedTest3>)readProperty(FT3ARRAY_PROPERTY);
+        return (List<FlattenedTest3>)readProperty("ft3Array");
     }
 
 
     public void addToFt3OverComplex(FlattenedTest3 obj) {
-        addToManyTarget(FT3OVER_COMPLEX_PROPERTY, obj, true);
+        addToManyTarget("ft3OverComplex", obj, true);
     }
     public void removeFromFt3OverComplex(FlattenedTest3 obj) {
-        removeToManyTarget(FT3OVER_COMPLEX_PROPERTY, obj, true);
+        removeToManyTarget("ft3OverComplex", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<FlattenedTest3> getFt3OverComplex() {
-        return (List<FlattenedTest3>)readProperty(FT3OVER_COMPLEX_PROPERTY);
+        return (List<FlattenedTest3>)readProperty("ft3OverComplex");
     }
 
 
     @SuppressWarnings("unchecked")
     public List<FlattenedTest4> getFt4ArrayFor1() {
-        return (List<FlattenedTest4>)readProperty(FT4ARRAY_FOR1_PROPERTY);
+        return (List<FlattenedTest4>)readProperty("ft4ArrayFor1");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest2.java
index cd2edd5..57ada63 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest2.java
@@ -1,11 +1,12 @@
 package org.apache.cayenne.testdo.relationships_flattened.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest1;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest3;
 
-import java.util.List;
-
 /**
  * Class _FlattenedTest2 was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -14,37 +15,39 @@ import java.util.List;
  */
 public abstract class _FlattenedTest2 extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String FT3ARRAY_PROPERTY = "ft3Array";
-    public static final String TO_FT1_PROPERTY = "toFT1";
+    private static final long serialVersionUID = 1L; 
 
     public static final String FT2_ID_PK_COLUMN = "FT2_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<FlattenedTest3>> FT3ARRAY = new Property<>("ft3Array");
+    public static final Property<FlattenedTest1> TO_FT1 = new Property<>("toFT1");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToFt3Array(FlattenedTest3 obj) {
-        addToManyTarget(FT3ARRAY_PROPERTY, obj, true);
+        addToManyTarget("ft3Array", obj, true);
     }
     public void removeFromFt3Array(FlattenedTest3 obj) {
-        removeToManyTarget(FT3ARRAY_PROPERTY, obj, true);
+        removeToManyTarget("ft3Array", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<FlattenedTest3> getFt3Array() {
-        return (List<FlattenedTest3>)readProperty(FT3ARRAY_PROPERTY);
+        return (List<FlattenedTest3>)readProperty("ft3Array");
     }
 
 
     public void setToFT1(FlattenedTest1 toFT1) {
-        setToOneTarget(TO_FT1_PROPERTY, toFT1, true);
+        setToOneTarget("toFT1", toFT1, true);
     }
 
     public FlattenedTest1 getToFT1() {
-        return (FlattenedTest1)readProperty(TO_FT1_PROPERTY);
+        return (FlattenedTest1)readProperty("toFT1");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest3.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest3.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest3.java
index f84c88f..ee14763 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest3.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest3.java
@@ -1,12 +1,13 @@
 package org.apache.cayenne.testdo.relationships_flattened.auto;
 
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest1;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest2;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest4;
 
-import java.util.List;
-
 /**
  * Class _FlattenedTest3 was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -15,44 +16,46 @@ import java.util.List;
  */
 public abstract class _FlattenedTest3 extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String FT4ARRAY_PROPERTY = "ft4Array";
-    public static final String TO_FT1_PROPERTY = "toFT1";
-    public static final String TO_FT2_PROPERTY = "toFT2";
+    private static final long serialVersionUID = 1L; 
 
     public static final String FT3_ID_PK_COLUMN = "FT3_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<FlattenedTest4>> FT4ARRAY = new Property<>("ft4Array");
+    public static final Property<FlattenedTest1> TO_FT1 = new Property<>("toFT1");
+    public static final Property<FlattenedTest2> TO_FT2 = new Property<>("toFT2");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToFt4Array(FlattenedTest4 obj) {
-        addToManyTarget(FT4ARRAY_PROPERTY, obj, true);
+        addToManyTarget("ft4Array", obj, true);
     }
     public void removeFromFt4Array(FlattenedTest4 obj) {
-        removeToManyTarget(FT4ARRAY_PROPERTY, obj, true);
+        removeToManyTarget("ft4Array", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<FlattenedTest4> getFt4Array() {
-        return (List<FlattenedTest4>)readProperty(FT4ARRAY_PROPERTY);
+        return (List<FlattenedTest4>)readProperty("ft4Array");
     }
 
 
 
     public FlattenedTest1 getToFT1() {
-        return (FlattenedTest1)readProperty(TO_FT1_PROPERTY);
+        return (FlattenedTest1)readProperty("toFT1");
     }
 
 
     public void setToFT2(FlattenedTest2 toFT2) {
-        setToOneTarget(TO_FT2_PROPERTY, toFT2, true);
+        setToOneTarget("toFT2", toFT2, true);
     }
 
     public FlattenedTest2 getToFT2() {
-        return (FlattenedTest2)readProperty(TO_FT2_PROPERTY);
+        return (FlattenedTest2)readProperty("toFT2");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest4.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest4.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest4.java
index 1e6206a..5ffe663 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest4.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_flattened/auto/_FlattenedTest4.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_flattened.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest3;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest3;
  */
 public abstract class _FlattenedTest4 extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String TO_FT3_PROPERTY = "toFT3";
+    private static final long serialVersionUID = 1L; 
 
     public static final String FT4_ID_PK_COLUMN = "FT4_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<FlattenedTest3> TO_FT3 = new Property<>("toFT3");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setToFT3(FlattenedTest3 toFT3) {
-        setToOneTarget(TO_FT3_PROPERTY, toFT3, true);
+        setToOneTarget("toFT3", toFT3, true);
     }
 
     public FlattenedTest3 getToFT3() {
-        return (FlattenedTest3)readProperty(TO_FT3_PROPERTY);
+        return (FlattenedTest3)readProperty("toFT3");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToMany.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToMany.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToMany.java
index ffa0f83..9a72b9e 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToMany.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToMany.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.relationships_set_to_many.auto;
 import java.util.Set;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_set_to_many.SetToManyTarget;
 
 /**
@@ -13,19 +14,21 @@ import org.apache.cayenne.testdo.relationships_set_to_many.SetToManyTarget;
  */
 public abstract class _SetToMany extends CayenneDataObject {
 
-    public static final String TARGETS_PROPERTY = "targets";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Set<SetToManyTarget>> TARGETS = new Property<>("targets");
+
     public void addToTargets(SetToManyTarget obj) {
-        addToManyTarget(TARGETS_PROPERTY, obj, true);
+        addToManyTarget("targets", obj, true);
     }
     public void removeFromTargets(SetToManyTarget obj) {
-        removeToManyTarget(TARGETS_PROPERTY, obj, true);
+        removeToManyTarget("targets", obj, true);
     }
     @SuppressWarnings("unchecked")
     public Set<SetToManyTarget> getTargets() {
-        return (Set<SetToManyTarget>)readProperty(TARGETS_PROPERTY);
+        return (Set<SetToManyTarget>)readProperty("targets");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToManyTarget.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToManyTarget.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToManyTarget.java
index 6e4414b..2633a6d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToManyTarget.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_set_to_many/auto/_SetToManyTarget.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_set_to_many.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_set_to_many.SetToMany;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.relationships_set_to_many.SetToMany;
  */
 public abstract class _SetToManyTarget extends CayenneDataObject {
 
-    public static final String SET_TO_MANY_PROPERTY = "setToMany";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<SetToMany> SET_TO_MANY = new Property<>("setToMany");
+
     public void setSetToMany(SetToMany setToMany) {
-        setToOneTarget(SET_TO_MANY_PROPERTY, setToMany, true);
+        setToOneTarget("setToMany", setToMany, true);
     }
 
     public SetToMany getSetToMany() {
-        return (SetToMany)readProperty(SET_TO_MANY_PROPERTY);
+        return (SetToMany)readProperty("setToMany");
     }
 
 


[09/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
CAY-2176 Java 7 diamond class generation templates

* regenerated unit tests with the new templates and no String properties
* cleaned up String property refs in unit tests


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

Branch: refs/heads/master
Commit: aa962a89088867a73db9dbc47874538d06cecd94
Parents: 1510b05
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Dec 18 19:18:18 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Dec 18 21:11:25 2016 +0300

----------------------------------------------------------------------
 .../java/org/apache/cayenne/CDOMany2OneIT.java  |  6 +--
 .../cayenne/CayenneDataObjectValidationIT.java  |  2 +-
 .../cayenne/PersistenceByReachabilityIT.java    |  6 +--
 .../access/DataContextPrefetchExtras1IT.java    |  2 +-
 .../cayenne/access/DataContextPrefetchIT.java   | 27 ++++++-----
 .../access/DataContextRefreshQueryIT.java       | 20 ++-------
 .../access/DataContextRelationshipQueryIT.java  |  4 +-
 .../cayenne/access/DataDomainCallbacksIT.java   |  2 +-
 .../cayenne/access/DataDomainQueryActionIT.java |  7 ++-
 .../apache/cayenne/access/JointPrefetchIT.java  | 13 ++----
 .../cayenne/access/NestedDataContextReadIT.java | 15 ++-----
 .../access/NestedDataContextWriteIT.java        |  9 +---
 .../select/DefaultSelectTranslatorIT.java       |  6 +--
 .../cayenne/exp/ParsedExpQualifierCompatIT.java | 47 +++++++++-----------
 .../org/apache/cayenne/query/EJBQLQueryIT.java  | 23 ++++------
 .../cayenne/testdo/testmap/auto/_ArtGroup.java  | 17 ++-----
 .../cayenne/testdo/testmap/auto/_Artist.java    | 18 ++++----
 .../testdo/testmap/auto/_ArtistCallback.java    | 11 ++---
 .../testdo/testmap/auto/_ArtistExhibit.java     |  9 +---
 .../testdo/testmap/auto/_CompoundPainting.java  | 33 ++++----------
 .../auto/_CompoundPaintingLongNames.java        | 41 +++++------------
 .../cayenne/testdo/testmap/auto/_Exhibit.java   | 17 ++-----
 .../cayenne/testdo/testmap/auto/_Gallery.java   | 13 ++----
 .../_MeaningfulGeneratedColumnTestEntity.java   |  9 +---
 .../testdo/testmap/auto/_NullTestEntity.java    |  5 +--
 .../cayenne/testdo/testmap/auto/_Painting.java  | 25 +++--------
 .../cayenne/testdo/testmap/auto/_Painting1.java | 13 ++----
 .../testdo/testmap/auto/_PaintingInfo.java      | 13 ++----
 .../cayenne/testdo/testmap/auto/_ROArtist.java  | 13 ++----
 .../testdo/testmap/auto/_ROPainting.java        | 13 ++----
 .../testmap/auto/_RWCompoundPainting.java       | 13 ++----
 .../testdo/testmap/auto/_SubPainting.java       |  5 +--
 32 files changed, 140 insertions(+), 317 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
index be9aac4..e063ec5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
@@ -131,7 +131,7 @@ public class CDOMany2OneIT extends ServerCase {
 
         Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
 
-        Expression e = ExpressionFactory.matchExp(ROPainting.TO_ARTIST_PROPERTY, a1);
+        Expression e = ROPainting.TO_ARTIST.eq(a1);
         SelectQuery q = new SelectQuery(ROPainting.class, e);
 
         List<ROPainting> paints = context.performQuery(q);
@@ -148,7 +148,7 @@ public class CDOMany2OneIT extends ServerCase {
 
         Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
 
-        Expression e = ExpressionFactory.matchExp(ROPainting.TO_ARTIST_PROPERTY, a1);
+        Expression e = ROPainting.TO_ARTIST.eq(a1);
         SelectQuery q = new SelectQuery(ROPainting.class, e);
 
         List<ROPainting> paints = context.performQuery(q);
@@ -169,7 +169,7 @@ public class CDOMany2OneIT extends ServerCase {
         Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
         Painting p1 = Cayenne.objectForPK(context, Painting.class, 6);
 
-        Expression e = ExpressionFactory.matchExp(Painting.TO_ARTIST_PROPERTY, a1);
+        Expression e = Painting.TO_ARTIST.eq(a1);
         SelectQuery q = new SelectQuery(Painting.class, e);
 
         List<Painting> paints = context.performQuery(q);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java
index 1e4c710..febf373 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java
@@ -62,7 +62,7 @@ public class CayenneDataObjectValidationIT extends ServerCase {
         assertEquals(1, failures.size());
 
         BeanValidationFailure failure = (BeanValidationFailure) failures.get(0);
-        assertEquals(Exhibit.TO_GALLERY_PROPERTY, failure.getProperty());
+        assertEquals(Exhibit.TO_GALLERY.getName(), failure.getProperty());
 
         // fix the problem and see if it goes away
         Gallery gallery = context.newObject(Gallery.class);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java b/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
index 42d0a22..f53fe16 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
@@ -44,7 +44,7 @@ public class PersistenceByReachabilityIT extends ServerCase {
         Painting persistentDO = context.newObject(Painting.class);
 
         Artist transientDO = new Artist();
-        persistentDO.setToOneTarget(Painting.TO_ARTIST_PROPERTY, transientDO, false);
+        persistentDO.setToOneTarget(Painting.TO_ARTIST.getName(), transientDO, false);
 
         assertEquals(PersistenceState.NEW, transientDO.getPersistenceState());
     }
@@ -54,7 +54,7 @@ public class PersistenceByReachabilityIT extends ServerCase {
         Painting transientDO = context.newObject(Painting.class);
 
         Artist persistentDO = new Artist();
-        transientDO.setToOneTarget(Painting.TO_ARTIST_PROPERTY, persistentDO, false);
+        transientDO.setToOneTarget(Painting.TO_ARTIST.getName(), persistentDO, false);
 
         assertEquals(PersistenceState.NEW, transientDO.getPersistenceState());
     }
@@ -68,7 +68,7 @@ public class PersistenceByReachabilityIT extends ServerCase {
         // this is the case where exception must be thrown as DataContexts are
         // different
         try {
-            doC1.setToOneTarget(Painting.TO_ARTIST_PROPERTY, doC2, false);
+            doC1.setToOneTarget(Painting.TO_ARTIST.getName(), doC2, false);
             fail("failed to detect relationship between objects in different DataContexts");
         }
         catch (CayenneRuntimeException ex) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
index 18b74fd..53e0998 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
@@ -67,7 +67,7 @@ public class DataContextPrefetchExtras1IT extends ServerCase {
         createDataSet();
 
         SelectQuery query = new SelectQuery(Painting.class);
-        query.addPrefetch(Painting.TO_PAINTING_INFO_PROPERTY);
+        query.addPrefetch(Painting.TO_PAINTING_INFO.disjoint());
 
         List<Painting> objects = context.performQuery(query);
         assertTrue(!objects.isEmpty());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
index 4eb2295..71fb837 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
@@ -30,7 +30,6 @@ import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.ArtGroup;
@@ -440,7 +439,7 @@ public class DataContextPrefetchIT extends ServerCase {
 		createTwoArtistsAndTwoPaintingsDataSet();
 
 		SelectQuery q = new SelectQuery(Painting.class);
-		q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
+		q.addPrefetch(Painting.TO_ARTIST.disjoint());
 
 		final List<Painting> result = context.performQuery(q);
 
@@ -466,7 +465,7 @@ public class DataContextPrefetchIT extends ServerCase {
 		createTwoArtistsAndTwoPaintingsDataSet();
 
 		SelectQuery q = new SelectQuery(Painting.class);
-		q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
+		q.addPrefetch(Painting.TO_ARTIST.disjoint());
 		q.andQualifier(ExpressionFactory.matchDbExp("toArtist.ARTIST_NAME", "artist2"));
 
 		List<Painting> results = context.performQuery(q);
@@ -479,7 +478,7 @@ public class DataContextPrefetchIT extends ServerCase {
 		createTwoArtistsAndTwoPaintingsDataSet();
 
 		SelectQuery q = new SelectQuery(Painting.class);
-		q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
+		q.addPrefetch(Painting.TO_ARTIST.disjoint());
 		q.andQualifier(ExpressionFactory.matchExp("toArtist.artistName", "artist2"));
 
 		List<Painting> results = context.performQuery(q);
@@ -520,7 +519,7 @@ public class DataContextPrefetchIT extends ServerCase {
 		Expression exp = ExpressionFactory.matchExp("toArtist.artistName", "artist3");
 
 		SelectQuery q = new SelectQuery(Painting.class, exp);
-		q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
+		q.addPrefetch(Painting.TO_ARTIST.disjoint());
 
 		final List<Painting> results = context.performQuery(q);
 
@@ -597,7 +596,7 @@ public class DataContextPrefetchIT extends ServerCase {
 				// see that artists are resolved...
 
 				Painting px = results.get(0);
-				Artist ax = (Artist) px.readProperty(Painting.TO_ARTIST_PROPERTY);
+				Artist ax = (Artist) px.readProperty(Painting.TO_ARTIST.getName());
 				assertEquals(PersistenceState.COMMITTED, ax.getPersistenceState());
 			}
 		});
@@ -609,8 +608,8 @@ public class DataContextPrefetchIT extends ServerCase {
 
 		Expression e = ExpressionFactory.likeExp("toArtist.artistName", "a%");
 		SelectQuery q = new SelectQuery(Painting.class, e);
-		q.addPrefetch(Painting.TO_PAINTING_INFO_PROPERTY);
-		q.addOrdering(Painting.PAINTING_TITLE_PROPERTY, SortOrder.ASCENDING);
+		q.addPrefetch(Painting.TO_PAINTING_INFO.disjoint());
+		q.addOrdering(Painting.PAINTING_TITLE.asc());
 
 		final List<Painting> results = context.performQuery(q);
 
@@ -621,7 +620,7 @@ public class DataContextPrefetchIT extends ServerCase {
 
 				// testing non-null to-one target
 				Painting p0 = results.get(0);
-				Object o2 = p0.readPropertyDirectly(Painting.TO_PAINTING_INFO_PROPERTY);
+				Object o2 = p0.readPropertyDirectly(Painting.TO_PAINTING_INFO.getName());
 				assertTrue(o2 instanceof PaintingInfo);
 				PaintingInfo pi2 = (PaintingInfo) o2;
 				assertEquals(PersistenceState.COMMITTED, pi2.getPersistenceState());
@@ -629,7 +628,7 @@ public class DataContextPrefetchIT extends ServerCase {
 
 				// testing null to-one target
 				Painting p1 = results.get(1);
-				assertNull(p1.readPropertyDirectly(Painting.TO_PAINTING_INFO_PROPERTY));
+				assertNull(p1.readPropertyDirectly(Painting.TO_PAINTING_INFO.getName()));
 
 				// there was a bug marking an object as dirty when clearing the
 				// relationships
@@ -658,7 +657,7 @@ public class DataContextPrefetchIT extends ServerCase {
 		tPainting.insert(6, "p_Xty", null, 1000);
 
 		SelectQuery q = new SelectQuery(Painting.class);
-		q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
+		q.addPrefetch(Painting.TO_ARTIST.disjoint());
 
 		final List<Painting> paintings = context.performQuery(q);
 
@@ -668,7 +667,7 @@ public class DataContextPrefetchIT extends ServerCase {
 				assertEquals(1, paintings.size());
 
 				Painting p2 = paintings.get(0);
-				assertNull(p2.readProperty(Painting.TO_ARTIST_PROPERTY));
+				assertNull(p2.readProperty(Painting.TO_ARTIST.getName()));
 			}
 		});
 	}
@@ -678,7 +677,7 @@ public class DataContextPrefetchIT extends ServerCase {
 		createTwoArtistsAndTwoPaintingsDataSet();
 
 		final SelectQuery q = new SelectQuery(Painting.class);
-		q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
+		q.addPrefetch(Painting.TO_ARTIST.disjoint());
 		q.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
 
 		context.performQuery(q);
@@ -714,7 +713,7 @@ public class DataContextPrefetchIT extends ServerCase {
 		createTwoArtistsAndTwoPaintingsDataSet();
 
 		final SelectQuery q = new SelectQuery(Painting.class);
-		q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
+		q.addPrefetch(Painting.TO_ARTIST.disjoint());
 		q.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
 
 		context.performQuery(q);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
index b88b269..8f60255 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
-import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.query.RefreshQuery;
 import org.apache.cayenne.query.SelectQuery;
@@ -40,12 +39,7 @@ import org.junit.Test;
 
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class DataContextRefreshQueryIT extends ServerCase {
@@ -232,9 +226,7 @@ public class DataContextRefreshQueryIT extends ServerCase {
     public void testRefreshQueryResultsLocalCache() throws Exception {
         createRefreshCollectionDataSet();
 
-        Expression qual = ExpressionFactory.matchExp(
-                Painting.PAINTING_TITLE_PROPERTY,
-                "P2");
+        Expression qual = Painting.PAINTING_TITLE.eq("P2");
         SelectQuery q = new SelectQuery(Painting.class, qual);
         q.addOrdering("db:PAINTING_ID", SortOrder.ASCENDING);
         q.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
@@ -287,9 +279,7 @@ public class DataContextRefreshQueryIT extends ServerCase {
     public void testRefreshQueryResultsSharedCache() throws Exception {
         createRefreshCollectionDataSet();
 
-        Expression qual = ExpressionFactory.matchExp(
-                Painting.PAINTING_TITLE_PROPERTY,
-                "P2");
+        Expression qual = Painting.PAINTING_TITLE.eq("P2");
         SelectQuery q = new SelectQuery(Painting.class, qual);
         q.addOrdering("db:PAINTING_ID", SortOrder.ASCENDING);
         q.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
@@ -342,9 +332,7 @@ public class DataContextRefreshQueryIT extends ServerCase {
     public void testRefreshQueryResultGroupLocal() throws Exception {
         createRefreshCollectionDataSet();
 
-        Expression qual = ExpressionFactory.matchExp(
-                Painting.PAINTING_TITLE_PROPERTY,
-                "P2");
+        Expression qual = Painting.PAINTING_TITLE.eq("P2");
         SelectQuery q = new SelectQuery(Painting.class, qual);
         q.addOrdering("db:PAINTING_ID", SortOrder.ASCENDING);
         q.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
index 103f8c5..272260d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
@@ -85,7 +85,7 @@ public class DataContextRelationshipQueryIT extends ServerCase {
 
         RelationshipQuery toOne = new RelationshipQuery(
                 p.getObjectId(),
-                Painting.TO_ARTIST_PROPERTY,
+                Painting.TO_ARTIST.getName(),
                 false);
 
         List<Artist> related = context.performQuery(toOne);
@@ -122,7 +122,7 @@ public class DataContextRelationshipQueryIT extends ServerCase {
 
         RelationshipQuery toOne = new RelationshipQuery(
                 p.getObjectId(),
-                Painting.TO_ARTIST_PROPERTY,
+                Painting.TO_ARTIST.getName(),
                 true);
 
         List<Artist> related = context.performQuery(toOne);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
index 43d09d6..d2366e8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
@@ -187,7 +187,7 @@ public class DataDomainCallbacksIT extends ServerCase {
         context.commitChanges();
 
         SelectQuery q = new SelectQuery(Painting.class);
-        q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
+        q.addPrefetch(Painting.TO_ARTIST.disjoint());
         p1 = (Painting) context1.performQuery(q).get(0);
 
         // artist is prefetched here, and a callback must have been invoked

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
index cd1e103..c2b7422 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.query.QueryMetadata;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
 import org.apache.cayenne.unit.di.server.ServerCase;
@@ -63,9 +62,9 @@ public class DataDomainQueryActionIT extends ServerCase {
 
         SelectQuery query = new SelectQuery(Painting.class);
 
-        query.addPrefetch(Painting.TO_GALLERY_PROPERTY);
-        query.addPrefetch(Painting.TO_ARTIST_PROPERTY);
-        query.addOrdering(Painting.PAINTING_TITLE_PROPERTY, SortOrder.ASCENDING);
+        query.addPrefetch(Painting.TO_GALLERY.disjoint());
+        query.addPrefetch(Painting.TO_ARTIST.disjoint());
+        query.addOrdering(Painting.PAINTING_TITLE.asc());
         query.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
         query.setPageSize(5);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
index 0e3267c..a02cfd3 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
@@ -30,7 +30,6 @@ import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.query.SortOrder;
@@ -126,8 +125,7 @@ public class JointPrefetchIT extends ServerCase {
         q.setFetchLimit(2);
         q.setFetchOffset(0);
         q.addOrdering("db:PAINTING_ID", SortOrder.ASCENDING);
-        q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        q.addPrefetch(Painting.TO_ARTIST.joint());
 
         final List<?> objects = context.performQuery(q);
 
@@ -187,8 +185,7 @@ public class JointPrefetchIT extends ServerCase {
         SelectQuery q = new SelectQuery(Painting.class);
         q.addOrdering("db:PAINTING_ID", SortOrder.ASCENDING);
         q.setFetchingDataRows(true);
-        q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        q.addPrefetch(Painting.TO_ARTIST.joint());
 
         final List<?> rows = context.performQuery(q);
 
@@ -287,8 +284,7 @@ public class JointPrefetchIT extends ServerCase {
         // query with to-many joint prefetches
         SelectQuery q = new SelectQuery(Painting.class);
         q.addOrdering("db:PAINTING_ID", SortOrder.ASCENDING);
-        q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        q.addPrefetch(Painting.TO_ARTIST.joint());
 
         final List<?> objects = context.performQuery(q);
 
@@ -331,8 +327,7 @@ public class JointPrefetchIT extends ServerCase {
 
         // test
         SelectQuery q = new SelectQuery(Painting.class);
-        q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        q.addPrefetch(Painting.TO_ARTIST.joint());
 
         ObjEntity artistE = context.getEntityResolver().getObjEntity("Artist");
         ObjAttribute dateOfBirth = artistE.getAttribute("dateOfBirth");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
index 6b5f098..1441244 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
@@ -30,7 +30,6 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
@@ -48,13 +47,7 @@ import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class NestedDataContextReadIT extends ServerCase {
@@ -246,7 +239,7 @@ public class NestedDataContextReadIT extends ServerCase {
 
         // run an ordered query, so we can address specific objects directly by index
         SelectQuery q = new SelectQuery(Painting.class);
-        q.addOrdering(Painting.PAINTING_TITLE_PROPERTY, SortOrder.ASCENDING);
+        q.addOrdering(Painting.PAINTING_TITLE.asc());
         final List<?> childSources = child.performQuery(q);
         assertEquals(5, childSources.size());
 
@@ -312,8 +305,8 @@ public class NestedDataContextReadIT extends ServerCase {
                 new Integer(33001));
 
         SelectQuery q = new SelectQuery(Painting.class);
-        q.addOrdering(Painting.PAINTING_TITLE_PROPERTY, SortOrder.ASCENDING);
-        q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
+        q.addOrdering(Painting.PAINTING_TITLE.asc());
+        q.addPrefetch(Painting.TO_ARTIST.disjoint());
 
         final List<?> results = child.performQuery(q);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
index bb188ad..c7064f3 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
@@ -28,7 +28,6 @@ import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.ArtGroup;
@@ -48,11 +47,7 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class NestedDataContextWriteIT extends ServerCase {
@@ -373,7 +368,7 @@ public class NestedDataContextWriteIT extends ServerCase {
 
         // make sure we fetch in predictable order
         SelectQuery query = new SelectQuery(Painting.class);
-        query.addOrdering(Painting.PAINTING_TITLE_PROPERTY, SortOrder.ASCENDING);
+        query.addOrdering(Painting.PAINTING_TITLE.asc());
         List<?> objects = childContext.performQuery(query);
 
         assertEquals(6, objects.size());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
index 0608abc..e090d0c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
@@ -471,7 +471,7 @@ public class DefaultSelectTranslatorIT extends ServerCase {
 	public void testCreateSqlString12() throws Exception {
 		// query with to-one joint prefetches
 		SelectQuery q = new SelectQuery(Painting.class);
-		q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+		q.addPrefetch(Painting.TO_ARTIST.joint());
 
 		DefaultSelectTranslator transl = new DefaultSelectTranslator(q, dataNode.getAdapter(),
 				dataNode.getEntityResolver());
@@ -674,7 +674,7 @@ public class DefaultSelectTranslatorIT extends ServerCase {
 		// and with QuoteSqlIdentifiers = true
 		try {
 			SelectQuery q = new SelectQuery(Painting.class);
-			q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+			q.addPrefetch(Painting.TO_ARTIST.joint());
 
 			DbEntity entity = context.getEntityResolver().getDbEntity("PAINTING");
 			entity.getDataMap().setQuotingSQLIdentifiers(true);
@@ -754,7 +754,7 @@ public class DefaultSelectTranslatorIT extends ServerCase {
 	@Test
 	public void testBuildResultColumns2() throws Exception {
 		SelectQuery q = new SelectQuery(Painting.class);
-		q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+		q.addPrefetch(Painting.TO_ARTIST.joint());
 		DefaultSelectTranslator tr = new DefaultSelectTranslator(q, dataNode.getAdapter(), dataNode.getEntityResolver());
 
 		List<?> columns = tr.buildResultColumns();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
index 5399545..3be97ad 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
@@ -184,62 +184,56 @@ public class ParsedExpQualifierCompatIT extends ServerCase {
     @Test
     public void testLike() throws Exception {
         createTwentyFiveArtists();
-        Expression parsed1 = Expression.fromString("artistName like 'artist%2'");
+        Expression parsed1 = ExpressionFactory.exp("artistName like 'artist%2'");
         assertEquals(3, execute(Artist.class, parsed1).size());
     }
 
     @Test
     public void testLikeIgnoreCase() throws Exception {
         createTwentyFiveArtists();
-        Expression parsed1 = Expression
-                .fromString("artistName likeIgnoreCase 'artist%2'");
+        Expression parsed1 = ExpressionFactory.exp("artistName likeIgnoreCase 'artist%2'");
         assertEquals(3, execute(Artist.class, parsed1).size());
     }
 
     @Test
     public void testNotLike() throws Exception {
         createTwentyFiveArtists();
-        Expression parsed1 = Expression.fromString("artistName not like 'artist%2'");
+        Expression parsed1 = ExpressionFactory.exp("artistName not like 'artist%2'");
         assertEquals(25 - 3, execute(Artist.class, parsed1).size());
     }
 
     @Test
     public void testNotLikeIgnoreCase() throws Exception {
         createTwentyFiveArtists();
-        Expression parsed1 = Expression
-                .fromString("artistName not likeIgnoreCase 'artist%2'");
+        Expression parsed1 = ExpressionFactory.exp("artistName not likeIgnoreCase 'artist%2'");
         assertEquals(25 - 3, execute(Artist.class, parsed1).size());
     }
 
     @Test
     public void testIn() throws Exception {
         createTwentyFiveArtists();
-        Expression parsed1 = Expression
-                .fromString("artistName in ('artist1', 'artist3', 'artist19')");
+        Expression parsed1 = ExpressionFactory.exp("artistName in ('artist1', 'artist3', 'artist19')");
         assertEquals(3, execute(Artist.class, parsed1).size());
     }
 
     @Test
     public void testNotIn() throws Exception {
         createTwentyFiveArtists();
-        Expression parsed1 = Expression
-                .fromString("artistName not in ('artist1', 'artist3', 'artist19')");
+        Expression parsed1 = ExpressionFactory.exp("artistName not in ('artist1', 'artist3', 'artist19')");
         assertEquals(25 - 3, execute(Artist.class, parsed1).size());
     }
 
     @Test
     public void testBetween() throws Exception {
         createTwentyFiveArtistsAndPaintings();
-        Expression parsed1 = Expression
-                .fromString("estimatedPrice between 2000.0 and 4000.0");
+        Expression parsed1 = ExpressionFactory.exp("estimatedPrice between 2000.0 and 4000.0");
         assertEquals(3, execute(Painting.class, parsed1).size());
     }
 
     @Test
     public void testNotBetween() throws Exception {
         createTwentyFiveArtistsAndPaintings();
-        Expression parsed1 = Expression
-                .fromString("estimatedPrice not between 2000.0 and 4000.0");
+        Expression parsed1 = ExpressionFactory.exp("estimatedPrice not between 2000.0 and 4000.0");
         assertEquals(25 - 3, execute(Painting.class, parsed1).size());
     }
 
@@ -248,22 +242,22 @@ public class ParsedExpQualifierCompatIT extends ServerCase {
         createTwentyFiveArtists();
         Map<String, Object> parameters = new HashMap<>();
         parameters.put("artistName", "artist5");
-        Expression parsed1 = Expression.fromString("artistName=$artistName");
-        parsed1 = parsed1.expWithParameters(parameters);
+        Expression parsed1 = ExpressionFactory.exp("artistName=$artistName");
+        parsed1 = parsed1.params(parameters);
         assertEquals(1, execute(Artist.class, parsed1).size());
     }
 
     @Test
     public void testDbExpression() throws Exception {
         createTwentyFiveArtists();
-        Expression parsed1 = Expression.fromString("db:ARTIST_NAME='artist3'");
+        Expression parsed1 = ExpressionFactory.exp("db:ARTIST_NAME='artist3'");
         assertEquals(1, execute(Artist.class, parsed1).size());
     }
 
     @Test
     public void testFloatExpression() throws Exception {
         createTwentyFiveArtistsAndPaintings();
-        Expression parsed1 = Expression.fromString("estimatedPrice < 2001.01");
+        Expression parsed1 = ExpressionFactory.exp("estimatedPrice < 2001.01");
         assertEquals(2, execute(Painting.class, parsed1).size());
     }
 
@@ -271,10 +265,10 @@ public class ParsedExpQualifierCompatIT extends ServerCase {
     public void testNullExpression() throws Exception {
         createTwentyFiveArtists();
 
-        Expression parsed1 = Expression.fromString("artistName!=null");
+        Expression parsed1 = ExpressionFactory.exp("artistName!=null");
         assertEquals(25, execute(Artist.class, parsed1).size());
 
-        Expression parsed2 = Expression.fromString("artistName = null");
+        Expression parsed2 = ExpressionFactory.exp("artistName = null");
         assertEquals(0, execute(Artist.class, parsed2).size());
     }
 
@@ -283,13 +277,13 @@ public class ParsedExpQualifierCompatIT extends ServerCase {
 
         createTwentyFiveArtistsAndPaintings();
 
-        Expression parsed1 = Expression.fromString("true");
+        Expression parsed1 = ExpressionFactory.exp("true");
         assertEquals(25, execute(Painting.class, parsed1).size());
 
-        Expression parsed2 = Expression.fromString("(estimatedPrice < 2001.01) and true");
+        Expression parsed2 = ExpressionFactory.exp("(estimatedPrice < 2001.01) and true");
         assertEquals(2, execute(Painting.class, parsed2).size());
 
-        Expression parsed3 = Expression.fromString("(estimatedPrice < 2001.01) or true");
+        Expression parsed3 = ExpressionFactory.exp("(estimatedPrice < 2001.01) or true");
         assertEquals(25, execute(Painting.class, parsed3).size());
     }
 
@@ -297,14 +291,13 @@ public class ParsedExpQualifierCompatIT extends ServerCase {
     public void testFalseExpression() throws Exception {
         createTwentyFiveArtistsAndPaintings();
 
-        Expression parsed1 = Expression.fromString("false");
+        Expression parsed1 = ExpressionFactory.exp("false");
         assertEquals(0, execute(Painting.class, parsed1).size());
 
-        Expression parsed2 = Expression
-                .fromString("(estimatedPrice < 2001.01) and false");
+        Expression parsed2 = ExpressionFactory.exp("(estimatedPrice < 2001.01) and false");
         assertEquals(0, execute(Painting.class, parsed2).size());
 
-        Expression parsed3 = Expression.fromString("(estimatedPrice < 2001.01) or false");
+        Expression parsed3 = ExpressionFactory.exp("(estimatedPrice < 2001.01) or false");
 
         assertEquals(2, execute(Painting.class, parsed3).size());
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
index 45e156a..b1b2495 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
@@ -18,19 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.query;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.configuration.server.ServerRuntime;
@@ -38,7 +25,6 @@ import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.ejbql.EJBQLCompiledExpression;
 import org.apache.cayenne.ejbql.EJBQLException;
 import org.apache.cayenne.exp.Expression;
-import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
@@ -53,6 +39,13 @@ import org.apache.cayenne.util.XMLEncoder;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class EJBQLQueryIT extends ServerCase {
 
@@ -480,7 +473,7 @@ public class EJBQLQueryIT extends ServerCase {
 
     @Test
     public void testRelationshipWhereClause2() throws Exception {
-        Expression exp = ExpressionFactory.matchExp(Painting.TO_GALLERY_PROPERTY, null);
+        Expression exp = Painting.TO_GALLERY.isNull();
         EJBQLQuery query = new EJBQLQuery("select p.toArtist from Painting p where "
                 + exp.toEJBQL("p"));
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtGroup.java
----------------------------------------------------------------------
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 827cefd..a9eede5 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
@@ -17,21 +17,12 @@ public abstract class _ArtGroup extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String ARTIST_ARRAY_PROPERTY = "artistArray";
-    @Deprecated
-    public static final String CHILD_GROUPS_ARRAY_PROPERTY = "childGroupsArray";
-    @Deprecated
-    public static final String TO_PARENT_GROUP_PROPERTY = "toParentGroup";
-
     public static final String GROUP_ID_PK_COLUMN = "GROUP_ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<List<Artist>> ARTIST_ARRAY = new Property<List<Artist>>("artistArray");
-    public static final Property<List<ArtGroup>> CHILD_GROUPS_ARRAY = new Property<List<ArtGroup>>("childGroupsArray");
-    public static final Property<ArtGroup> TO_PARENT_GROUP = new Property<ArtGroup>("toParentGroup");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<Artist>> ARTIST_ARRAY = new Property<>("artistArray");
+    public static final Property<List<ArtGroup>> CHILD_GROUPS_ARRAY = new Property<>("childGroupsArray");
+    public static final Property<ArtGroup> TO_PARENT_GROUP = new Property<>("toParentGroup");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java
----------------------------------------------------------------------
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 f7a9cba..7d42fab 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
@@ -1,14 +1,14 @@
 package org.apache.cayenne.testdo.testmap.auto;
 
+import java.util.Date;
+import java.util.List;
+
 import org.apache.cayenne.CayenneDataObject;
 import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.testmap.ArtGroup;
 import org.apache.cayenne.testdo.testmap.ArtistExhibit;
 import org.apache.cayenne.testdo.testmap.Painting;
 
-import java.util.Date;
-import java.util.List;
-
 /**
  * Class _Artist was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -17,15 +17,15 @@ import java.util.List;
  */
 public abstract class _Artist extends CayenneDataObject {
 
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L; 
 
     public static final String ARTIST_ID_PK_COLUMN = "ARTIST_ID";
 
-    public static final Property<String> ARTIST_NAME = new Property<String>("artistName");
-    public static final Property<Date> DATE_OF_BIRTH = new Property<Date>("dateOfBirth");
-    public static final Property<List<ArtistExhibit>> ARTIST_EXHIBIT_ARRAY = new Property<List<ArtistExhibit>>("artistExhibitArray");
-    public static final Property<List<ArtGroup>> GROUP_ARRAY = new Property<List<ArtGroup>>("groupArray");
-    public static final Property<List<Painting>> PAINTING_ARRAY = new Property<List<Painting>>("paintingArray");
+    public static final Property<String> ARTIST_NAME = new Property<>("artistName");
+    public static final Property<Date> DATE_OF_BIRTH = new Property<>("dateOfBirth");
+    public static final Property<List<ArtistExhibit>> ARTIST_EXHIBIT_ARRAY = new Property<>("artistExhibitArray");
+    public static final Property<List<ArtGroup>> GROUP_ARRAY = new Property<>("groupArray");
+    public static final Property<List<Painting>> PAINTING_ARRAY = new Property<>("paintingArray");
 
     public void setArtistName(String artistName) {
         writeProperty("artistName", artistName);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistCallback.java
----------------------------------------------------------------------
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 57255a6..5ecf2a5 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
@@ -6,7 +6,7 @@ import org.apache.cayenne.CayenneDataObject;
 import org.apache.cayenne.exp.Property;
 
 /**
- * Class _ArtistCallbackTest was generated by Cayenne.
+ * Class _ArtistCallback was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
  * since it may be overwritten next time code is regenerated.
  * If you need to make any customizations, please use subclass.
@@ -15,15 +15,10 @@ public abstract class _ArtistCallback extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ARTIST_NAME_PROPERTY = "artistName";
-    @Deprecated
-    public static final String DATE_OF_BIRTH_PROPERTY = "dateOfBirth";
-
     public static final String ARTIST_ID_PK_COLUMN = "ARTIST_ID";
 
-    public static final Property<String> ARTIST_NAME = new Property<String>("artistName");
-    public static final Property<Date> DATE_OF_BIRTH = new Property<Date>("dateOfBirth");
+    public static final Property<String> ARTIST_NAME = new Property<>("artistName");
+    public static final Property<Date> DATE_OF_BIRTH = new Property<>("dateOfBirth");
 
     public void setArtistName(String artistName) {
         writeProperty("artistName", artistName);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ArtistExhibit.java
----------------------------------------------------------------------
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 60797ec..b7d41dd 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
@@ -15,16 +15,11 @@ public abstract class _ArtistExhibit extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String TO_ARTIST_PROPERTY = "toArtist";
-    @Deprecated
-    public static final String TO_EXHIBIT_PROPERTY = "toExhibit";
-
     public static final String ARTIST_ID_PK_COLUMN = "ARTIST_ID";
     public static final String EXHIBIT_ID_PK_COLUMN = "EXHIBIT_ID";
 
-    public static final Property<Artist> TO_ARTIST = new Property<Artist>("toArtist");
-    public static final Property<Exhibit> TO_EXHIBIT = new Property<Exhibit>("toExhibit");
+    public static final Property<Artist> TO_ARTIST = new Property<>("toArtist");
+    public static final Property<Exhibit> TO_EXHIBIT = new Property<>("toExhibit");
 
     public void setToArtist(Artist toArtist) {
         setToOneTarget("toArtist", toArtist, true);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPainting.java
----------------------------------------------------------------------
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 b739bc4..bfc70ca 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
@@ -18,33 +18,16 @@ public abstract class _CompoundPainting extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ARTIST_NAME_PROPERTY = "artistName";
-    @Deprecated
-    public static final String ESTIMATED_PRICE_PROPERTY = "estimatedPrice";
-    @Deprecated
-    public static final String GALLERY_NAME_PROPERTY = "galleryName";
-    @Deprecated
-    public static final String PAINTING_TITLE_PROPERTY = "paintingTitle";
-    @Deprecated
-    public static final String TEXT_REVIEW_PROPERTY = "textReview";
-    @Deprecated
-    public static final String TO_ARTIST_PROPERTY = "toArtist";
-    @Deprecated
-    public static final String TO_GALLERY_PROPERTY = "toGallery";
-    @Deprecated
-    public static final String TO_PAINTING_INFO_PROPERTY = "toPaintingInfo";
-
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
-    public static final Property<String> ARTIST_NAME = new Property<String>("artistName");
-    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<BigDecimal>("estimatedPrice");
-    public static final Property<String> GALLERY_NAME = new Property<String>("galleryName");
-    public static final Property<String> PAINTING_TITLE = new Property<String>("paintingTitle");
-    public static final Property<String> TEXT_REVIEW = new Property<String>("textReview");
-    public static final Property<Artist> TO_ARTIST = new Property<Artist>("toArtist");
-    public static final Property<Gallery> TO_GALLERY = new Property<Gallery>("toGallery");
-    public static final Property<PaintingInfo> TO_PAINTING_INFO = new Property<PaintingInfo>("toPaintingInfo");
+    public static final Property<String> ARTIST_NAME = new Property<>("artistName");
+    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<>("estimatedPrice");
+    public static final Property<String> GALLERY_NAME = new Property<>("galleryName");
+    public static final Property<String> PAINTING_TITLE = new Property<>("paintingTitle");
+    public static final Property<String> TEXT_REVIEW = new Property<>("textReview");
+    public static final Property<Artist> TO_ARTIST = new Property<>("toArtist");
+    public static final Property<Gallery> TO_GALLERY = new Property<>("toGallery");
+    public static final Property<PaintingInfo> TO_PAINTING_INFO = new Property<>("toPaintingInfo");
 
     public void setArtistName(String artistName) {
         writeProperty("artistName", artistName);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_CompoundPaintingLongNames.java
----------------------------------------------------------------------
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 760a565..6c24869 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
@@ -19,39 +19,18 @@ public abstract class _CompoundPaintingLongNames extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ARTIST_LONG_NAME_PROPERTY = "artistLongName";
-    @Deprecated
-    public static final String ESTIMATED_PRICE_PROPERTY = "estimatedPrice";
-    @Deprecated
-    public static final String GALLERY_LONG_NAME_PROPERTY = "galleryLongName";
-    @Deprecated
-    public static final String PAINTING_DESCRIPTION_PROPERTY = "paintingDescription";
-    @Deprecated
-    public static final String PAINTING_TITLE_PROPERTY = "paintingTitle";
-    @Deprecated
-    public static final String TEXT_LONG_REVIEW_PROPERTY = "textLongReview";
-    @Deprecated
-    public static final String TO_ARTIST_PROPERTY = "toArtist";
-    @Deprecated
-    public static final String TO_ARTIST1_PROPERTY = "toArtist1";
-    @Deprecated
-    public static final String TO_GALLERY_PROPERTY = "toGallery";
-    @Deprecated
-    public static final String TO_PAINTING_INFO_PROPERTY = "toPaintingInfo";
-
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
-    public static final Property<String> ARTIST_LONG_NAME = new Property<String>("artistLongName");
-    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<BigDecimal>("estimatedPrice");
-    public static final Property<String> GALLERY_LONG_NAME = new Property<String>("galleryLongName");
-    public static final Property<String> PAINTING_DESCRIPTION = new Property<String>("paintingDescription");
-    public static final Property<String> PAINTING_TITLE = new Property<String>("paintingTitle");
-    public static final Property<String> TEXT_LONG_REVIEW = new Property<String>("textLongReview");
-    public static final Property<Artist> TO_ARTIST = new Property<Artist>("toArtist");
-    public static final Property<ROArtist> TO_ARTIST1 = new Property<ROArtist>("toArtist1");
-    public static final Property<Gallery> TO_GALLERY = new Property<Gallery>("toGallery");
-    public static final Property<PaintingInfo> TO_PAINTING_INFO = new Property<PaintingInfo>("toPaintingInfo");
+    public static final Property<String> ARTIST_LONG_NAME = new Property<>("artistLongName");
+    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<>("estimatedPrice");
+    public static final Property<String> GALLERY_LONG_NAME = new Property<>("galleryLongName");
+    public static final Property<String> PAINTING_DESCRIPTION = new Property<>("paintingDescription");
+    public static final Property<String> PAINTING_TITLE = new Property<>("paintingTitle");
+    public static final Property<String> TEXT_LONG_REVIEW = new Property<>("textLongReview");
+    public static final Property<Artist> TO_ARTIST = new Property<>("toArtist");
+    public static final Property<ROArtist> TO_ARTIST1 = new Property<>("toArtist1");
+    public static final Property<Gallery> TO_GALLERY = new Property<>("toGallery");
+    public static final Property<PaintingInfo> TO_PAINTING_INFO = new Property<>("toPaintingInfo");
 
     public void setArtistLongName(String artistLongName) {
         writeProperty("artistLongName", artistLongName);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Exhibit.java
----------------------------------------------------------------------
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 4ef51c6..6c0d75c 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
@@ -18,21 +18,12 @@ public abstract class _Exhibit extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String CLOSING_DATE_PROPERTY = "closingDate";
-    @Deprecated
-    public static final String OPENING_DATE_PROPERTY = "openingDate";
-    @Deprecated
-    public static final String ARTIST_EXHIBIT_ARRAY_PROPERTY = "artistExhibitArray";
-    @Deprecated
-    public static final String TO_GALLERY_PROPERTY = "toGallery";
-
     public static final String EXHIBIT_ID_PK_COLUMN = "EXHIBIT_ID";
 
-    public static final Property<Date> CLOSING_DATE = new Property<Date>("closingDate");
-    public static final Property<Date> OPENING_DATE = new Property<Date>("openingDate");
-    public static final Property<List<ArtistExhibit>> ARTIST_EXHIBIT_ARRAY = new Property<List<ArtistExhibit>>("artistExhibitArray");
-    public static final Property<Gallery> TO_GALLERY = new Property<Gallery>("toGallery");
+    public static final Property<Date> CLOSING_DATE = new Property<>("closingDate");
+    public static final Property<Date> OPENING_DATE = new Property<>("openingDate");
+    public static final Property<List<ArtistExhibit>> ARTIST_EXHIBIT_ARRAY = new Property<>("artistExhibitArray");
+    public static final Property<Gallery> TO_GALLERY = new Property<>("toGallery");
 
     public void setClosingDate(Date closingDate) {
         writeProperty("closingDate", closingDate);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Gallery.java
----------------------------------------------------------------------
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 f1b6576..e2bc498 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
@@ -17,18 +17,11 @@ public abstract class _Gallery extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String GALLERY_NAME_PROPERTY = "galleryName";
-    @Deprecated
-    public static final String EXHIBIT_ARRAY_PROPERTY = "exhibitArray";
-    @Deprecated
-    public static final String PAINTING_ARRAY_PROPERTY = "paintingArray";
-
     public static final String GALLERY_ID_PK_COLUMN = "GALLERY_ID";
 
-    public static final Property<String> GALLERY_NAME = new Property<String>("galleryName");
-    public static final Property<List<Exhibit>> EXHIBIT_ARRAY = new Property<List<Exhibit>>("exhibitArray");
-    public static final Property<List<Painting>> PAINTING_ARRAY = new Property<List<Painting>>("paintingArray");
+    public static final Property<String> GALLERY_NAME = new Property<>("galleryName");
+    public static final Property<List<Exhibit>> EXHIBIT_ARRAY = new Property<>("exhibitArray");
+    public static final Property<List<Painting>> PAINTING_ARRAY = new Property<>("paintingArray");
 
     public void setGalleryName(String galleryName) {
         writeProperty("galleryName", galleryName);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_MeaningfulGeneratedColumnTestEntity.java
----------------------------------------------------------------------
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 15ed46b..3bac978 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
@@ -13,15 +13,10 @@ public abstract class _MeaningfulGeneratedColumnTestEntity extends CayenneDataOb
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String GENERATED_COLUMN_PROPERTY = "generatedColumn";
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-
     public static final String GENERATED_COLUMN_PK_COLUMN = "GENERATED_COLUMN";
 
-    public static final Property<Integer> GENERATED_COLUMN = new Property<Integer>("generatedColumn");
-    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<Integer> GENERATED_COLUMN = new Property<>("generatedColumn");
+    public static final Property<String> NAME = new Property<>("name");
 
     public void setGeneratedColumn(Integer generatedColumn) {
         writeProperty("generatedColumn", generatedColumn);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_NullTestEntity.java
----------------------------------------------------------------------
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 7e39391..5c0b608 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
@@ -13,12 +13,9 @@ public abstract class _NullTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<String> NAME = new Property<>("name");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting.java
----------------------------------------------------------------------
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 1911f2a..9ba62d7 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
@@ -18,27 +18,14 @@ public abstract class _Painting extends ArtDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ESTIMATED_PRICE_PROPERTY = "estimatedPrice";
-    @Deprecated
-    public static final String PAINTING_DESCRIPTION_PROPERTY = "paintingDescription";
-    @Deprecated
-    public static final String PAINTING_TITLE_PROPERTY = "paintingTitle";
-    @Deprecated
-    public static final String TO_ARTIST_PROPERTY = "toArtist";
-    @Deprecated
-    public static final String TO_GALLERY_PROPERTY = "toGallery";
-    @Deprecated
-    public static final String TO_PAINTING_INFO_PROPERTY = "toPaintingInfo";
-
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
-    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<BigDecimal>("estimatedPrice");
-    public static final Property<String> PAINTING_DESCRIPTION = new Property<String>("paintingDescription");
-    public static final Property<String> PAINTING_TITLE = new Property<String>("paintingTitle");
-    public static final Property<Artist> TO_ARTIST = new Property<Artist>("toArtist");
-    public static final Property<Gallery> TO_GALLERY = new Property<Gallery>("toGallery");
-    public static final Property<PaintingInfo> TO_PAINTING_INFO = new Property<PaintingInfo>("toPaintingInfo");
+    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<>("estimatedPrice");
+    public static final Property<String> PAINTING_DESCRIPTION = new Property<>("paintingDescription");
+    public static final Property<String> PAINTING_TITLE = new Property<>("paintingTitle");
+    public static final Property<Artist> TO_ARTIST = new Property<>("toArtist");
+    public static final Property<Gallery> TO_GALLERY = new Property<>("toGallery");
+    public static final Property<PaintingInfo> TO_PAINTING_INFO = new Property<>("toPaintingInfo");
 
     public void setEstimatedPrice(BigDecimal estimatedPrice) {
         writeProperty("estimatedPrice", estimatedPrice);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Painting1.java
----------------------------------------------------------------------
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 bc53670..a7165e1 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
@@ -16,18 +16,11 @@ public abstract class _Painting1 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ESTIMATED_PRICE_PROPERTY = "estimatedPrice";
-    @Deprecated
-    public static final String PAINTING_TITLE_PROPERTY = "paintingTitle";
-    @Deprecated
-    public static final String TO_ARTIST_PROPERTY = "toArtist";
-
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
-    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<BigDecimal>("estimatedPrice");
-    public static final Property<String> PAINTING_TITLE = new Property<String>("paintingTitle");
-    public static final Property<Artist> TO_ARTIST = new Property<Artist>("toArtist");
+    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<>("estimatedPrice");
+    public static final Property<String> PAINTING_TITLE = new Property<>("paintingTitle");
+    public static final Property<Artist> TO_ARTIST = new Property<>("toArtist");
 
     public void setEstimatedPrice(BigDecimal estimatedPrice) {
         writeProperty("estimatedPrice", estimatedPrice);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_PaintingInfo.java
----------------------------------------------------------------------
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 dfd1251..f2f8062 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
@@ -14,18 +14,11 @@ public abstract class _PaintingInfo extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String IMAGE_BLOB_PROPERTY = "imageBlob";
-    @Deprecated
-    public static final String TEXT_REVIEW_PROPERTY = "textReview";
-    @Deprecated
-    public static final String PAINTING_PROPERTY = "painting";
-
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
-    public static final Property<byte[]> IMAGE_BLOB = new Property<byte[]>("imageBlob");
-    public static final Property<String> TEXT_REVIEW = new Property<String>("textReview");
-    public static final Property<Painting> PAINTING = new Property<Painting>("painting");
+    public static final Property<byte[]> IMAGE_BLOB = new Property<>("imageBlob");
+    public static final Property<String> TEXT_REVIEW = new Property<>("textReview");
+    public static final Property<Painting> PAINTING = new Property<>("painting");
 
     public void setImageBlob(byte[] imageBlob) {
         writeProperty("imageBlob", imageBlob);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROArtist.java
----------------------------------------------------------------------
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 a2e54a8..3ecf3d2 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
@@ -17,18 +17,11 @@ public abstract class _ROArtist extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ARTIST_NAME_PROPERTY = "artistName";
-    @Deprecated
-    public static final String DATE_OF_BIRTH_PROPERTY = "dateOfBirth";
-    @Deprecated
-    public static final String PAINTING_ARRAY_PROPERTY = "paintingArray";
-
     public static final String ARTIST_ID_PK_COLUMN = "ARTIST_ID";
 
-    public static final Property<String> ARTIST_NAME = new Property<String>("artistName");
-    public static final Property<Date> DATE_OF_BIRTH = new Property<Date>("dateOfBirth");
-    public static final Property<List<Painting>> PAINTING_ARRAY = new Property<List<Painting>>("paintingArray");
+    public static final Property<String> ARTIST_NAME = new Property<>("artistName");
+    public static final Property<Date> DATE_OF_BIRTH = new Property<>("dateOfBirth");
+    public static final Property<List<Painting>> PAINTING_ARRAY = new Property<>("paintingArray");
 
     public String getArtistName() {
         return (String)readProperty("artistName");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_ROPainting.java
----------------------------------------------------------------------
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 33e8be3..41f3d7c 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
@@ -16,18 +16,11 @@ public abstract class _ROPainting extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ESTIMATED_PRICE_PROPERTY = "estimatedPrice";
-    @Deprecated
-    public static final String PAINTING_TITLE_PROPERTY = "paintingTitle";
-    @Deprecated
-    public static final String TO_ARTIST_PROPERTY = "toArtist";
-
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
-    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<BigDecimal>("estimatedPrice");
-    public static final Property<String> PAINTING_TITLE = new Property<String>("paintingTitle");
-    public static final Property<Artist> TO_ARTIST = new Property<Artist>("toArtist");
+    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<>("estimatedPrice");
+    public static final Property<String> PAINTING_TITLE = new Property<>("paintingTitle");
+    public static final Property<Artist> TO_ARTIST = new Property<>("toArtist");
 
     public BigDecimal getEstimatedPrice() {
         return (BigDecimal)readProperty("estimatedPrice");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_RWCompoundPainting.java
----------------------------------------------------------------------
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 43eb976..9246823 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
@@ -15,18 +15,11 @@ public abstract class _RWCompoundPainting extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ESTIMATED_PRICE_PROPERTY = "estimatedPrice";
-    @Deprecated
-    public static final String PAINTING_TITLE_PROPERTY = "paintingTitle";
-    @Deprecated
-    public static final String TEXT_REVIEW_PROPERTY = "textReview";
-
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
-    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<BigDecimal>("estimatedPrice");
-    public static final Property<String> PAINTING_TITLE = new Property<String>("paintingTitle");
-    public static final Property<String> TEXT_REVIEW = new Property<String>("textReview");
+    public static final Property<BigDecimal> ESTIMATED_PRICE = new Property<>("estimatedPrice");
+    public static final Property<String> PAINTING_TITLE = new Property<>("paintingTitle");
+    public static final Property<String> TEXT_REVIEW = new Property<>("textReview");
 
     public void setEstimatedPrice(BigDecimal estimatedPrice) {
         writeProperty("estimatedPrice", estimatedPrice);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/aa962a89/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_SubPainting.java
----------------------------------------------------------------------
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 d46cb3e..160926d 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
@@ -13,12 +13,9 @@ public abstract class _SubPainting extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String PAINTING_TITLE_PROPERTY = "paintingTitle";
-
     public static final String PAINTING_ID_PK_COLUMN = "PAINTING_ID";
 
-    public static final Property<String> PAINTING_TITLE = new Property<String>("paintingTitle");
+    public static final Property<String> PAINTING_TITLE = new Property<>("paintingTitle");
 
     public void setPaintingTitle(String paintingTitle) {
         writeProperty("paintingTitle", paintingTitle);


[05/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
CAY-2176 Java 7 diamond class generation templates

* regenerated unit tests with the new templates and no String properties
* cleaned up String property refs in unit tests
* removing server-side Persistent tests (objects that do not inherit from CayenneDataObject)


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

Branch: refs/heads/master
Commit: 92616348ff1f7f15548b6191b2331746badee667
Parents: 48a3502
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Dec 18 19:18:18 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Dec 18 20:44:14 2016 +0300

----------------------------------------------------------------------
 .../cayenne/remote/LightSuperClassIT.java       | 99 --------------------
 .../apache/cayenne/CDOMapRelationshipIT.java    |  2 +-
 .../CayenneDataObjectSetToManyMapIT.java        |  4 +-
 .../access/SingleTableInheritanceIT.java        | 37 +++-----
 .../map/EntityResolverClassDescriptorIT.java    |  4 +-
 ...ryPrefetchRouterActionQualifiedEntityIT.java | 12 +--
 .../cayenne/testdo/db1/auto/_CrossdbM1E1.java   | 25 ++---
 .../cayenne/testdo/db2/auto/_CrossdbM2E1.java   | 17 ++--
 .../cayenne/testdo/db2/auto/_CrossdbM2E2.java   | 21 +++--
 .../auto/_AbstractPerson.java                   | 23 +++--
 .../inheritance_people/auto/_Address.java       | 15 +--
 .../inheritance_people/auto/_ClientCompany.java | 17 ++--
 .../auto/_CustomerRepresentative.java           | 15 +--
 .../inheritance_people/auto/_Department.java    | 23 +++--
 .../inheritance_people/auto/_Employee.java      | 23 +++--
 .../inheritance_people/auto/_Manager.java       | 11 ++-
 .../inheritance_people/auto/_PersonNotes.java   | 15 +--
 .../testdo/lifecycles/auto/_Lifecycles.java     |  9 +-
 .../testdo/lob/auto/_BlobTestEntity.java        |  5 +-
 .../testdo/lob/auto/_ClobTestEntity.java        |  9 +-
 .../testdo/lob/auto/_ClobTestRelation.java      | 13 +--
 .../testdo/lob/auto/_NClobTestEntity.java       | 30 +-----
 .../testdo/locking/auto/_LockingHelper.java     | 15 +--
 .../locking/auto/_RelLockingTestEntity.java     | 23 +++--
 .../locking/auto/_SimpleLockingTestEntity.java  | 15 +--
 .../testdo/map_to_many/auto/_IdMapToMany.java   | 15 +--
 .../map_to_many/auto/_IdMapToManyTarget.java    | 11 ++-
 .../testdo/map_to_many/auto/_MapToMany.java     | 15 +--
 .../map_to_many/auto/_MapToManyTarget.java      | 15 +--
 .../meaningful_pk/auto/_MeaningfulPKDep.java    |  9 +-
 .../meaningful_pk/auto/_MeaningfulPKTest1.java  | 13 +--
 .../meaningful_pk/auto/_MeaningfulPk.java       |  9 +-
 .../testdo/misc_types/auto/_ArraysEntity.java   | 17 +---
 .../misc_types/auto/_CharacterEntity.java       |  5 +-
 .../misc_types/auto/_SerializableEntity.java    |  5 +-
 .../auto/_MixedPersistenceStrategy.java         | 13 +--
 .../auto/_MixedPersistenceStrategy2.java        |  9 +-
 .../cayenne/testdo/mt/auto/_MtTable1.java       | 23 +++--
 .../testdo/mt/auto/_MtTable1Subclass1.java      |  5 +-
 .../testdo/mt/auto/_MtTable1Subclass2.java      |  5 +-
 .../cayenne/testdo/mt/auto/_MtTable2.java       | 21 +++--
 .../cayenne/testdo/mt/auto/_MtTable3.java       | 29 +++---
 .../cayenne/testdo/mt/auto/_MtTable4.java       | 11 ++-
 .../cayenne/testdo/mt/auto/_MtTable5.java       | 11 ++-
 .../testdo/no_pk/auto/_NoPkTestEntity.java      |  5 +-
 .../numeric_types/auto/_BigDecimalEntity.java   |  5 +-
 .../numeric_types/auto/_BigIntegerEntity.java   |  5 +-
 .../auto/_BitNumberTestEntity.java              |  5 +-
 .../numeric_types/auto/_BitTestEntity.java      |  5 +-
 .../numeric_types/auto/_BooleanTestEntity.java  |  5 +-
 .../numeric_types/auto/_DecimalPKTest1.java     |  9 +-
 .../auto/_DecimalPKTestEntity.java              |  9 +-
 .../testdo/numeric_types/auto/_LongEntity.java  |  5 +-
 .../numeric_types/auto/_SmallintTestEntity.java |  5 +-
 .../numeric_types/auto/_TinyintTestEntity.java  |  5 +-
 .../testdo/oneway/auto/_OnewayTable1.java       |  2 +-
 .../testdo/oneway/auto/_OnewayTable2.java       |  9 +-
 .../testdo/oneway/auto/_OnewayTable3.java       |  5 +-
 .../testdo/oneway/auto/_OnewayTable4.java       |  2 +-
 .../cayenne/testdo/persistent/Continent.java    | 25 -----
 .../cayenne/testdo/persistent/Country.java      | 25 -----
 .../testdo/persistent/auto/_Continent.java      | 64 -------------
 .../testdo/persistent/auto/_Country.java        | 56 -----------
 .../primitive/auto/_PrimitivesTestEntity.java   |  9 +-
 .../cayenne/unit/di/server/CayenneProjects.java |  1 -
 .../cayenne/unit/di/server/SchemaBuilder.java   |  2 +-
 .../src/test/resources/cayenne-persistent.xml   |  4 -
 .../src/test/resources/persistent.map.xml       | 32 -------
 68 files changed, 325 insertions(+), 697 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-client/src/test/java/org/apache/cayenne/remote/LightSuperClassIT.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/remote/LightSuperClassIT.java b/cayenne-client/src/test/java/org/apache/cayenne/remote/LightSuperClassIT.java
deleted file mode 100644
index 29818a2..0000000
--- a/cayenne-client/src/test/java/org/apache/cayenne/remote/LightSuperClassIT.java
+++ /dev/null
@@ -1,99 +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
- *
- *    http://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.
- ****************************************************************/
-package org.apache.cayenne.remote;
-
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.query.RefreshQuery;
-import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.remote.service.LocalConnection;
-import org.apache.cayenne.testdo.persistent.Continent;
-import org.apache.cayenne.testdo.persistent.Country;
-import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-import java.util.Arrays;
-import java.util.Collection;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Test for entities that are implemented in same class on client and server
- */
-@UseServerRuntime(CayenneProjects.PERSISTENT_PROJECT)
-@RunWith(value=Parameterized.class)
-public class LightSuperClassIT extends RemoteCayenneCase {
-
-    private boolean server;
-
-    @Parameters
-    public static Collection<Object[]> data() {
-        return Arrays.asList(new Object[][]{
-                {LocalConnection.HESSIAN_SERIALIZATION, true},
-                {LocalConnection.JAVA_SERIALIZATION, true},
-                {LocalConnection.NO_SERIALIZATION, true},
-                {LocalConnection.NO_SERIALIZATION, false},
-        });
-    }
-
-    public LightSuperClassIT(int serializationPolicy, boolean server) {
-        super.serializationPolicy = serializationPolicy;
-        this.server = server;
-    }
-
-    private ObjectContext createContext() {
-        if (server) {
-            return serverContext;
-        }
-        else {
-            return createROPContext();
-        }
-    }
-
-    @Test
-    public void testServer() throws Exception {
-        ObjectContext context = createContext();
-        Continent continent = context.newObject(Continent.class);
-        continent.setName("Europe");
-
-        Country country = new Country();
-        context.registerNewObject(country);
-
-        // TODO: setting property before object creation does not work on ROP (CAY-1320)
-        country.setName("Russia");
-
-        country.setContinent(continent);
-        assertEquals(continent.getCountries().size(), 1);
-
-        context.commitChanges();
-
-        context.deleteObjects(country);
-        assertEquals(continent.getCountries().size(), 0);
-        continent.setName("Australia");
-
-        context.commitChanges();
-        context.performQuery(new RefreshQuery());
-
-        assertEquals(context.performQuery(new SelectQuery(Country.class)).size(), 0);
-        assertEquals(context.performQuery(new SelectQuery(Continent.class)).size(), 1);
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
index 4451d8d..d5e2690 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
@@ -137,7 +137,7 @@ public class CDOMapRelationshipIT extends ServerCase {
 
         SelectQuery query = new SelectQuery(MapToMany.class, ExpressionFactory
                 .matchDbExp(MapToMany.ID_PK_COLUMN, new Integer(1)));
-        query.addPrefetch(MapToMany.TARGETS_PROPERTY);
+        query.addPrefetch(MapToMany.TARGETS.disjoint());
         MapToMany o1 = (MapToMany) Cayenne.objectForQuery(context, query);
 
         Map targets = o1.getTargets();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapIT.java
index 427fd8c..0ea80e9 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapIT.java
@@ -83,10 +83,10 @@ public class CayenneDataObjectSetToManyMapIT extends ServerCase {
 		createTestDataSet();
 		
 		 MapToMany o1 = Cayenne.objectForPK(context, MapToMany.class, 1);
-		 assertTrue (o1.readProperty(MapToMany.TARGETS_PROPERTY) instanceof Map);
+		 assertTrue (o1.readProperty(MapToMany.TARGETS.getName()) instanceof Map);
 		 boolean catchedSomething = false;
 		 try {
-			 o1.setToManyTarget(MapToMany.TARGETS_PROPERTY, new ArrayList<MapToMany>(0), true);
+			 o1.setToManyTarget(MapToMany.TARGETS.getName(), new ArrayList<MapToMany>(0), true);
 		 } catch(RuntimeException e) {
 			 catchedSomething = true;
 		 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
index c84572f..6e11ccf 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
@@ -19,19 +19,8 @@
 
 package org.apache.cayenne.access;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import java.sql.Types;
-import java.util.Arrays;
-import java.util.List;
-
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.query.SortOrder;
@@ -50,6 +39,12 @@ import org.apache.cayenne.unit.di.server.PeopleProjectCase;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.sql.Types;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.junit.Assert.*;
+
 public class SingleTableInheritanceIT extends PeopleProjectCase {
 
     @Inject
@@ -135,8 +130,7 @@ public class SingleTableInheritanceIT extends PeopleProjectCase {
 
         // fetch on leaf, but match on a super attribute
         SelectQuery select = new SelectQuery(Manager.class);
-        select.andQualifier(ExpressionFactory
-                .matchExp(AbstractPerson.NAME_PROPERTY, "E2"));
+        select.andQualifier(AbstractPerson.NAME.eq("E2"));
 
         List<Manager> results = context.performQuery(select);
         assertEquals(1, results.size());
@@ -149,9 +143,8 @@ public class SingleTableInheritanceIT extends PeopleProjectCase {
 
         // fetch on leaf, but match on a super attribute
         SelectQuery select = new SelectQuery(Employee.class);
-        select.addPrefetch(Employee.TO_DEPARTMENT_PROPERTY);
-        select.andQualifier(ExpressionFactory
-                .matchExp(AbstractPerson.NAME_PROPERTY, "E2"));
+        select.addPrefetch(Employee.TO_DEPARTMENT.disjoint());
+        select.andQualifier(AbstractPerson.NAME.eq("E2"));
 
         List<Manager> results = context.performQuery(select);
         assertEquals(1, results.size());
@@ -213,8 +206,7 @@ public class SingleTableInheritanceIT extends PeopleProjectCase {
                 "INSERT INTO PERSON_NOTES (ID, NOTES, PERSON_ID) VALUES (4, 'BB', 3)"));
 
         SelectQuery query = new SelectQuery(AbstractPerson.class);
-        query.addPrefetch(AbstractPerson.NOTES_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        query.addPrefetch(AbstractPerson.NOTES.joint());
 
         final AbstractPerson person = (AbstractPerson) Cayenne.objectForQuery(
                 context,
@@ -253,7 +245,7 @@ public class SingleTableInheritanceIT extends PeopleProjectCase {
                 "INSERT INTO PERSON_NOTES (ID, NOTES, PERSON_ID) VALUES (4, 'BB', 3)"));
 
         SelectQuery query = new SelectQuery(AbstractPerson.class);
-        query.addPrefetch(AbstractPerson.NOTES_PROPERTY);
+        query.addPrefetch(AbstractPerson.NOTES.disjoint());
 
         final AbstractPerson person = (AbstractPerson) Cayenne.objectForQuery(
                 context,
@@ -292,8 +284,8 @@ public class SingleTableInheritanceIT extends PeopleProjectCase {
                 "INSERT INTO PERSON_NOTES (ID, NOTES, PERSON_ID) VALUES (3, 'BB', 2)"));
 
         SelectQuery query = new SelectQuery(PersonNotes.class);
-        query.addPrefetch(PersonNotes.PERSON_PROPERTY);
-        query.addOrdering(PersonNotes.NOTES_PROPERTY, SortOrder.ASCENDING);
+        query.addPrefetch(PersonNotes.PERSON.disjoint());
+        query.addOrdering(PersonNotes.NOTES.asc());
 
         List<PersonNotes> notes = context.performQuery(query);
         assertEquals(2, notes.size());
@@ -319,8 +311,7 @@ public class SingleTableInheritanceIT extends PeopleProjectCase {
                 "INSERT INTO PERSON_NOTES (ID, NOTES, PERSON_ID) VALUES (3, 'AA', 3)"));
 
         SelectQuery query = new SelectQuery(PersonNotes.class);
-        query.addPrefetch(PersonNotes.PERSON_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        query.addPrefetch(PersonNotes.PERSON.joint());
 
         final PersonNotes note = (PersonNotes) Cayenne.objectForQuery(context, query);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/map/EntityResolverClassDescriptorIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/map/EntityResolverClassDescriptorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/map/EntityResolverClassDescriptorIT.java
index bdb5fa4..5a29717 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/map/EntityResolverClassDescriptorIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/map/EntityResolverClassDescriptorIT.java
@@ -91,14 +91,14 @@ public class EntityResolverClassDescriptorIT extends ServerCase {
         ClassDescriptor descriptor = resolver.getClassDescriptor("MtTable1");
         assertNotNull(descriptor);
 
-        PropertyDescriptor p = descriptor.getProperty(MtTable1.TABLE2ARRAY_PROPERTY);
+        PropertyDescriptor p = descriptor.getProperty(MtTable1.TABLE2ARRAY.getName());
         assertTrue(p instanceof ArcProperty);
 
         ClassDescriptor target = ((ArcProperty) p).getTargetDescriptor();
         assertNotNull(target);
         assertSame(resolver.getClassDescriptor("MtTable2"), target);
         assertNotNull(((ArcProperty) p).getComplimentaryReverseArc());
-        assertEquals(MtTable2.TABLE1_PROPERTY, ((ArcProperty) p)
+        assertEquals(MtTable2.TABLE1.getName(), ((ArcProperty) p)
                 .getComplimentaryReverseArc()
                 .getName());
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionQualifiedEntityIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionQualifiedEntityIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionQualifiedEntityIT.java
index b9754e9..dd2291a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionQualifiedEntityIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionQualifiedEntityIT.java
@@ -19,9 +19,6 @@
 
 package org.apache.cayenne.query;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
@@ -33,6 +30,9 @@ import org.apache.cayenne.testdo.inheritance_people.Manager;
 import org.apache.cayenne.unit.di.server.PeopleProjectCase;
 import org.junit.Test;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
 public class SelectQueryPrefetchRouterActionQualifiedEntityIT extends PeopleProjectCase {
 
     @Inject
@@ -43,7 +43,7 @@ public class SelectQueryPrefetchRouterActionQualifiedEntityIT extends PeopleProj
         ObjEntity departmentEntity = resolver.getObjEntity(Department.class);
         SelectQuery q = new SelectQuery(Employee.class, ExpressionFactory.matchExp("name", "abc"));
 
-        q.addPrefetch(Employee.TO_DEPARTMENT_PROPERTY);
+        q.addPrefetch(Employee.TO_DEPARTMENT.disjoint());
 
         SelectQueryPrefetchRouterAction action = new SelectQueryPrefetchRouterAction();
 
@@ -54,7 +54,7 @@ public class SelectQueryPrefetchRouterActionQualifiedEntityIT extends PeopleProj
         PrefetchSelectQuery prefetch = (PrefetchSelectQuery) router.getQueries().get(0);
 
         assertSame(departmentEntity, prefetch.getRoot());
-        assertEquals(Expression.fromString("db:employees.NAME = 'abc' " + "and (db:employees.PERSON_TYPE = 'EE' "
+        assertEquals(ExpressionFactory.exp("db:employees.NAME = 'abc' and (db:employees.PERSON_TYPE = 'EE' "
                 + "or db:employees.PERSON_TYPE = 'EM')"), prefetch.getQualifier());
     }
 
@@ -63,7 +63,7 @@ public class SelectQueryPrefetchRouterActionQualifiedEntityIT extends PeopleProj
         ObjEntity departmentEntity = resolver.getObjEntity(Department.class);
         SelectQuery q = new SelectQuery(Manager.class, ExpressionFactory.matchExp("name", "abc"));
 
-        q.addPrefetch(Employee.TO_DEPARTMENT_PROPERTY);
+        q.addPrefetch(Employee.TO_DEPARTMENT.disjoint());
 
         SelectQueryPrefetchRouterAction action = new SelectQueryPrefetchRouterAction();
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/db1/auto/_CrossdbM1E1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/db1/auto/_CrossdbM1E1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/db1/auto/_CrossdbM1E1.java
index 23f6de7..e3bec81 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/db1/auto/_CrossdbM1E1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/db1/auto/_CrossdbM1E1.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.db1.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.db2.CrossdbM2E1;
 import org.apache.cayenne.testdo.db2.CrossdbM2E2;
 
@@ -14,40 +15,42 @@ import org.apache.cayenne.testdo.db2.CrossdbM2E2;
  */
 public abstract class _CrossdbM1E1 extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String FLATTENED_PROPERTY = "flattened";
-    public static final String LIST_OF_M2E2_PROPERTY = "listOfM2E2";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<CrossdbM2E1>> FLATTENED = new Property<>("flattened");
+    public static final Property<List<CrossdbM2E2>> LIST_OF_M2E2 = new Property<>("listOfM2E2");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToFlattened(CrossdbM2E1 obj) {
-        addToManyTarget(FLATTENED_PROPERTY, obj, true);
+        addToManyTarget("flattened", obj, true);
     }
     public void removeFromFlattened(CrossdbM2E1 obj) {
-        removeToManyTarget(FLATTENED_PROPERTY, obj, true);
+        removeToManyTarget("flattened", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<CrossdbM2E1> getFlattened() {
-        return (List<CrossdbM2E1>)readProperty(FLATTENED_PROPERTY);
+        return (List<CrossdbM2E1>)readProperty("flattened");
     }
 
 
     public void addToListOfM2E2(CrossdbM2E2 obj) {
-        addToManyTarget(LIST_OF_M2E2_PROPERTY, obj, true);
+        addToManyTarget("listOfM2E2", obj, true);
     }
     public void removeFromListOfM2E2(CrossdbM2E2 obj) {
-        removeToManyTarget(LIST_OF_M2E2_PROPERTY, obj, true);
+        removeToManyTarget("listOfM2E2", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<CrossdbM2E2> getListOfM2E2() {
-        return (List<CrossdbM2E2>)readProperty(LIST_OF_M2E2_PROPERTY);
+        return (List<CrossdbM2E2>)readProperty("listOfM2E2");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E1.java
index 7096a6f..1f2c5a0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E1.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.db2.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.db2.CrossdbM2E2;
 
 /**
@@ -13,27 +14,29 @@ import org.apache.cayenne.testdo.db2.CrossdbM2E2;
  */
 public abstract class _CrossdbM2E1 extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String LIST_OF_M2E2_PROPERTY = "listOfM2E2";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<CrossdbM2E2>> LIST_OF_M2E2 = new Property<>("listOfM2E2");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToListOfM2E2(CrossdbM2E2 obj) {
-        addToManyTarget(LIST_OF_M2E2_PROPERTY, obj, true);
+        addToManyTarget("listOfM2E2", obj, true);
     }
     public void removeFromListOfM2E2(CrossdbM2E2 obj) {
-        removeToManyTarget(LIST_OF_M2E2_PROPERTY, obj, true);
+        removeToManyTarget("listOfM2E2", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<CrossdbM2E2> getListOfM2E2() {
-        return (List<CrossdbM2E2>)readProperty(LIST_OF_M2E2_PROPERTY);
+        return (List<CrossdbM2E2>)readProperty("listOfM2E2");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E2.java
index 7e20915..4ba67f9 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/db2/auto/_CrossdbM2E2.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.db2.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.db1.CrossdbM1E1;
 import org.apache.cayenne.testdo.db2.CrossdbM2E1;
 
@@ -12,34 +13,36 @@ import org.apache.cayenne.testdo.db2.CrossdbM2E1;
  */
 public abstract class _CrossdbM2E2 extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String TO_M1E1_PROPERTY = "toM1E1";
-    public static final String TO_M2E1_PROPERTY = "toM2E1";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<CrossdbM1E1> TO_M1E1 = new Property<>("toM1E1");
+    public static final Property<CrossdbM2E1> TO_M2E1 = new Property<>("toM2E1");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setToM1E1(CrossdbM1E1 toM1E1) {
-        setToOneTarget(TO_M1E1_PROPERTY, toM1E1, true);
+        setToOneTarget("toM1E1", toM1E1, true);
     }
 
     public CrossdbM1E1 getToM1E1() {
-        return (CrossdbM1E1)readProperty(TO_M1E1_PROPERTY);
+        return (CrossdbM1E1)readProperty("toM1E1");
     }
 
 
     public void setToM2E1(CrossdbM2E1 toM2E1) {
-        setToOneTarget(TO_M2E1_PROPERTY, toM2E1, true);
+        setToOneTarget("toM2E1", toM2E1, true);
     }
 
     public CrossdbM2E1 getToM2E1() {
-        return (CrossdbM2E1)readProperty(TO_M2E1_PROPERTY);
+        return (CrossdbM2E1)readProperty("toM2E1");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_AbstractPerson.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_AbstractPerson.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_AbstractPerson.java
index 6dd1f1b..a266f29 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_AbstractPerson.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_AbstractPerson.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.inheritance_people.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_people.PersonNotes;
 
 /**
@@ -13,35 +14,37 @@ import org.apache.cayenne.testdo.inheritance_people.PersonNotes;
  */
 public abstract class _AbstractPerson extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String PERSON_TYPE_PROPERTY = "personType";
-    public static final String NOTES_PROPERTY = "notes";
+    private static final long serialVersionUID = 1L; 
 
     public static final String PERSON_ID_PK_COLUMN = "PERSON_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<String> PERSON_TYPE = new Property<>("personType");
+    public static final Property<List<PersonNotes>> NOTES = new Property<>("notes");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setPersonType(String personType) {
-        writeProperty(PERSON_TYPE_PROPERTY, personType);
+        writeProperty("personType", personType);
     }
     public String getPersonType() {
-        return (String)readProperty(PERSON_TYPE_PROPERTY);
+        return (String)readProperty("personType");
     }
 
     public void addToNotes(PersonNotes obj) {
-        addToManyTarget(NOTES_PROPERTY, obj, true);
+        addToManyTarget("notes", obj, true);
     }
     public void removeFromNotes(PersonNotes obj) {
-        removeToManyTarget(NOTES_PROPERTY, obj, true);
+        removeToManyTarget("notes", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<PersonNotes> getNotes() {
-        return (List<PersonNotes>)readProperty(NOTES_PROPERTY);
+        return (List<PersonNotes>)readProperty("notes");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Address.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Address.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Address.java
index f7856da..b63919b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Address.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Address.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.inheritance_people.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_people.Employee;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.inheritance_people.Employee;
  */
 public abstract class _Address extends CayenneDataObject {
 
-    public static final String CITY_PROPERTY = "city";
-    public static final String TO_EMPLOYEE_PROPERTY = "toEmployee";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ADDRESS_ID_PK_COLUMN = "ADDRESS_ID";
 
+    public static final Property<String> CITY = new Property<>("city");
+    public static final Property<Employee> TO_EMPLOYEE = new Property<>("toEmployee");
+
     public void setCity(String city) {
-        writeProperty(CITY_PROPERTY, city);
+        writeProperty("city", city);
     }
     public String getCity() {
-        return (String)readProperty(CITY_PROPERTY);
+        return (String)readProperty("city");
     }
 
     public void setToEmployee(Employee toEmployee) {
-        setToOneTarget(TO_EMPLOYEE_PROPERTY, toEmployee, true);
+        setToOneTarget("toEmployee", toEmployee, true);
     }
 
     public Employee getToEmployee() {
-        return (Employee)readProperty(TO_EMPLOYEE_PROPERTY);
+        return (Employee)readProperty("toEmployee");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_ClientCompany.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_ClientCompany.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_ClientCompany.java
index ae9a6be..4cb6679 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_ClientCompany.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_ClientCompany.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.inheritance_people.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_people.CustomerRepresentative;
 
 /**
@@ -13,27 +14,29 @@ import org.apache.cayenne.testdo.inheritance_people.CustomerRepresentative;
  */
 public abstract class _ClientCompany extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String REPRESENTATIVES_PROPERTY = "representatives";
+    private static final long serialVersionUID = 1L; 
 
     public static final String CLIENT_COMPANY_ID_PK_COLUMN = "CLIENT_COMPANY_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<CustomerRepresentative>> REPRESENTATIVES = new Property<>("representatives");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToRepresentatives(CustomerRepresentative obj) {
-        addToManyTarget(REPRESENTATIVES_PROPERTY, obj, true);
+        addToManyTarget("representatives", obj, true);
     }
     public void removeFromRepresentatives(CustomerRepresentative obj) {
-        removeToManyTarget(REPRESENTATIVES_PROPERTY, obj, true);
+        removeToManyTarget("representatives", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<CustomerRepresentative> getRepresentatives() {
-        return (List<CustomerRepresentative>)readProperty(REPRESENTATIVES_PROPERTY);
+        return (List<CustomerRepresentative>)readProperty("representatives");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_CustomerRepresentative.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_CustomerRepresentative.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_CustomerRepresentative.java
index e7c17a9..f1dcd19 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_CustomerRepresentative.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_CustomerRepresentative.java
@@ -1,5 +1,6 @@
 package org.apache.cayenne.testdo.inheritance_people.auto;
 
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_people.AbstractPerson;
 import org.apache.cayenne.testdo.inheritance_people.ClientCompany;
 
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.inheritance_people.ClientCompany;
  */
 public abstract class _CustomerRepresentative extends AbstractPerson {
 
-    public static final String CLIENT_CONTACT_TYPE_PROPERTY = "clientContactType";
-    public static final String TO_CLIENT_COMPANY_PROPERTY = "toClientCompany";
+    private static final long serialVersionUID = 1L; 
 
     public static final String PERSON_ID_PK_COLUMN = "PERSON_ID";
 
+    public static final Property<String> CLIENT_CONTACT_TYPE = new Property<>("clientContactType");
+    public static final Property<ClientCompany> TO_CLIENT_COMPANY = new Property<>("toClientCompany");
+
     public void setClientContactType(String clientContactType) {
-        writeProperty(CLIENT_CONTACT_TYPE_PROPERTY, clientContactType);
+        writeProperty("clientContactType", clientContactType);
     }
     public String getClientContactType() {
-        return (String)readProperty(CLIENT_CONTACT_TYPE_PROPERTY);
+        return (String)readProperty("clientContactType");
     }
 
     public void setToClientCompany(ClientCompany toClientCompany) {
-        setToOneTarget(TO_CLIENT_COMPANY_PROPERTY, toClientCompany, true);
+        setToOneTarget("toClientCompany", toClientCompany, true);
     }
 
     public ClientCompany getToClientCompany() {
-        return (ClientCompany)readProperty(TO_CLIENT_COMPANY_PROPERTY);
+        return (ClientCompany)readProperty("toClientCompany");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Department.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Department.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Department.java
index d76ca1c..db0af61 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Department.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Department.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.inheritance_people.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_people.Employee;
 import org.apache.cayenne.testdo.inheritance_people.Manager;
 
@@ -14,37 +15,39 @@ import org.apache.cayenne.testdo.inheritance_people.Manager;
  */
 public abstract class _Department extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String EMPLOYEES_PROPERTY = "employees";
-    public static final String TO_MANAGER_PROPERTY = "toManager";
+    private static final long serialVersionUID = 1L; 
 
     public static final String DEPARTMENT_ID_PK_COLUMN = "DEPARTMENT_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<Employee>> EMPLOYEES = new Property<>("employees");
+    public static final Property<Manager> TO_MANAGER = new Property<>("toManager");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToEmployees(Employee obj) {
-        addToManyTarget(EMPLOYEES_PROPERTY, obj, true);
+        addToManyTarget("employees", obj, true);
     }
     public void removeFromEmployees(Employee obj) {
-        removeToManyTarget(EMPLOYEES_PROPERTY, obj, true);
+        removeToManyTarget("employees", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<Employee> getEmployees() {
-        return (List<Employee>)readProperty(EMPLOYEES_PROPERTY);
+        return (List<Employee>)readProperty("employees");
     }
 
 
     public void setToManager(Manager toManager) {
-        setToOneTarget(TO_MANAGER_PROPERTY, toManager, true);
+        setToOneTarget("toManager", toManager, true);
     }
 
     public Manager getToManager() {
-        return (Manager)readProperty(TO_MANAGER_PROPERTY);
+        return (Manager)readProperty("toManager");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Employee.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Employee.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Employee.java
index a1533c3..3f84d2e 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Employee.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Employee.java
@@ -2,6 +2,7 @@ package org.apache.cayenne.testdo.inheritance_people.auto;
 
 import java.util.List;
 
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_people.AbstractPerson;
 import org.apache.cayenne.testdo.inheritance_people.Address;
 import org.apache.cayenne.testdo.inheritance_people.Department;
@@ -14,37 +15,39 @@ import org.apache.cayenne.testdo.inheritance_people.Department;
  */
 public abstract class _Employee extends AbstractPerson {
 
-    public static final String SALARY_PROPERTY = "salary";
-    public static final String ADDRESSES_PROPERTY = "addresses";
-    public static final String TO_DEPARTMENT_PROPERTY = "toDepartment";
+    private static final long serialVersionUID = 1L; 
 
     public static final String PERSON_ID_PK_COLUMN = "PERSON_ID";
 
+    public static final Property<Float> SALARY = new Property<>("salary");
+    public static final Property<List<Address>> ADDRESSES = new Property<>("addresses");
+    public static final Property<Department> TO_DEPARTMENT = new Property<>("toDepartment");
+
     public void setSalary(Float salary) {
-        writeProperty(SALARY_PROPERTY, salary);
+        writeProperty("salary", salary);
     }
     public Float getSalary() {
-        return (Float)readProperty(SALARY_PROPERTY);
+        return (Float)readProperty("salary");
     }
 
     public void addToAddresses(Address obj) {
-        addToManyTarget(ADDRESSES_PROPERTY, obj, true);
+        addToManyTarget("addresses", obj, true);
     }
     public void removeFromAddresses(Address obj) {
-        removeToManyTarget(ADDRESSES_PROPERTY, obj, true);
+        removeToManyTarget("addresses", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<Address> getAddresses() {
-        return (List<Address>)readProperty(ADDRESSES_PROPERTY);
+        return (List<Address>)readProperty("addresses");
     }
 
 
     public void setToDepartment(Department toDepartment) {
-        setToOneTarget(TO_DEPARTMENT_PROPERTY, toDepartment, true);
+        setToOneTarget("toDepartment", toDepartment, true);
     }
 
     public Department getToDepartment() {
-        return (Department)readProperty(TO_DEPARTMENT_PROPERTY);
+        return (Department)readProperty("toDepartment");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Manager.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Manager.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Manager.java
index eaec130..939aa27 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Manager.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_Manager.java
@@ -2,6 +2,7 @@ package org.apache.cayenne.testdo.inheritance_people.auto;
 
 import java.util.List;
 
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_people.Department;
 import org.apache.cayenne.testdo.inheritance_people.Employee;
 
@@ -13,19 +14,21 @@ import org.apache.cayenne.testdo.inheritance_people.Employee;
  */
 public abstract class _Manager extends Employee {
 
-    public static final String MANAGED_DEPARTMENTS_PROPERTY = "managedDepartments";
+    private static final long serialVersionUID = 1L; 
 
     public static final String PERSON_ID_PK_COLUMN = "PERSON_ID";
 
+    public static final Property<List<Department>> MANAGED_DEPARTMENTS = new Property<>("managedDepartments");
+
     public void addToManagedDepartments(Department obj) {
-        addToManyTarget(MANAGED_DEPARTMENTS_PROPERTY, obj, true);
+        addToManyTarget("managedDepartments", obj, true);
     }
     public void removeFromManagedDepartments(Department obj) {
-        removeToManyTarget(MANAGED_DEPARTMENTS_PROPERTY, obj, true);
+        removeToManyTarget("managedDepartments", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<Department> getManagedDepartments() {
-        return (List<Department>)readProperty(MANAGED_DEPARTMENTS_PROPERTY);
+        return (List<Department>)readProperty("managedDepartments");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_PersonNotes.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_PersonNotes.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_PersonNotes.java
index 67e6711..de096d6 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_PersonNotes.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/inheritance_people/auto/_PersonNotes.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.inheritance_people.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.inheritance_people.AbstractPerson;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.inheritance_people.AbstractPerson;
  */
 public abstract class _PersonNotes extends CayenneDataObject {
 
-    public static final String NOTES_PROPERTY = "notes";
-    public static final String PERSON_PROPERTY = "person";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<String> NOTES = new Property<>("notes");
+    public static final Property<AbstractPerson> PERSON = new Property<>("person");
+
     public void setNotes(String notes) {
-        writeProperty(NOTES_PROPERTY, notes);
+        writeProperty("notes", notes);
     }
     public String getNotes() {
-        return (String)readProperty(NOTES_PROPERTY);
+        return (String)readProperty("notes");
     }
 
     public void setPerson(AbstractPerson person) {
-        setToOneTarget(PERSON_PROPERTY, person, true);
+        setToOneTarget("person", person, true);
     }
 
     public AbstractPerson getPerson() {
-        return (AbstractPerson)readProperty(PERSON_PROPERTY);
+        return (AbstractPerson)readProperty("person");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_Lifecycles.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_Lifecycles.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_Lifecycles.java
index a101cd9..abf3e71 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_Lifecycles.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_Lifecycles.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.lifecycles.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 
 /**
  * Class _Lifecycles was generated by Cayenne.
@@ -10,15 +11,17 @@ import org.apache.cayenne.CayenneDataObject;
  */
 public abstract class _Lifecycles extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_BlobTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_BlobTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_BlobTestEntity.java
index 458574c..d62cb5b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_BlobTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_BlobTestEntity.java
@@ -13,12 +13,9 @@ public abstract class _BlobTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BLOB_COL_PROPERTY = "blobCol";
-
     public static final String BLOB_TEST_ID_PK_COLUMN = "BLOB_TEST_ID";
 
-    public static final Property<byte[]> BLOB_COL = new Property<byte[]>("blobCol");
+    public static final Property<byte[]> BLOB_COL = new Property<>("blobCol");
 
     public void setBlobCol(byte[] blobCol) {
         writeProperty("blobCol", blobCol);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestEntity.java
index ad745fe..a449327 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestEntity.java
@@ -16,15 +16,10 @@ public abstract class _ClobTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String CLOB_COL_PROPERTY = "clobCol";
-    @Deprecated
-    public static final String CLOB_VALUE_PROPERTY = "clobValue";
-
     public static final String CLOB_TEST_ID_PK_COLUMN = "CLOB_TEST_ID";
 
-    public static final Property<String> CLOB_COL = new Property<String>("clobCol");
-    public static final Property<List<ClobTestRelation>> CLOB_VALUE = new Property<List<ClobTestRelation>>("clobValue");
+    public static final Property<String> CLOB_COL = new Property<>("clobCol");
+    public static final Property<List<ClobTestRelation>> CLOB_VALUE = new Property<>("clobValue");
 
     public void setClobCol(String clobCol) {
         writeProperty("clobCol", clobCol);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestRelation.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestRelation.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestRelation.java
index 0316e78..4c58284 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestRelation.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_ClobTestRelation.java
@@ -14,18 +14,11 @@ public abstract class _ClobTestRelation extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String ID_PROPERTY = "id";
-    @Deprecated
-    public static final String VALUE_PROPERTY = "value";
-    @Deprecated
-    public static final String CLOB_ID_PROPERTY = "clobId";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Integer> ID = new Property<Integer>("id");
-    public static final Property<Integer> VALUE = new Property<Integer>("value");
-    public static final Property<ClobTestEntity> CLOB_ID = new Property<ClobTestEntity>("clobId");
+    public static final Property<Integer> ID = new Property<>("id");
+    public static final Property<Integer> VALUE = new Property<>("value");
+    public static final Property<ClobTestEntity> CLOB_ID = new Property<>("clobId");
 
     public void setId(Integer id) {
         writeProperty("id", id);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_NClobTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_NClobTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_NClobTestEntity.java
index 08c45ca..dee289b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_NClobTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lob/auto/_NClobTestEntity.java
@@ -1,29 +1,7 @@
-/*
- * 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
- *
- * http://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.
- */
-
 package org.apache.cayenne.testdo.lob.auto;
 
 import org.apache.cayenne.CayenneDataObject;
 import org.apache.cayenne.exp.Property;
-import org.apache.cayenne.testdo.lob.ClobTestRelation;
-
-import java.util.List;
 
 /**
  * Class _NClobTestEntity was generated by Cayenne.
@@ -35,15 +13,9 @@ public abstract class _NClobTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NCLOB_COL_PROPERTY = "nclobCol";
-    @Deprecated
-    public static final String NCLOB_VALUE_PROPERTY = "nclobValue";
-
     public static final String NCLOB_TEST_ID_PK_COLUMN = "NCLOB_TEST_ID";
 
-    public static final Property<String> NCLOB_COL = new Property<String>("nclobCol");
-    public static final Property<List<ClobTestRelation>> NCLOB_VALUE = new Property<List<ClobTestRelation>>("nclobValue");
+    public static final Property<String> NCLOB_COL = new Property<>("nclobCol");
 
     public void setNclobCol(String nclobCol) {
         writeProperty("nclobCol", nclobCol);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_LockingHelper.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_LockingHelper.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_LockingHelper.java
index ad67e69..9a56e57 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_LockingHelper.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_LockingHelper.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.locking.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.locking.RelLockingTestEntity;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.locking.RelLockingTestEntity;
  */
 public abstract class _LockingHelper extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String TO_REL_LOCKING_TEST_PROPERTY = "toRelLockingTest";
+    private static final long serialVersionUID = 1L; 
 
     public static final String LOCKING_HELPER_ID_PK_COLUMN = "LOCKING_HELPER_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<RelLockingTestEntity> TO_REL_LOCKING_TEST = new Property<>("toRelLockingTest");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setToRelLockingTest(RelLockingTestEntity toRelLockingTest) {
-        setToOneTarget(TO_REL_LOCKING_TEST_PROPERTY, toRelLockingTest, true);
+        setToOneTarget("toRelLockingTest", toRelLockingTest, true);
     }
 
     public RelLockingTestEntity getToRelLockingTest() {
-        return (RelLockingTestEntity)readProperty(TO_REL_LOCKING_TEST_PROPERTY);
+        return (RelLockingTestEntity)readProperty("toRelLockingTest");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_RelLockingTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_RelLockingTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_RelLockingTestEntity.java
index b036b36..6de77eb 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_RelLockingTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_RelLockingTestEntity.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.locking.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.locking.LockingHelper;
 import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
 
@@ -14,37 +15,39 @@ import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
  */
 public abstract class _RelLockingTestEntity extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String LOCKING_HELPERS_PROPERTY = "lockingHelpers";
-    public static final String TO_SIMPLE_LOCKING_TEST_PROPERTY = "toSimpleLockingTest";
+    private static final long serialVersionUID = 1L; 
 
     public static final String REL_LOCKING_TEST_ID_PK_COLUMN = "REL_LOCKING_TEST_ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<LockingHelper>> LOCKING_HELPERS = new Property<>("lockingHelpers");
+    public static final Property<SimpleLockingTestEntity> TO_SIMPLE_LOCKING_TEST = new Property<>("toSimpleLockingTest");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToLockingHelpers(LockingHelper obj) {
-        addToManyTarget(LOCKING_HELPERS_PROPERTY, obj, true);
+        addToManyTarget("lockingHelpers", obj, true);
     }
     public void removeFromLockingHelpers(LockingHelper obj) {
-        removeToManyTarget(LOCKING_HELPERS_PROPERTY, obj, true);
+        removeToManyTarget("lockingHelpers", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<LockingHelper> getLockingHelpers() {
-        return (List<LockingHelper>)readProperty(LOCKING_HELPERS_PROPERTY);
+        return (List<LockingHelper>)readProperty("lockingHelpers");
     }
 
 
     public void setToSimpleLockingTest(SimpleLockingTestEntity toSimpleLockingTest) {
-        setToOneTarget(TO_SIMPLE_LOCKING_TEST_PROPERTY, toSimpleLockingTest, true);
+        setToOneTarget("toSimpleLockingTest", toSimpleLockingTest, true);
     }
 
     public SimpleLockingTestEntity getToSimpleLockingTest() {
-        return (SimpleLockingTestEntity)readProperty(TO_SIMPLE_LOCKING_TEST_PROPERTY);
+        return (SimpleLockingTestEntity)readProperty("toSimpleLockingTest");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_SimpleLockingTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_SimpleLockingTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_SimpleLockingTestEntity.java
index 6540c31..478d673 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_SimpleLockingTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/locking/auto/_SimpleLockingTestEntity.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.locking.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 
 /**
  * Class _SimpleLockingTestEntity was generated by Cayenne.
@@ -10,23 +11,25 @@ import org.apache.cayenne.CayenneDataObject;
  */
 public abstract class _SimpleLockingTestEntity extends CayenneDataObject {
 
-    public static final String DESCRIPTION_PROPERTY = "description";
-    public static final String NAME_PROPERTY = "name";
+    private static final long serialVersionUID = 1L; 
 
     public static final String LOCKING_TEST_ID_PK_COLUMN = "LOCKING_TEST_ID";
 
+    public static final Property<String> DESCRIPTION = new Property<>("description");
+    public static final Property<String> NAME = new Property<>("name");
+
     public void setDescription(String description) {
-        writeProperty(DESCRIPTION_PROPERTY, description);
+        writeProperty("description", description);
     }
     public String getDescription() {
-        return (String)readProperty(DESCRIPTION_PROPERTY);
+        return (String)readProperty("description");
     }
 
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToMany.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToMany.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToMany.java
index bbe1040..5bae36d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToMany.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToMany.java
@@ -1,10 +1,11 @@
 package org.apache.cayenne.testdo.map_to_many.auto;
 
+import java.util.Map;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.map_to_many.IdMapToManyTarget;
 
-import java.util.Map;
-
 /**
  * Class _IdMapToMany was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -13,19 +14,21 @@ import java.util.Map;
  */
 public abstract class _IdMapToMany extends CayenneDataObject {
 
-    public static final String TARGETS_PROPERTY = "targets";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Map<Object, IdMapToManyTarget>> TARGETS = new Property<>("targets");
+
     public void addToTargets(IdMapToManyTarget obj) {
-        addToManyTarget(TARGETS_PROPERTY, obj, true);
+        addToManyTarget("targets", obj, true);
     }
     public void removeFromTargets(IdMapToManyTarget obj) {
-        removeToManyTarget(TARGETS_PROPERTY, obj, true);
+        removeToManyTarget("targets", obj, true);
     }
     @SuppressWarnings("unchecked")
     public Map<Object, IdMapToManyTarget> getTargets() {
-        return (Map<Object, IdMapToManyTarget>)readProperty(TARGETS_PROPERTY);
+        return (Map<Object, IdMapToManyTarget>)readProperty("targets");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToManyTarget.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToManyTarget.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToManyTarget.java
index b03e6c0..7291476 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToManyTarget.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_IdMapToManyTarget.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.map_to_many.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.map_to_many.IdMapToMany;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.map_to_many.IdMapToMany;
  */
 public abstract class _IdMapToManyTarget extends CayenneDataObject {
 
-    public static final String MAP_TO_MANY_PROPERTY = "mapToMany";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public void setMapToMany(IdMapToMany idMapToMany) {
-        setToOneTarget(MAP_TO_MANY_PROPERTY, idMapToMany, true);
+    public static final Property<IdMapToMany> MAP_TO_MANY = new Property<>("mapToMany");
+
+    public void setMapToMany(IdMapToMany mapToMany) {
+        setToOneTarget("mapToMany", mapToMany, true);
     }
 
     public IdMapToMany getMapToMany() {
-        return (IdMapToMany)readProperty(MAP_TO_MANY_PROPERTY);
+        return (IdMapToMany)readProperty("mapToMany");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToMany.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToMany.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToMany.java
index 063c365..6c93b25 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToMany.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToMany.java
@@ -1,10 +1,11 @@
 package org.apache.cayenne.testdo.map_to_many.auto;
 
+import java.util.Map;
+
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.map_to_many.MapToManyTarget;
 
-import java.util.Map;
-
 /**
  * Class _MapToMany was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -13,19 +14,21 @@ import java.util.Map;
  */
 public abstract class _MapToMany extends CayenneDataObject {
 
-    public static final String TARGETS_PROPERTY = "targets";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Map<String, MapToManyTarget>> TARGETS = new Property<>("targets");
+
     public void addToTargets(MapToManyTarget obj) {
-        addToManyTarget(TARGETS_PROPERTY, obj, true);
+        addToManyTarget("targets", obj, true);
     }
     public void removeFromTargets(MapToManyTarget obj) {
-        removeToManyTarget(TARGETS_PROPERTY, obj, true);
+        removeToManyTarget("targets", obj, true);
     }
     @SuppressWarnings("unchecked")
     public Map<String, MapToManyTarget> getTargets() {
-        return (Map<String, MapToManyTarget>)readProperty(TARGETS_PROPERTY);
+        return (Map<String, MapToManyTarget>)readProperty("targets");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToManyTarget.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToManyTarget.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToManyTarget.java
index 66c8e90..a1e34c5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToManyTarget.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/map_to_many/auto/_MapToManyTarget.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.map_to_many.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.map_to_many.MapToMany;
 
 /**
@@ -11,24 +12,26 @@ import org.apache.cayenne.testdo.map_to_many.MapToMany;
  */
 public abstract class _MapToManyTarget extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String MAP_TO_MANY_PROPERTY = "mapToMany";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<MapToMany> MAP_TO_MANY = new Property<>("mapToMany");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setMapToMany(MapToMany mapToMany) {
-        setToOneTarget(MAP_TO_MANY_PROPERTY, mapToMany, true);
+        setToOneTarget("mapToMany", mapToMany, true);
     }
 
     public MapToMany getMapToMany() {
-        return (MapToMany)readProperty(MAP_TO_MANY_PROPERTY);
+        return (MapToMany)readProperty("mapToMany");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKDep.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKDep.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKDep.java
index d390a37..2e475ee 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKDep.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKDep.java
@@ -14,15 +14,10 @@ public abstract class _MeaningfulPKDep extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String DESCR_PROPERTY = "descr";
-    @Deprecated
-    public static final String TO_MEANINGFUL_PK_PROPERTY = "toMeaningfulPK";
-
     public static final String PK_ATTRIBUTE_PK_COLUMN = "PK_ATTRIBUTE";
 
-    public static final Property<String> DESCR = new Property<String>("descr");
-    public static final Property<MeaningfulPKTest1> TO_MEANINGFUL_PK = new Property<MeaningfulPKTest1>("toMeaningfulPK");
+    public static final Property<String> DESCR = new Property<>("descr");
+    public static final Property<MeaningfulPKTest1> TO_MEANINGFUL_PK = new Property<>("toMeaningfulPK");
 
     public void setDescr(String descr) {
         writeProperty("descr", descr);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKTest1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKTest1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKTest1.java
index ea6ab42..7c21f13 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKTest1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPKTest1.java
@@ -16,18 +16,11 @@ public abstract class _MeaningfulPKTest1 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String DESCR_PROPERTY = "descr";
-    @Deprecated
-    public static final String PK_ATTRIBUTE_PROPERTY = "pkAttribute";
-    @Deprecated
-    public static final String MEANINGFUL_PKDEP_ARRAY_PROPERTY = "meaningfulPKDepArray";
-
     public static final String PK_ATTRIBUTE_PK_COLUMN = "PK_ATTRIBUTE";
 
-    public static final Property<String> DESCR = new Property<String>("descr");
-    public static final Property<Integer> PK_ATTRIBUTE = new Property<Integer>("pkAttribute");
-    public static final Property<List<MeaningfulPKDep>> MEANINGFUL_PKDEP_ARRAY = new Property<List<MeaningfulPKDep>>("meaningfulPKDepArray");
+    public static final Property<String> DESCR = new Property<>("descr");
+    public static final Property<Integer> PK_ATTRIBUTE = new Property<>("pkAttribute");
+    public static final Property<List<MeaningfulPKDep>> MEANINGFUL_PKDEP_ARRAY = new Property<>("meaningfulPKDepArray");
 
     public void setDescr(String descr) {
         writeProperty("descr", descr);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPk.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPk.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPk.java
index 8e53c38..690f577 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPk.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/meaningful_pk/auto/_MeaningfulPk.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.meaningful_pk.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 
 /**
  * Class _MeaningfulPk was generated by Cayenne.
@@ -10,15 +11,17 @@ import org.apache.cayenne.CayenneDataObject;
  */
 public abstract class _MeaningfulPk extends CayenneDataObject {
 
-    public static final String PK_PROPERTY = "pk";
+    private static final long serialVersionUID = 1L; 
 
     public static final String PK_PK_COLUMN = "PK";
 
+    public static final Property<String> PK = new Property<>("pk");
+
     public void setPk(String pk) {
-        writeProperty(PK_PROPERTY, pk);
+        writeProperty("pk", pk);
     }
     public String getPk() {
-        return (String)readProperty(PK_PROPERTY);
+        return (String)readProperty("pk");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_ArraysEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_ArraysEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_ArraysEntity.java
index dae0afc..556f2ee 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_ArraysEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_ArraysEntity.java
@@ -13,21 +13,12 @@ public abstract class _ArraysEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BYTE_ARRAY_PROPERTY = "byteArray";
-    @Deprecated
-    public static final String BYTE_WRAPPER_ARRAY_PROPERTY = "byteWrapperArray";
-    @Deprecated
-    public static final String CHAR_ARRAY_PROPERTY = "charArray";
-    @Deprecated
-    public static final String CHAR_WRAPPER_ARRAY_PROPERTY = "charWrapperArray";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<byte[]> BYTE_ARRAY = new Property<byte[]>("byteArray");
-    public static final Property<Byte[]> BYTE_WRAPPER_ARRAY = new Property<Byte[]>("byteWrapperArray");
-    public static final Property<char[]> CHAR_ARRAY = new Property<char[]>("charArray");
-    public static final Property<Character[]> CHAR_WRAPPER_ARRAY = new Property<Character[]>("charWrapperArray");
+    public static final Property<byte[]> BYTE_ARRAY = new Property<>("byteArray");
+    public static final Property<Byte[]> BYTE_WRAPPER_ARRAY = new Property<>("byteWrapperArray");
+    public static final Property<char[]> CHAR_ARRAY = new Property<>("charArray");
+    public static final Property<Character[]> CHAR_WRAPPER_ARRAY = new Property<>("charWrapperArray");
 
     public void setByteArray(byte[] byteArray) {
         writeProperty("byteArray", byteArray);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_CharacterEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_CharacterEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_CharacterEntity.java
index 50b240a..d7e6fe4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_CharacterEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_CharacterEntity.java
@@ -13,12 +13,9 @@ public abstract class _CharacterEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String CHARACTER_FIELD_PROPERTY = "characterField";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Character> CHARACTER_FIELD = new Property<Character>("characterField");
+    public static final Property<Character> CHARACTER_FIELD = new Property<>("characterField");
 
     public void setCharacterField(Character characterField) {
         writeProperty("characterField", characterField);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_SerializableEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_SerializableEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_SerializableEntity.java
index 5d1efa1..dca787e 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_SerializableEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/misc_types/auto/_SerializableEntity.java
@@ -14,12 +14,9 @@ public abstract class _SerializableEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String SERIALIZABLE_FIELD_PROPERTY = "serializableField";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<MockSerializable> SERIALIZABLE_FIELD = new Property<MockSerializable>("serializableField");
+    public static final Property<MockSerializable> SERIALIZABLE_FIELD = new Property<>("serializableField");
 
     public void setSerializableField(MockSerializable serializableField) {
         writeProperty("serializableField", serializableField);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy.java
index c664ff2..27bc489 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy.java
@@ -16,18 +16,11 @@ public abstract class _MixedPersistenceStrategy extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String DESCRIPTION_PROPERTY = "description";
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String DETAILS_PROPERTY = "details";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> DESCRIPTION = new Property<String>("description");
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<List<MixedPersistenceStrategy2>> DETAILS = new Property<List<MixedPersistenceStrategy2>>("details");
+    public static final Property<String> DESCRIPTION = new Property<>("description");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<MixedPersistenceStrategy2>> DETAILS = new Property<>("details");
 
     public void setDescription(String description) {
         writeProperty("description", description);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy2.java
index 0fab028..0fe090b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mixed_persistence_strategy/auto/_MixedPersistenceStrategy2.java
@@ -14,15 +14,10 @@ public abstract class _MixedPersistenceStrategy2 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String MASTER_PROPERTY = "master";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<MixedPersistenceStrategy> MASTER = new Property<MixedPersistenceStrategy>("master");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<MixedPersistenceStrategy> MASTER = new Property<>("master");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1.java
index b81be98..b8292f7 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.mt.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.mt.MtTable2;
 
 /**
@@ -13,35 +14,37 @@ import org.apache.cayenne.testdo.mt.MtTable2;
  */
 public abstract class _MtTable1 extends CayenneDataObject {
 
-    public static final String GLOBAL_ATTRIBUTE1_PROPERTY = "globalAttribute1";
-    public static final String SERVER_ATTRIBUTE1_PROPERTY = "serverAttribute1";
-    public static final String TABLE2ARRAY_PROPERTY = "table2Array";
+    private static final long serialVersionUID = 1L; 
 
     public static final String TABLE1_ID_PK_COLUMN = "TABLE1_ID";
 
+    public static final Property<String> GLOBAL_ATTRIBUTE1 = new Property<>("globalAttribute1");
+    public static final Property<String> SERVER_ATTRIBUTE1 = new Property<>("serverAttribute1");
+    public static final Property<List<MtTable2>> TABLE2ARRAY = new Property<>("table2Array");
+
     public void setGlobalAttribute1(String globalAttribute1) {
-        writeProperty(GLOBAL_ATTRIBUTE1_PROPERTY, globalAttribute1);
+        writeProperty("globalAttribute1", globalAttribute1);
     }
     public String getGlobalAttribute1() {
-        return (String)readProperty(GLOBAL_ATTRIBUTE1_PROPERTY);
+        return (String)readProperty("globalAttribute1");
     }
 
     public void setServerAttribute1(String serverAttribute1) {
-        writeProperty(SERVER_ATTRIBUTE1_PROPERTY, serverAttribute1);
+        writeProperty("serverAttribute1", serverAttribute1);
     }
     public String getServerAttribute1() {
-        return (String)readProperty(SERVER_ATTRIBUTE1_PROPERTY);
+        return (String)readProperty("serverAttribute1");
     }
 
     public void addToTable2Array(MtTable2 obj) {
-        addToManyTarget(TABLE2ARRAY_PROPERTY, obj, true);
+        addToManyTarget("table2Array", obj, true);
     }
     public void removeFromTable2Array(MtTable2 obj) {
-        removeToManyTarget(TABLE2ARRAY_PROPERTY, obj, true);
+        removeToManyTarget("table2Array", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<MtTable2> getTable2Array() {
-        return (List<MtTable2>)readProperty(TABLE2ARRAY_PROPERTY);
+        return (List<MtTable2>)readProperty("table2Array");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/92616348/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass1.java
index 99a609e..0d7efd5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable1Subclass1.java
@@ -11,12 +11,11 @@ import org.apache.cayenne.testdo.mt.MtTable1;
  */
 public abstract class _MtTable1Subclass1 extends MtTable1 {
 
-    @Deprecated
-    public static final String SUBCLASS1ATTRIBUTE1_PROPERTY = "subclass1Attribute1";
+    private static final long serialVersionUID = 1L; 
 
     public static final String TABLE1_ID_PK_COLUMN = "TABLE1_ID";
 
-    public static final Property<String> SUBCLASS1ATTRIBUTE1 = new Property<String>("subclass1Attribute1");
+    public static final Property<String> SUBCLASS1ATTRIBUTE1 = new Property<>("subclass1Attribute1");
 
     public void setSubclass1Attribute1(String subclass1Attribute1) {
         writeProperty("subclass1Attribute1", subclass1Attribute1);


[02/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
CAY-2176 Java 7 diamond class generation templates

* updated cgen templates
* regenerated unit tests with the new templates and no String properties
* cleaned up String property refs in unit tests


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

Branch: refs/heads/master
Commit: bb981ae14325ec1a46ac0cfdab6bab6ca0eb9051
Parents: 832401b
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Dec 18 19:18:18 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Dec 18 20:00:33 2016 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/query/SQLTemplate.java   | 29 +++++++----
 .../cayenne/CayenneDataObjectInContextIT.java   | 17 ++-----
 .../cayenne/CayenneDataObjectValidationIT.java  |  4 +-
 .../cayenne/DataContextMaxIdQualifierIT.java    |  7 ++-
 .../cayenne/PersistenceByReachabilityIT.java    |  6 +--
 .../apache/cayenne/access/DataContextIT.java    | 41 +++++----------
 .../cayenne/access/DataContextOrderingIT.java   | 18 +++----
 .../cayenne/access/DataContextOuterJoinsIT.java | 46 ++++++++---------
 .../access/DataContextPrefetchExtrasIT.java     |  9 +---
 .../cayenne/access/DataContextPrefetchIT.java   | 52 +++++++++-----------
 .../DataContextPrefetchQualifierOverlapIT.java  | 13 ++---
 .../access/DataContextRefreshQueryIT.java       |  6 +--
 .../cayenne/access/DataContextRefreshingIT.java |  4 +-
 .../access/DataContextSQLTemplateIT.java        |  4 +-
 .../apache/cayenne/access/DataRowUtilsIT.java   | 10 +---
 .../cayenne/access/FlattenedPrefetchIT.java     | 24 +++------
 .../apache/cayenne/access/JointPrefetchIT.java  | 35 +++----------
 .../cayenne/access/NestedDataContextReadIT.java | 13 ++---
 .../access/NestedDataContextWriteIT.java        |  6 +--
 .../access/PrefetchProcessorTreeBuilderIT.java  | 11 ++---
 .../access/SimpleIdIncrementalFaultListIT.java  |  9 +---
 .../SimpleIdIncrementalFaultListPrefetchIT.java |  2 +-
 .../org/apache/cayenne/access/ToManyListIT.java |  4 +-
 .../select/DefaultSelectTranslatorIT.java       | 17 +++----
 .../apache/cayenne/map/MapLoaderLoadTest.java   |  4 +-
 .../query/SelectQueryFetchLimitOrderingIT.java  |  2 +-
 .../SelectQueryPrefetchRouterActionIT.java      |  8 +--
 .../cayenne/query/StatementFetchSizeIT.java     |  2 +-
 .../array_type/auto/_ArrayTestEntity.java       |  2 +-
 .../testdo/binary_pk/auto/_BinaryPKTest1.java   |  9 +---
 .../testdo/binary_pk/auto/_BinaryPKTest2.java   |  9 +---
 .../testdo/compound/auto/_CharFkTestEntity.java |  9 +---
 .../testdo/compound/auto/_CharPkTestEntity.java | 13 ++---
 .../compound/auto/_CompoundFkTestEntity.java    |  9 +---
 .../compound/auto/_CompoundPkTestEntity.java    | 17 ++-----
 .../cayenne/testdo/testmap/auto/_Artist.java    | 19 ++-----
 .../templates/v1_2/client-superclass.vm         |  8 +--
 .../templates/v1_2/embeddable-superclass.vm     |  2 +-
 .../resources/templates/v1_2/singleclass.vm     |  8 +--
 .../main/resources/templates/v1_2/superclass.vm |  8 +--
 .../cayenne/tools/CayenneGeneratorMojoTest.java |  2 +-
 41 files changed, 189 insertions(+), 329 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java
index 62c7a8a..e8db56d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java
@@ -19,16 +19,6 @@
 
 package org.apache.cayenne.query;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeSet;
-
 import org.apache.cayenne.access.QueryEngine;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
@@ -42,6 +32,16 @@ import org.apache.cayenne.util.XMLSerializable;
 import org.apache.commons.collections.IteratorUtils;
 import org.apache.commons.collections.Transformer;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeSet;
+
 /**
  * A query that executes unchanged (except for template preprocessing) "raw" SQL
  * specified by the user. <h3>Template Script</h3>
@@ -672,6 +672,15 @@ public class SQLTemplate extends AbstractQuery implements ParameterizedQuery, XM
 	}
 
 	/**
+	 * Adds a prefetch with specified relationship path to the query.
+	 *
+	 * @since 4.0
+	 */
+	public void addPrefetch(PrefetchTreeNode prefetchElement) {
+		metaData.mergePrefetch(prefetchElement);
+	}
+
+	/**
 	 * @since 1.2
 	 */
 	public void removePrefetch(String prefetch) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectInContextIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectInContextIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectInContextIT.java
index fe39834..a99918c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectInContextIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectInContextIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
@@ -35,13 +34,7 @@ import org.junit.Test;
 
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class CayenneDataObjectInContextIT extends ServerCase {
@@ -213,9 +206,7 @@ public class CayenneDataObjectInContextIT extends ServerCase {
 
         tArtist.insert(7, "m6");
 
-        SelectQuery q = new SelectQuery(Artist.class, ExpressionFactory.matchExp(
-                Artist.ARTIST_NAME_PROPERTY,
-                "m6"));
+        SelectQuery q = new SelectQuery(Artist.class, Artist.ARTIST_NAME.eq("m6"));
 
         List<Artist> artists = context.performQuery(q);
         assertEquals(1, artists.size());
@@ -229,9 +220,7 @@ public class CayenneDataObjectInContextIT extends ServerCase {
 
         tArtist.insert(7, "m6");
 
-        SelectQuery q = new SelectQuery(Artist.class, ExpressionFactory.matchExp(
-                Artist.ARTIST_NAME_PROPERTY,
-                "m6"));
+        SelectQuery q = new SelectQuery(Artist.class, Artist.ARTIST_NAME.eq("m6"));
 
         Artist a1 = (Artist) Cayenne.objectForQuery(context, q);
         Artist a2 = (Artist) Cayenne.objectForQuery(context, q);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java
index 5eebeee..1e4c710 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectValidationIT.java
@@ -87,7 +87,7 @@ public class CayenneDataObjectValidationIT extends ServerCase {
         assertEquals(1, failures.size());
 
         BeanValidationFailure failure = (BeanValidationFailure) failures.get(0);
-        assertEquals(Artist.ARTIST_NAME_PROPERTY, failure.getProperty());
+        assertEquals(Artist.ARTIST_NAME.getName(), failure.getProperty());
 
         // fix the problem and see if it goes away
         artist.setArtistName("aa");
@@ -119,7 +119,7 @@ public class CayenneDataObjectValidationIT extends ServerCase {
         assertEquals(1, failures.size());
 
         BeanValidationFailure failure = (BeanValidationFailure) failures.get(0);
-        assertEquals(Artist.ARTIST_NAME_PROPERTY, failure.getProperty());
+        assertEquals(Artist.ARTIST_NAME.getName(), failure.getProperty());
 
         // fix the problem and see if it goes away
         artist.setArtistName("aa");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java b/cayenne-server/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
index 96c5759..42733b3 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
@@ -92,7 +91,7 @@ public class DataContextMaxIdQualifierIT extends ServerCase {
         runtime.getDataDomain().setMaxIdQualifierSize(10);
         
         final SelectQuery query = new SelectQuery(Artist.class);
-        query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+        query.addPrefetch(Artist.PAINTING_ARRAY.disjointById());
 
         int queriesCount = queryInterceptor.runWithQueryCounter(new UnitTestClosure() {
 
@@ -110,7 +109,7 @@ public class DataContextMaxIdQualifierIT extends ServerCase {
         runtime.getDataDomain().setMaxIdQualifierSize(0);
 
         final SelectQuery query = new SelectQuery(Artist.class);
-        query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+        query.addPrefetch(Artist.PAINTING_ARRAY.disjointById());
 
         int queriesCount = queryInterceptor.runWithQueryCounter(new UnitTestClosure() {
 
@@ -128,7 +127,7 @@ public class DataContextMaxIdQualifierIT extends ServerCase {
         runtime.getDataDomain().setMaxIdQualifierSize(-1);
 
         final SelectQuery query = new SelectQuery(Artist.class);
-        query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+        query.addPrefetch(Artist.PAINTING_ARRAY.disjointById());
 
         int queriesCount = queryInterceptor.runWithQueryCounter(new UnitTestClosure() {
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java b/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
index ad545cb..42d0a22 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
@@ -84,7 +84,7 @@ public class PersistenceByReachabilityIT extends ServerCase {
         // this is the case where exception must be thrown as DataContexts are
         // different
         try {
-            doC2.addToManyTarget(Artist.PAINTING_ARRAY_PROPERTY, doC1, false);
+            doC2.addToManyTarget(Artist.PAINTING_ARRAY.getName(), doC1, false);
             fail("failed to detect relationship between objects in different DataContexts");
         }
         catch (CayenneRuntimeException ex) {
@@ -97,7 +97,7 @@ public class PersistenceByReachabilityIT extends ServerCase {
         Painting transientDO = context.newObject(Painting.class);
 
         Artist persistentDO = new Artist();
-        persistentDO.addToManyTarget(Artist.PAINTING_ARRAY_PROPERTY, transientDO, false);
+        persistentDO.addToManyTarget(Artist.PAINTING_ARRAY.getName(), transientDO, false);
 
         assertEquals(PersistenceState.NEW, transientDO.getPersistenceState());
     }
@@ -107,7 +107,7 @@ public class PersistenceByReachabilityIT extends ServerCase {
         Painting persistentDO = context.newObject(Painting.class);
 
         Artist transientDO = new Artist();
-        transientDO.addToManyTarget(Artist.PAINTING_ARRAY_PROPERTY, persistentDO, false);
+        transientDO.addToManyTarget(Artist.PAINTING_ARRAY.getName(), persistentDO, false);
 
         assertEquals(PersistenceState.NEW, transientDO.getPersistenceState());
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIT.java
index 69a1e79..e5068be 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextIT.java
@@ -31,13 +31,11 @@ import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.query.ObjectIdQuery;
-import org.apache.cayenne.query.Ordering;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.QueryMetadata;
 import org.apache.cayenne.query.QueryRouter;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
@@ -64,19 +62,11 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Matchers.isNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
 
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class DataContextIT extends ServerCase {
@@ -167,8 +157,7 @@ public class DataContextIT extends ServerCase {
 	public void testCurrentSnapshot1() throws Exception {
 		createSingleArtistDataSet();
 
-		SelectQuery query = new SelectQuery(Artist.class, ExpressionFactory.matchExp(Artist.ARTIST_NAME_PROPERTY,
-				"artist1"));
+		SelectQuery query = new SelectQuery(Artist.class, Artist.ARTIST_NAME.eq("artist1"));
 		Artist artist = (Artist) context.performQuery(query).get(0);
 
 		DataRow snapshot = context.currentSnapshot(artist);
@@ -182,8 +171,7 @@ public class DataContextIT extends ServerCase {
 		createSingleArtistDataSet();
 
 		// test null values
-		SelectQuery query = new SelectQuery(Artist.class, ExpressionFactory.matchExp(Artist.ARTIST_NAME_PROPERTY,
-				"artist1"));
+		SelectQuery<Artist> query = new SelectQuery<>(Artist.class, Artist.ARTIST_NAME.eq("artist1"));
 		Artist artist = (Artist) context.performQuery(query).get(0);
 
 		artist.setArtistName(null);
@@ -204,8 +192,7 @@ public class DataContextIT extends ServerCase {
 		createSingleArtistDataSet();
 
 		// test null values
-		SelectQuery query = new SelectQuery(Artist.class, ExpressionFactory.matchExp(Artist.ARTIST_NAME_PROPERTY,
-				"artist1"));
+		SelectQuery query = new SelectQuery(Artist.class, Artist.ARTIST_NAME.eq("artist1"));
 		Artist artist = (Artist) context.performQuery(query).get(0);
 
 		// test FK relationship snapshotting
@@ -235,14 +222,14 @@ public class DataContextIT extends ServerCase {
 		ObjectId eId = new ObjectId("Exhibit", Exhibit.EXHIBIT_ID_PK_COLUMN, 2);
 		Exhibit e = (Exhibit) context.performQuery(new ObjectIdQuery(eId)).get(0);
 
-		assertTrue(e.readPropertyDirectly(Exhibit.TO_GALLERY_PROPERTY) instanceof Fault);
+		assertTrue(e.readPropertyDirectly(Exhibit.TO_GALLERY.getName()) instanceof Fault);
 
 		DataRow snapshot = context.currentSnapshot(e);
 
 		// assert that after taking a snapshot, we have FK in, but the
 		// relationship
 		// is still a Fault
-		assertTrue(e.readPropertyDirectly(Exhibit.TO_GALLERY_PROPERTY) instanceof Fault);
+		assertTrue(e.readPropertyDirectly(Exhibit.TO_GALLERY.getName()) instanceof Fault);
 		assertEquals(new Integer(33002), snapshot.get("GALLERY_ID"));
 	}
 
@@ -331,8 +318,7 @@ public class DataContextIT extends ServerCase {
 		// verify that the result is not messed up
 
 		SelectQuery query = new SelectQuery(Artist.class);
-		Ordering ordering = new Ordering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING_INSENSITIVE);
-		query.addOrdering(ordering);
+		query.addOrdering(Artist.ARTIST_NAME.ascInsensitive());
 		query.setDistinct(true);
 
 		List<Artist> objects = context.performQuery(query);
@@ -558,10 +544,9 @@ public class DataContextIT extends ServerCase {
 	public void testCommitChangesRO2() throws Exception {
 		createArtistsDataSet();
 
-		SelectQuery query = new SelectQuery(ROArtist.class, ExpressionFactory.matchExp(Artist.ARTIST_NAME_PROPERTY,
-				"artist1"));
+		SelectQuery query = new SelectQuery(ROArtist.class, Artist.ARTIST_NAME.eq("artist1"));
 		ROArtist a1 = (ROArtist) context.performQuery(query).get(0);
-		a1.writeProperty(ROArtist.ARTIST_NAME_PROPERTY, "abc");
+		a1.writeProperty(ROArtist.ARTIST_NAME.getName(), "abc");
 
 		try {
 			context.commitChanges();
@@ -577,8 +562,7 @@ public class DataContextIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		SelectQuery query = new SelectQuery(ROArtist.class, ExpressionFactory.matchExp(Artist.ARTIST_NAME_PROPERTY,
-				"artist1"));
+		SelectQuery query = new SelectQuery(ROArtist.class, Artist.ARTIST_NAME.eq("artist1"));
 		ROArtist a1 = (ROArtist) context.performQuery(query).get(0);
 		context.deleteObjects(a1);
 
@@ -595,8 +579,7 @@ public class DataContextIT extends ServerCase {
 	public void testCommitChangesRO4() throws Exception {
 		createArtistsDataSet();
 
-		SelectQuery query = new SelectQuery(ROArtist.class, ExpressionFactory.matchExp(Artist.ARTIST_NAME_PROPERTY,
-				"artist1"));
+		SelectQuery query = new SelectQuery(ROArtist.class, Artist.ARTIST_NAME.eq("artist1"));
 		ROArtist a1 = (ROArtist) context.performQuery(query).get(0);
 
 		Painting painting = context.newObject(Painting.class);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
index a66fd16..524411d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
@@ -19,9 +19,7 @@
 package org.apache.cayenne.access;
 
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
@@ -64,8 +62,8 @@ public class DataContextOrderingIT extends ServerCase {
         context.commitChanges();
 
         SelectQuery query = new SelectQuery(Artist.class);
-        query.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.DESCENDING);
-        query.addOrdering(Artist.DATE_OF_BIRTH_PROPERTY, SortOrder.DESCENDING);
+        query.addOrdering(Artist.ARTIST_NAME.desc());
+        query.addOrdering(Artist.DATE_OF_BIRTH.desc());
 
         List<Artist> list = context.performQuery(query);
         assertEquals(3, list.size());
@@ -105,16 +103,14 @@ public class DataContextOrderingIT extends ServerCase {
 
         context.commitChanges();
 
-        SelectQuery query1 = new SelectQuery(Artist.class);
+        SelectQuery<Artist> query1 = new SelectQuery<>(Artist.class);
 
         // per CAY-1074, adding a to-many join to expression messes up the ordering
-        query1.andQualifier(ExpressionFactory.noMatchExp(
-                Artist.PAINTING_ARRAY_PROPERTY,
-                null));
-        query1.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.DESCENDING);
-        query1.addOrdering(Artist.DATE_OF_BIRTH_PROPERTY, SortOrder.DESCENDING);
+        query1.andQualifier(Artist.PAINTING_ARRAY.ne((List<Painting>) null));
+        query1.addOrdering(Artist.ARTIST_NAME.desc());
+        query1.addOrdering(Artist.DATE_OF_BIRTH.desc());
 
-        List<Artist> list1 = context.performQuery(query1);
+        List<Artist> list1 = query1.select(context);
         assertEquals(2, list1.size());
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
index 5c13490..3842a5f 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
@@ -20,9 +20,7 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
@@ -84,10 +82,9 @@ public class DataContextOuterJoinsIT extends ServerCase {
 		artistGroupHelper.insert(1, 33002);
 		artistGroupHelper.insert(1, 33004);
 
-		SelectQuery missingToManyQuery = new SelectQuery(Artist.class);
-		missingToManyQuery.andQualifier(ExpressionFactory.matchExp(Artist.GROUP_ARRAY_PROPERTY
-				+ Entity.OUTER_JOIN_INDICATOR, null));
-		missingToManyQuery.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+		SelectQuery<Artist> missingToManyQuery = new SelectQuery<>(Artist.class);
+		missingToManyQuery.andQualifier(Artist.GROUP_ARRAY.outer().isNull());
+		missingToManyQuery.addOrdering(Artist.ARTIST_NAME.asc());
 
 		List<Artist> artists = context.performQuery(missingToManyQuery);
 		assertEquals(1, artists.size());
@@ -106,19 +103,17 @@ public class DataContextOuterJoinsIT extends ServerCase {
 		paintingHelper.insert(33002, 33002, "P2");
 
 		SelectQuery missingToManyQuery = new SelectQuery(Artist.class);
-		missingToManyQuery.andQualifier(ExpressionFactory.matchExp(Artist.PAINTING_ARRAY_PROPERTY
-				+ Entity.OUTER_JOIN_INDICATOR, null));
-		missingToManyQuery.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+		missingToManyQuery.andQualifier(Artist.PAINTING_ARRAY.outer().isNull());
+		missingToManyQuery.addOrdering(Artist.ARTIST_NAME.asc());
 
 		List<Artist> artists = context.performQuery(missingToManyQuery);
 		assertEquals(2, artists.size());
 		assertEquals("BB1", artists.get(0).getArtistName());
 
-		SelectQuery mixedConditionQuery = new SelectQuery(Artist.class);
-		mixedConditionQuery.andQualifier(ExpressionFactory.matchExp(Artist.PAINTING_ARRAY_PROPERTY
-				+ Entity.OUTER_JOIN_INDICATOR, null));
-		mixedConditionQuery.orQualifier(ExpressionFactory.matchExp(Artist.ARTIST_NAME_PROPERTY, "AA1"));
-		mixedConditionQuery.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+		SelectQuery<Artist> mixedConditionQuery = new SelectQuery<>(Artist.class);
+		mixedConditionQuery.andQualifier(Artist.PAINTING_ARRAY.outer().isNull());
+		mixedConditionQuery.orQualifier(Artist.ARTIST_NAME.eq("AA1"));
+		mixedConditionQuery.addOrdering(Artist.ARTIST_NAME.asc());
 
 		artists = context.performQuery(mixedConditionQuery);
 		assertEquals(3, artists.size());
@@ -138,21 +133,20 @@ public class DataContextOuterJoinsIT extends ServerCase {
 		paintingHelper.insert(33001, 33001, "P1");
 		paintingHelper.insert(33002, 33002, "P2");
 
-		SelectQuery missingToManyQuery = new SelectQuery(Artist.class);
-		missingToManyQuery.andQualifier(Expression.fromString("paintingArray+ = null"));
-		missingToManyQuery.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+		SelectQuery<Artist> missingToManyQuery = new SelectQuery<>(Artist.class);
+		missingToManyQuery.andQualifier(ExpressionFactory.exp("paintingArray+ = null"));
+		missingToManyQuery.addOrdering(Artist.ARTIST_NAME.asc());
 
-		List<Artist> artists = context.performQuery(missingToManyQuery);
+		List<Artist> artists = missingToManyQuery.select(context);
 		assertEquals(2, artists.size());
 		assertEquals("BB1", artists.get(0).getArtistName());
 
-		SelectQuery mixedConditionQuery = new SelectQuery(Artist.class);
-		mixedConditionQuery.andQualifier(ExpressionFactory.matchExp(Artist.PAINTING_ARRAY_PROPERTY
-				+ Entity.OUTER_JOIN_INDICATOR, null));
-		mixedConditionQuery.orQualifier(ExpressionFactory.matchExp(Artist.ARTIST_NAME_PROPERTY, "AA1"));
-		mixedConditionQuery.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+		SelectQuery<Artist> mixedConditionQuery = new SelectQuery<>(Artist.class);
+		mixedConditionQuery.andQualifier(Artist.PAINTING_ARRAY.outer().isNull());
+		mixedConditionQuery.orQualifier(Artist.ARTIST_NAME.eq("AA1"));
+		mixedConditionQuery.addOrdering(Artist.ARTIST_NAME.asc());
 
-		artists = context.performQuery(mixedConditionQuery);
+		artists = mixedConditionQuery.select(context);
 		assertEquals(3, artists.size());
 		assertEquals("AA1", artists.get(0).getArtistName());
 		assertEquals("BB1", artists.get(1).getArtistName());
@@ -169,11 +163,11 @@ public class DataContextOuterJoinsIT extends ServerCase {
 		paintingHelper.insert(33002, 33002, "P2");
 		paintingHelper.insert(33003, null, "P3");
 
-		SelectQuery query = new SelectQuery(Painting.class);
+		SelectQuery<Painting> query = new SelectQuery<>(Painting.class);
 
 		query.addOrdering("toArtist+.artistName", SortOrder.DESCENDING);
 
-		List<Artist> paintings = context.performQuery(query);
+		List<Painting> paintings = query.select(context);
 		assertEquals(3, paintings.size());
 	}
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
index 77fed66..efea9ec 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
@@ -28,7 +28,6 @@ import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CharFkTestEntity;
@@ -43,11 +42,7 @@ import org.junit.Test;
 
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 /**
  * Test prefetching of various obscure cases.
@@ -108,7 +103,7 @@ public class DataContextPrefetchExtrasIT extends ServerCase {
 
         SelectQuery q = new SelectQuery(CharPkTestEntity.class);
         q.addPrefetch("charFKs");
-        q.addOrdering(CharPkTestEntity.OTHER_COL_PROPERTY, SortOrder.ASCENDING);
+        q.addOrdering(CharPkTestEntity.OTHER_COL.asc());
 
         List<?> pks = context.performQuery(q);
         assertEquals(2, pks.size());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
index aac94bf..4eb2295 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
@@ -19,20 +19,6 @@
 
 package org.apache.cayenne.access;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import java.sql.Timestamp;
-import java.sql.Types;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
@@ -42,7 +28,6 @@ import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
-import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.query.SortOrder;
@@ -61,6 +46,15 @@ import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.sql.Timestamp;
+import java.sql.Types;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class DataContextPrefetchIT extends ServerCase {
 
@@ -186,7 +180,7 @@ public class DataContextPrefetchIT extends ServerCase {
 		params.put("name2", "artist3");
 		Expression e = ExpressionFactory.exp("artistName = $name1 or artistName = $name2");
 		SelectQuery<Artist> q = new SelectQuery("Artist", e.expWithParameters(params));
-		q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+		q.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
 
 		final List<Artist> artists = context.select(q);
 
@@ -197,7 +191,7 @@ public class DataContextPrefetchIT extends ServerCase {
 				assertEquals(2, artists.size());
 
 				Artist a1 = artists.get(0);
-				List<?> toMany = (List<?>) a1.readPropertyDirectly(Artist.PAINTING_ARRAY_PROPERTY);
+				List<?> toMany = (List<?>) a1.readPropertyDirectly(Artist.PAINTING_ARRAY.getName());
 				assertNotNull(toMany);
 				assertFalse(((ValueHolder) toMany).isFault());
 				assertEquals(1, toMany.size());
@@ -206,7 +200,7 @@ public class DataContextPrefetchIT extends ServerCase {
 				assertEquals("p_" + a1.getArtistName(), p1.getPaintingTitle());
 
 				Artist a2 = artists.get(1);
-				List<?> toMany2 = (List<?>) a2.readPropertyDirectly(Artist.PAINTING_ARRAY_PROPERTY);
+				List<?> toMany2 = (List<?>) a2.readPropertyDirectly(Artist.PAINTING_ARRAY.getName());
 				assertNotNull(toMany2);
 				assertFalse(((ValueHolder) toMany2).isFault());
 				assertEquals(1, toMany2.size());
@@ -222,7 +216,7 @@ public class DataContextPrefetchIT extends ServerCase {
 		createTwoArtistsAndTwoPaintingsDataSet();
 
 		SelectQuery q = new SelectQuery(Artist.class);
-		q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+		q.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
 
 		final List<Artist> artists = context.performQuery(q);
 
@@ -256,8 +250,8 @@ public class DataContextPrefetchIT extends ServerCase {
 		createTwoArtistsWithExhibitsDataSet();
 
 		SelectQuery q = new SelectQuery(Artist.class);
-		q.addPrefetch(Artist.ARTIST_EXHIBIT_ARRAY_PROPERTY).setSemantics(PrefetchTreeNode.DISJOINT_PREFETCH_SEMANTICS);
-		q.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+		q.addPrefetch(Artist.ARTIST_EXHIBIT_ARRAY.disjoint());
+		q.addOrdering(Artist.ARTIST_NAME.asc());
 
 		final List<Artist> artists = context.performQuery(q);
 
@@ -268,7 +262,7 @@ public class DataContextPrefetchIT extends ServerCase {
 
 				Artist a1 = artists.get(0);
 				assertEquals("artist2", a1.getArtistName());
-				List<?> toMany = (List<?>) a1.readPropertyDirectly(Artist.ARTIST_EXHIBIT_ARRAY_PROPERTY);
+				List<?> toMany = (List<?>) a1.readPropertyDirectly(Artist.ARTIST_EXHIBIT_ARRAY.getName());
 				assertNotNull(toMany);
 				assertFalse(((ValueHolder) toMany).isFault());
 				assertEquals(2, toMany.size());
@@ -279,7 +273,7 @@ public class DataContextPrefetchIT extends ServerCase {
 
 				Artist a2 = artists.get(1);
 				assertEquals("artist3", a2.getArtistName());
-				List<?> toMany2 = (List<?>) a2.readPropertyDirectly(Artist.ARTIST_EXHIBIT_ARRAY_PROPERTY);
+				List<?> toMany2 = (List<?>) a2.readPropertyDirectly(Artist.ARTIST_EXHIBIT_ARRAY.getName());
 				assertNotNull(toMany2);
 				assertFalse(((ValueHolder) toMany2).isFault());
 				assertEquals(3, toMany2.size());
@@ -341,8 +335,8 @@ public class DataContextPrefetchIT extends ServerCase {
 		createTwoArtistsWithExhibitsDataSet();
 
 		SelectQuery q = new SelectQuery(Artist.class);
-		q.addPrefetch("artistExhibitArray").setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
-		q.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+		q.addPrefetch(Artist.ARTIST_EXHIBIT_ARRAY.joint());
+		q.addOrdering(Artist.ARTIST_NAME.asc());
 
 		final List<Artist> artists = context.performQuery(q);
 
@@ -365,7 +359,7 @@ public class DataContextPrefetchIT extends ServerCase {
 
 				Artist a2 = artists.get(1);
 				assertEquals("artist3", a2.getArtistName());
-				List<?> toMany2 = (List<?>) a2.readPropertyDirectly(Artist.ARTIST_EXHIBIT_ARRAY_PROPERTY);
+				List<?> toMany2 = (List<?>) a2.readPropertyDirectly(Artist.ARTIST_EXHIBIT_ARRAY.getName());
 				assertNotNull(toMany2);
 				assertFalse(((ValueHolder) toMany2).isFault());
 				assertEquals(3, toMany2.size());
@@ -390,8 +384,8 @@ public class DataContextPrefetchIT extends ServerCase {
 		paintingEntity.removeRelationship("toArtist");
 
 		try {
-			SelectQuery q = new SelectQuery(Artist.class);
-			q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+			SelectQuery<Artist> q = new SelectQuery<>(Artist.class);
+			q.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
 			final List<Artist> result = context.performQuery(q);
 
 			queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
@@ -421,7 +415,7 @@ public class DataContextPrefetchIT extends ServerCase {
 
 			SelectQuery q = new SelectQuery(Artist.class);
 			q.setQualifier(ExpressionFactory.matchExp("artistName", "artist2"));
-			q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+			q.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
 
 			final List<Artist> result = context.performQuery(q);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
index bfc0b31..1880507 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
@@ -20,9 +20,7 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
@@ -66,8 +64,7 @@ public class DataContextPrefetchQualifierOverlapIT extends ServerCase {
         SelectQuery query = new SelectQuery(Artist.class);
         query.andQualifier(ExpressionFactory
                 .likeExp("paintingArray.paintingTitle", "AB%"));
-        query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
-                PrefetchTreeNode.DISJOINT_PREFETCH_SEMANTICS);
+        query.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
 
         List<Artist> result = context.performQuery(query);
         assertEquals(1, result.size());
@@ -83,8 +80,7 @@ public class DataContextPrefetchQualifierOverlapIT extends ServerCase {
         SelectQuery query = new SelectQuery(Artist.class);
         query.andQualifier(ExpressionFactory
                 .likeExp("paintingArray.paintingTitle", "AB%"));
-        query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        query.addPrefetch(Artist.PAINTING_ARRAY.joint());
 
         List<Artist> result = context.performQuery(query);
         assertEquals(1, result.size());
@@ -101,11 +97,10 @@ public class DataContextPrefetchQualifierOverlapIT extends ServerCase {
         query.andQualifier(ExpressionFactory.likeExp(
                 "paintingArray+.paintingTitle",
                 "AB%"));
-        query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        query.addPrefetch(Artist.PAINTING_ARRAY.joint());
 
         query.orQualifier(ExpressionFactory.likeExp("artistName", "A%"));
-        query.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+        query.addOrdering(Artist.ARTIST_NAME.asc());
 
         List<Artist> result = context.performQuery(query);
         assertEquals(2, result.size());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
index a4cb41e..b88b269 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
@@ -131,9 +131,9 @@ public class DataContextRefreshQueryIT extends ServerCase {
         assertEquals(PersistenceState.HOLLOW, a1.getPersistenceState());
         assertEquals(PersistenceState.HOLLOW, a2.getPersistenceState());
 
-        assertTrue(((ValueHolder) a1.readProperty(Artist.PAINTING_ARRAY_PROPERTY))
+        assertTrue(((ValueHolder) a1.readProperty(Artist.PAINTING_ARRAY.getName()))
                 .isFault());
-        assertTrue(((ValueHolder) a2.readProperty(Artist.PAINTING_ARRAY_PROPERTY))
+        assertTrue(((ValueHolder) a2.readProperty(Artist.PAINTING_ARRAY.getName()))
                 .isFault());
     }
 
@@ -209,7 +209,7 @@ public class DataContextRefreshQueryIT extends ServerCase {
 
         assertEquals(PersistenceState.HOLLOW, a1.getPersistenceState());
 
-        assertTrue(((ValueHolder) a1.readProperty(Artist.PAINTING_ARRAY_PROPERTY))
+        assertTrue(((ValueHolder) a1.readProperty(Artist.PAINTING_ARRAY.getName()))
                 .isFault());
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
index dc8bc8b..d74a7cd 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
@@ -210,7 +210,7 @@ public class DataContextRefreshingIT extends ServerCase {
 
         // select using relationship prefetching
         SelectQuery query = new SelectQuery(Artist.class);
-        query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+        query.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
         artist = (Artist) context.performQuery(query).get(0);
         assertEquals(0, artist.getPaintingArray().size());
     }
@@ -232,7 +232,7 @@ public class DataContextRefreshingIT extends ServerCase {
         assertEquals(artist.getPaintingArray().size(), 0);
 
         // select using relationship prefetching
-        query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+        query.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
         artist = (Artist) context.performQuery(query).get(0);
         assertEquals(artist.getPaintingArray().size(), 1);
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
index d55111c..724a32f 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
@@ -107,8 +107,8 @@ public class DataContextSQLTemplateIT extends ServerCase {
 
 		EntityResult artistResult = new EntityResult(Artist.class);
 		artistResult.addDbField(Artist.ARTIST_ID_PK_COLUMN, "X");
-		artistResult.addObjectField(Artist.ARTIST_NAME_PROPERTY, "Y");
-		artistResult.addObjectField(Artist.DATE_OF_BIRTH_PROPERTY, "Z");
+		artistResult.addObjectField(Artist.ARTIST_NAME.getName(), "Y");
+		artistResult.addObjectField(Artist.DATE_OF_BIRTH.getName(), "Z");
 
 		SQLResult rsMap = new SQLResult();
 		rsMap.addEntityResult(artistResult);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
index c27f1a0..eae604d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.reflect.ArcProperty;
 import org.apache.cayenne.reflect.ClassDescriptor;
@@ -38,10 +37,7 @@ import org.junit.Test;
 
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class DataRowUtilsIT extends ServerCase {
@@ -119,9 +115,7 @@ public class DataRowUtilsIT extends ServerCase {
         context.commitChanges();
 
         tArtist.insert(119, "artist3");
-        SelectQuery query = new SelectQuery(Artist.class, ExpressionFactory.matchExp(
-                Artist.ARTIST_NAME_PROPERTY,
-                "artist3"));
+        SelectQuery query = new SelectQuery(Artist.class, Artist.ARTIST_NAME.eq("artist3"));
         Artist artist3 = (Artist) context.performQuery(query).get(0);
         assertNotSame(artist3, painting.getToArtist());
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
index 99cfda4..61d4c93 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
@@ -38,15 +37,11 @@ import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.sql.Types;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class FlattenedPrefetchIT extends ServerCase {
@@ -121,7 +116,7 @@ public class FlattenedPrefetchIT extends ServerCase {
         createPrefetchDataSet1();
 
         SelectQuery q = new SelectQuery(Artist.class);
-        q.addPrefetch(Artist.GROUP_ARRAY_PROPERTY);
+        q.addPrefetch(Artist.GROUP_ARRAY.disjoint());
 
         final List<Artist> objects = context.performQuery(q);
 
@@ -156,8 +151,8 @@ public class FlattenedPrefetchIT extends ServerCase {
         createPrefetchDataSet2();
 
         SelectQuery q = new SelectQuery(Painting.class);
-        q.addPrefetch(Painting.TO_ARTIST_PROPERTY);
-        q.addPrefetch(Painting.TO_ARTIST_PROPERTY + '.' + Artist.GROUP_ARRAY_PROPERTY);
+        q.addPrefetch(Painting.TO_ARTIST.disjoint());
+        q.addPrefetch(Painting.TO_ARTIST.dot(Artist.GROUP_ARRAY).disjoint());
 
         final List<Painting> objects = context.performQuery(q);
 
@@ -194,8 +189,7 @@ public class FlattenedPrefetchIT extends ServerCase {
         createPrefetchDataSet1();
 
         SelectQuery q = new SelectQuery(Artist.class);
-        q.addPrefetch(Artist.GROUP_ARRAY_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        q.addPrefetch(Artist.GROUP_ARRAY.joint());
 
         final List<Artist> objects = context.performQuery(q);
 
@@ -231,12 +225,8 @@ public class FlattenedPrefetchIT extends ServerCase {
         createPrefetchDataSet2();
 
         SelectQuery q = new SelectQuery(Painting.class);
-        q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
-        q
-                .addPrefetch(
-                        Painting.TO_ARTIST_PROPERTY + '.' + Artist.GROUP_ARRAY_PROPERTY)
-                .setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        q.addPrefetch(Painting.TO_ARTIST.joint());
+        q.addPrefetch(Painting.TO_ARTIST.dot(Artist.GROUP_ARRAY).joint());
 
         final List<Painting> objects = context.performQuery(q);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
index 2f2e702..0e3267c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
@@ -28,7 +28,6 @@ import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
-import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.query.PrefetchTreeNode;
@@ -56,11 +55,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 /**
  * Tests joint prefetch handling by Cayenne access stack.
@@ -160,8 +155,7 @@ public class JointPrefetchIT extends ServerCase {
         q.setFetchLimit(2);
         q.setFetchOffset(0);
         q.addOrdering("db:ARTIST_ID", SortOrder.ASCENDING);
-        q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        q.addPrefetch(Artist.PAINTING_ARRAY.joint());
 
         final List<?> objects = context.performQuery(q);
 
@@ -253,11 +247,7 @@ public class JointPrefetchIT extends ServerCase {
                         + "FROM ARTIST t0, PAINTING t1 "
                         + "WHERE t0.ARTIST_ID = t1.ARTIST_ID");
 
-        PrefetchTreeNode prefetch = q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
-        assertEquals(
-                "Default semantics for SQLTemplate is assumed to be joint.",
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS,
-                prefetch.getSemantics());
+        q.addPrefetch(Artist.PAINTING_ARRAY.joint());
         q.setFetchingDataRows(false);
 
         final List<?> objects = context.performQuery(q);
@@ -379,8 +369,7 @@ public class JointPrefetchIT extends ServerCase {
 
         // query with to-many joint prefetches
         SelectQuery q = new SelectQuery(Artist.class);
-        q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        q.addPrefetch(Artist.PAINTING_ARRAY.joint());
 
         final List<?> objects = context.performQuery(q);
 
@@ -415,12 +404,9 @@ public class JointPrefetchIT extends ServerCase {
 
         // query with to-many joint prefetches and qualifier that doesn't match
         // prefetch....
-        Expression qualifier = ExpressionFactory.matchExp(
-                Artist.ARTIST_NAME_PROPERTY,
-                "artist1");
+        Expression qualifier = Artist.ARTIST_NAME.eq("artist1");
         SelectQuery q = new SelectQuery(Artist.class, qualifier);
-        q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
-                PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        q.addPrefetch(Artist.PAINTING_ARRAY.joint());
 
         final List<?> objects = context.performQuery(q);
 
@@ -456,13 +442,8 @@ public class JointPrefetchIT extends ServerCase {
         createJointPrefetchDataSet2();
 
         // query with to-many joint prefetches
-        SelectQuery q = new SelectQuery(Artist.class);
-        q
-                .addPrefetch(
-                        Artist.PAINTING_ARRAY_PROPERTY
-                                + "."
-                                + Painting.TO_GALLERY_PROPERTY)
-                .setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+        SelectQuery<Artist> q = new SelectQuery<>(Artist.class);
+        q.addPrefetch(Artist.PAINTING_ARRAY.dot(Painting.TO_GALLERY).joint());
 
         final DataContext context = this.context;
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
index cac997d..6b5f098 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
@@ -170,19 +170,20 @@ public class NestedDataContextReadIT extends ServerCase {
         assertEquals(PersistenceState.DELETED, deleted.getPersistenceState());
         assertEquals(PersistenceState.NEW, _new.getPersistenceState());
 
-        List<?> objects = child.performQuery(new SelectQuery(Artist.class));
+        List<Artist> objects = child.performQuery(new SelectQuery(Artist.class));
         assertEquals("All but NEW object must have been included", 4, objects.size());
 
         Iterator<?> it = objects.iterator();
-        while (it.hasNext()) {
-            DataObject next = (DataObject) it.next();
+
+        for (Artist next : objects) {
             assertEquals(PersistenceState.COMMITTED, next.getPersistenceState());
 
             int id = Cayenne.intPKForObject(next);
             if (id == 33003) {
-                assertEquals("MODDED", next.readProperty(Artist.ARTIST_NAME_PROPERTY));
+                assertEquals("MODDED", next.getArtistName());
             }
         }
+
     }
 
     @Test
@@ -345,8 +346,8 @@ public class NestedDataContextReadIT extends ServerCase {
         final ObjectContext child = runtime.newContext(context);
 
         SelectQuery q = new SelectQuery(Artist.class);
-        q.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
-        q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+        q.addOrdering(Artist.ARTIST_NAME.asc());
+        q.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
 
         final List<?> results = child.performQuery(q);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
index 9c27d5a..bb188ad 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
@@ -194,7 +194,7 @@ public class NestedDataContextWriteIT extends ServerCase {
 
         // make sure we fetch in predictable order
         SelectQuery query = new SelectQuery(Artist.class);
-        query.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+        query.addOrdering(Artist.ARTIST_NAME.asc());
         List<?> objects = childContext.performQuery(query);
 
         assertEquals(4, objects.size());
@@ -269,7 +269,7 @@ public class NestedDataContextWriteIT extends ServerCase {
 
         // make sure we fetch in predictable order
         SelectQuery query = new SelectQuery(Artist.class);
-        query.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+        query.addOrdering(Artist.ARTIST_NAME.asc());
         List<?> objects = childContext.performQuery(query);
 
         assertEquals(4, objects.size());
@@ -306,7 +306,7 @@ public class NestedDataContextWriteIT extends ServerCase {
 
         // make sure we fetch in predictable order
         SelectQuery query = new SelectQuery(Artist.class);
-        query.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+        query.addOrdering(Artist.ARTIST_NAME.asc());
         List<?> objects = childContext.performQuery(query);
 
         assertEquals(4, objects.size());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
index f7814fe..a32e384 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
@@ -131,14 +131,9 @@ public class PrefetchProcessorTreeBuilderIT extends ServerCase {
         Map<Object, Object> extraRows = new HashMap<Object, Object>();
 
         PrefetchTreeNode tree = new PrefetchTreeNode();
-        tree.addPath(Artist.PAINTING_ARRAY_PROPERTY).setPhantom(false);
-        tree.addPath(
-                Artist.PAINTING_ARRAY_PROPERTY
-                        + "."
-                        + Painting.TO_GALLERY_PROPERTY
-                        + "."
-                        + Gallery.EXHIBIT_ARRAY_PROPERTY).setPhantom(false);
-        tree.addPath(Artist.ARTIST_EXHIBIT_ARRAY_PROPERTY).setPhantom(false);
+        tree.addPath(Artist.PAINTING_ARRAY.getName()).setPhantom(false);
+        tree.addPath(Artist.PAINTING_ARRAY.dot(Painting.TO_GALLERY).dot(Gallery.EXHIBIT_ARRAY).getName()).setPhantom(false);
+        tree.addPath(Artist.ARTIST_EXHIBIT_ARRAY.getName()).setPhantom(false);
 
         QueryMetadata metadata = new MockQueryMetadata() {
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
index d4e62bd..09eb017 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.DataObject;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.query.Ordering;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
@@ -39,11 +38,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class SimpleIdIncrementalFaultListIT extends ServerCase {
@@ -214,7 +209,7 @@ public class SimpleIdIncrementalFaultListIT extends ServerCase {
     public void testSort() throws Exception {
         SimpleIdIncrementalFaultList<?> list = prepareList(6);
 
-        new Ordering(Artist.ARTIST_NAME_PROPERTY, SortOrder.DESCENDING).orderList(list);
+        Artist.ARTIST_NAME.desc().orderList(list);
 
         Iterator<?> it = list.iterator();
         Artist previousArtist = null;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
index 6e87b09..2fbef86 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
@@ -101,7 +101,7 @@ public class SimpleIdIncrementalFaultListPrefetchIT extends ServerCase {
 
         createArtistsDataSet();
 
-        Expression e = ExpressionFactory.likeExp(Artist.ARTIST_NAME_PROPERTY, "artist1%");
+        Expression e = Artist.ARTIST_NAME.like("artist1%");
         SelectQuery q = new SelectQuery("Artist", e);
         q.setPageSize(4);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/ToManyListIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/ToManyListIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/ToManyListIT.java
index 715e7e3..7058ba7 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/ToManyListIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/ToManyListIT.java
@@ -45,14 +45,14 @@ public class ToManyListIT extends ServerCase {
 
     private ToManyList createForNewArtist() {
         Artist artist = context.newObject(Artist.class);
-        return new ToManyList(artist, Artist.PAINTING_ARRAY_PROPERTY);
+        return new ToManyList(artist, Artist.PAINTING_ARRAY.getName());
     }
 
     private ToManyList createForExistingArtist() {
         Artist artist = context.newObject(Artist.class);
         artist.setArtistName("aa");
         context.commitChanges();
-        return new ToManyList(artist, Artist.PAINTING_ARRAY_PROPERTY);
+        return new ToManyList(artist, Artist.PAINTING_ARRAY.getName());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
index 612f13a..0608abc 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
@@ -19,14 +19,6 @@
 
 package org.apache.cayenne.access.translator.select;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.Date;
-import java.util.List;
-
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.jdbc.ColumnDescriptor;
@@ -50,6 +42,11 @@ import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.junit.Test;
 
+import java.util.Date;
+import java.util.List;
+
+import static org.junit.Assert.*;
+
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class DefaultSelectTranslatorIT extends ServerCase {
 
@@ -435,7 +432,7 @@ public class DefaultSelectTranslatorIT extends ServerCase {
 	public void testCreateSqlString10() throws Exception {
 		// query with to-many joint prefetches
 		SelectQuery q = new SelectQuery(Artist.class);
-		q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+		q.addPrefetch(Artist.PAINTING_ARRAY.joint());
 
 		DefaultSelectTranslator transl = new DefaultSelectTranslator(q, dataNode.getAdapter(),
 				dataNode.getEntityResolver());
@@ -459,7 +456,7 @@ public class DefaultSelectTranslatorIT extends ServerCase {
 	public void testCreateSqlString11() throws Exception {
 		// query with joint prefetches and other joins
 		SelectQuery q = new SelectQuery(Artist.class, ExpressionFactory.exp("paintingArray.paintingTitle = 'a'"));
-		q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+		q.addPrefetch(Artist.PAINTING_ARRAY.joint());
 
 		DefaultSelectTranslator transl = new DefaultSelectTranslator(q, dataNode.getAdapter(),
 				dataNode.getEntityResolver());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/map/MapLoaderLoadTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/map/MapLoaderLoadTest.java b/cayenne-server/src/test/java/org/apache/cayenne/map/MapLoaderLoadTest.java
index cae7d85..41529da 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/map/MapLoaderLoadTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/map/MapLoaderLoadTest.java
@@ -144,12 +144,12 @@ public class MapLoaderLoadTest {
         assertEquals(2, queryWithOrdering.getOrderings().size());
 
         Ordering artistNameOrdering = queryWithOrdering.getOrderings().get(0);
-        assertEquals(Artist.ARTIST_NAME_PROPERTY, artistNameOrdering.getSortSpecString());
+        assertEquals(Artist.ARTIST_NAME.getName(), artistNameOrdering.getSortSpecString());
         assertFalse(artistNameOrdering.isAscending());
         assertTrue(artistNameOrdering.isCaseInsensitive());
 
         Ordering dobOrdering = queryWithOrdering.getOrderings().get(1);
-        assertEquals(Artist.DATE_OF_BIRTH_PROPERTY, dobOrdering.getSortSpecString());
+        assertEquals(Artist.DATE_OF_BIRTH.getName(), dobOrdering.getSortSpecString());
         assertTrue(dobOrdering.isAscending());
         assertFalse(dobOrdering.isCaseInsensitive());
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryFetchLimitOrderingIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryFetchLimitOrderingIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryFetchLimitOrderingIT.java
index 5ded018..926488d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryFetchLimitOrderingIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryFetchLimitOrderingIT.java
@@ -66,7 +66,7 @@ public class SelectQueryFetchLimitOrderingIT extends ServerCase {
         creatArtistsDataSet();
 
         SelectQuery query = new SelectQuery("Artist");
-        query.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
+        query.addOrdering(Artist.ARTIST_NAME.asc());
 
         query.setFetchLimit(4);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionIT.java
index f02efe3..6655cc0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryPrefetchRouterActionIT.java
@@ -45,7 +45,7 @@ public class SelectQueryPrefetchRouterActionIT extends ServerCase {
     public void testPaintings1() {
         ObjEntity paintingEntity = resolver.getObjEntity(Painting.class);
         SelectQuery q = new SelectQuery(Artist.class, ExpressionFactory.matchExp("artistName", "abc"));
-        q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+        q.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
 
         SelectQueryPrefetchRouterAction action = new SelectQueryPrefetchRouterAction();
 
@@ -63,8 +63,8 @@ public class SelectQueryPrefetchRouterActionIT extends ServerCase {
     public void testPrefetchPaintings2() {
         ObjEntity paintingEntity = resolver.getObjEntity(Painting.class);
 
-        SelectQuery q = new SelectQuery(Artist.class, Expression.fromString("artistName = 'abc' or artistName = 'xyz'"));
-        q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+        SelectQuery<Artist> q = new SelectQuery<>(Artist.class, ExpressionFactory.exp("artistName = 'abc' or artistName = 'xyz'"));
+        q.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
 
         SelectQueryPrefetchRouterAction action = new SelectQueryPrefetchRouterAction();
 
@@ -93,6 +93,6 @@ public class SelectQueryPrefetchRouterActionIT extends ServerCase {
         PrefetchSelectQuery prefetch = (PrefetchSelectQuery) router.getQueries().get(0);
 
         assertSame(galleryEntity, prefetch.getRoot());
-        assertEquals(Expression.fromString("db:paintingArray.toArtist.ARTIST_NAME = 'abc'"), prefetch.getQualifier());
+        assertEquals(ExpressionFactory.exp("db:paintingArray.toArtist.ARTIST_NAME = 'abc'"), prefetch.getQualifier());
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/query/StatementFetchSizeIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/StatementFetchSizeIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/StatementFetchSizeIT.java
index 0002a7f..764070e 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/StatementFetchSizeIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/StatementFetchSizeIT.java
@@ -66,7 +66,7 @@ public class StatementFetchSizeIT extends ServerCase {
         ObjectId id = new ObjectId("Artist", Artist.ARTIST_ID_PK_COLUMN, 1);
         RelationshipQuery relationshipQuery = new RelationshipQuery(
                 id,
-                Artist.PAINTING_ARRAY_PROPERTY,
+                Artist.PAINTING_ARRAY.getName(),
                 true);
         relationshipQuery.setStatementFetchSize(10);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/testdo/array_type/auto/_ArrayTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/array_type/auto/_ArrayTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/array_type/auto/_ArrayTestEntity.java
index 4e55dd7..e4d22ae 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/array_type/auto/_ArrayTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/array_type/auto/_ArrayTestEntity.java
@@ -15,7 +15,7 @@ public abstract class _ArrayTestEntity extends CayenneDataObject {
 
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<Double[]> DOUBLE_ARRAY = new Property<Double[]>("doubleArray");
+    public static final Property<Double[]> DOUBLE_ARRAY = new Property<>("doubleArray");
 
     public void setDoubleArray(Double[] doubleArray) {
         writeProperty("doubleArray", doubleArray);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest1.java
index 643892a..e2f656a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest1.java
@@ -16,15 +16,10 @@ public abstract class _BinaryPKTest1 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String BINARY_PKDETAILS_PROPERTY = "binaryPKDetails";
-
     public static final String BIN_ID_PK_COLUMN = "BIN_ID";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<List<BinaryPKTest2>> BINARY_PKDETAILS = new Property<List<BinaryPKTest2>>("binaryPKDetails");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<BinaryPKTest2>> BINARY_PKDETAILS = new Property<>("binaryPKDetails");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest2.java
index 6279946..bd5c716 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest2.java
@@ -14,15 +14,10 @@ public abstract class _BinaryPKTest2 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String DETAIL_NAME_PROPERTY = "detailName";
-    @Deprecated
-    public static final String TO_BINARY_PKMASTER_PROPERTY = "toBinaryPKMaster";
-
     public static final String ID_PK_COLUMN = "ID";
 
-    public static final Property<String> DETAIL_NAME = new Property<String>("detailName");
-    public static final Property<BinaryPKTest1> TO_BINARY_PKMASTER = new Property<BinaryPKTest1>("toBinaryPKMaster");
+    public static final Property<String> DETAIL_NAME = new Property<>("detailName");
+    public static final Property<BinaryPKTest1> TO_BINARY_PKMASTER = new Property<>("toBinaryPKMaster");
 
     public void setDetailName(String detailName) {
         writeProperty("detailName", detailName);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharFkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharFkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharFkTestEntity.java
index 08982d4..3dd2663 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharFkTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharFkTestEntity.java
@@ -14,15 +14,10 @@ public abstract class _CharFkTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String TO_CHAR_PK_PROPERTY = "toCharPK";
-
     public static final String PK_PK_COLUMN = "PK";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<CharPkTestEntity> TO_CHAR_PK = new Property<CharPkTestEntity>("toCharPK");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<CharPkTestEntity> TO_CHAR_PK = new Property<>("toCharPK");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharPkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharPkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharPkTestEntity.java
index 5711aaf..6a3eabd 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharPkTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharPkTestEntity.java
@@ -16,18 +16,11 @@ public abstract class _CharPkTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String OTHER_COL_PROPERTY = "otherCol";
-    @Deprecated
-    public static final String PK_COL_PROPERTY = "pkCol";
-    @Deprecated
-    public static final String CHAR_FKS_PROPERTY = "charFKs";
-
     public static final String PK_COL_PK_COLUMN = "PK_COL";
 
-    public static final Property<String> OTHER_COL = new Property<String>("otherCol");
-    public static final Property<String> PK_COL = new Property<String>("pkCol");
-    public static final Property<List<CharFkTestEntity>> CHAR_FKS = new Property<List<CharFkTestEntity>>("charFKs");
+    public static final Property<String> OTHER_COL = new Property<>("otherCol");
+    public static final Property<String> PK_COL = new Property<>("pkCol");
+    public static final Property<List<CharFkTestEntity>> CHAR_FKS = new Property<>("charFKs");
 
     public void setOtherCol(String otherCol) {
         writeProperty("otherCol", otherCol);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundFkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundFkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundFkTestEntity.java
index 5032419..404a9a0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundFkTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundFkTestEntity.java
@@ -14,15 +14,10 @@ public abstract class _CompoundFkTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String TO_COMPOUND_PK_PROPERTY = "toCompoundPk";
-
     public static final String PKEY_PK_COLUMN = "PKEY";
 
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<CompoundPkTestEntity> TO_COMPOUND_PK = new Property<CompoundPkTestEntity>("toCompoundPk");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<CompoundPkTestEntity> TO_COMPOUND_PK = new Property<>("toCompoundPk");
 
     public void setName(String name) {
         writeProperty("name", name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundPkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundPkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundPkTestEntity.java
index c6ca8ef..295d14c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundPkTestEntity.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundPkTestEntity.java
@@ -16,22 +16,13 @@ public abstract class _CompoundPkTestEntity extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String KEY1_PROPERTY = "key1";
-    @Deprecated
-    public static final String KEY2_PROPERTY = "key2";
-    @Deprecated
-    public static final String NAME_PROPERTY = "name";
-    @Deprecated
-    public static final String COMPOUND_FK_ARRAY_PROPERTY = "compoundFkArray";
-
     public static final String KEY1_PK_COLUMN = "KEY1";
     public static final String KEY2_PK_COLUMN = "KEY2";
 
-    public static final Property<String> KEY1 = new Property<String>("key1");
-    public static final Property<String> KEY2 = new Property<String>("key2");
-    public static final Property<String> NAME = new Property<String>("name");
-    public static final Property<List<CompoundFkTestEntity>> COMPOUND_FK_ARRAY = new Property<List<CompoundFkTestEntity>>("compoundFkArray");
+    public static final Property<String> KEY1 = new Property<>("key1");
+    public static final Property<String> KEY2 = new Property<>("key2");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<CompoundFkTestEntity>> COMPOUND_FK_ARRAY = new Property<>("compoundFkArray");
 
     public void setKey1(String key1) {
         writeProperty("key1", key1);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java
----------------------------------------------------------------------
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 feb1676..f7a9cba 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
@@ -1,14 +1,14 @@
 package org.apache.cayenne.testdo.testmap.auto;
 
-import java.util.Date;
-import java.util.List;
-
 import org.apache.cayenne.CayenneDataObject;
 import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.testmap.ArtGroup;
 import org.apache.cayenne.testdo.testmap.ArtistExhibit;
 import org.apache.cayenne.testdo.testmap.Painting;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * Class _Artist was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -17,18 +17,7 @@ import org.apache.cayenne.testdo.testmap.Painting;
  */
 public abstract class _Artist extends CayenneDataObject {
 
-    private static final long serialVersionUID = 1L; 
-
-    @Deprecated
-    public static final String ARTIST_NAME_PROPERTY = "artistName";
-    @Deprecated
-    public static final String DATE_OF_BIRTH_PROPERTY = "dateOfBirth";
-    @Deprecated
-    public static final String ARTIST_EXHIBIT_ARRAY_PROPERTY = "artistExhibitArray";
-    @Deprecated
-    public static final String GROUP_ARRAY_PROPERTY = "groupArray";
-    @Deprecated
-    public static final String PAINTING_ARRAY_PROPERTY = "paintingArray";
+    private static final long serialVersionUID = 1L;
 
     public static final String ARTIST_ID_PK_COLUMN = "ARTIST_ID";
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-tools/src/main/resources/templates/v1_2/client-superclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/resources/templates/v1_2/client-superclass.vm b/cayenne-tools/src/main/resources/templates/v1_2/client-superclass.vm
index bd457fa..f7c1c9d 100644
--- a/cayenne-tools/src/main/resources/templates/v1_2/client-superclass.vm
+++ b/cayenne-tools/src/main/resources/templates/v1_2/client-superclass.vm
@@ -76,19 +76,19 @@ public abstract class ${superClassName} extends ${baseClassName} {
 #end
 ## Create Properties
 #foreach( $attr in ${object.DeclaredAttributes} )
-    public static final Property<$importUtils.formatJavaType(${attr.Type}, false)> ${stringUtils.capitalizedAsConstant($attr.Name)} = new Property<$importUtils.formatJavaType(${attr.Type}, false)>("${attr.Name}");
+    public static final Property<$importUtils.formatJavaType(${attr.Type}, false)> ${stringUtils.capitalizedAsConstant($attr.Name)} = new Property<>("${attr.Name}");
 #end
 #foreach( $rel in ${object.DeclaredRelationships} )
 #if( $rel.ToMany )
 #if ( ${rel.CollectionType} == "java.util.Map")
     #set( $type = "$importUtils.formatJavaType($rel.CollectionType)<$importUtils.formatJavaType($entityUtils.getMapKeyType($rel)), $importUtils.formatJavaType($rel.TargetEntity.ClientClassName)>" )
-    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<$type>("${rel.Name}");
+    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<>("${rel.Name}");
 #else
     #set( $type = "$importUtils.formatJavaType($rel.CollectionType)<$importUtils.formatJavaType($rel.TargetEntity.ClientClassName)>" )
-    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<$type>("${rel.Name}");
+    public static final Property<$type> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<>("${rel.Name}");
 #end
 #else
-    public static final Property<$importUtils.formatJavaType(${rel.TargetEntity.ClientClassName})> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<$importUtils.formatJavaType(${rel.TargetEntity.ClientClassName})>("${rel.Name}");
+    public static final Property<$importUtils.formatJavaType(${rel.TargetEntity.ClientClassName})> ${stringUtils.capitalizedAsConstant($rel.Name)} = new Property<>("${rel.Name}");
 #end
 #end
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb981ae1/cayenne-tools/src/main/resources/templates/v1_2/embeddable-superclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/resources/templates/v1_2/embeddable-superclass.vm b/cayenne-tools/src/main/resources/templates/v1_2/embeddable-superclass.vm
index 8dd6a4c..f4de6c7 100644
--- a/cayenne-tools/src/main/resources/templates/v1_2/embeddable-superclass.vm
+++ b/cayenne-tools/src/main/resources/templates/v1_2/embeddable-superclass.vm
@@ -63,7 +63,7 @@ public abstract class ${superClassName} extends ${baseClassName} {
 #end
 ## Create Properties
 #foreach( $attr in ${object.Attributes} )
-    public static final Property<$importUtils.formatJavaType(${attr.Type}, false)> ${stringUtils.capitalizedAsConstant($attr.Name)} = new Property<$importUtils.formatJavaType(${attr.Type}, false)>("${attr.Name}");
+    public static final Property<$importUtils.formatJavaType(${attr.Type}, false)> ${stringUtils.capitalizedAsConstant($attr.Name)} = new Property<>("${attr.Name}");
 #end
 
     // special properties injected by Cayenne


[06/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkDep.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkDep.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkDep.java
index c9e55e2..a73198b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkDep.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkDep.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_to_many_fk.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyFkRoot;
 import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyRoot2;
 
@@ -12,43 +13,45 @@ import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyRoot2;
  */
 public abstract class _ToManyFkDep extends CayenneDataObject {
 
-    public static final String DEP_ID_PROPERTY = "depId";
-    public static final String NAME_PROPERTY = "name";
-    public static final String ROOT_PROPERTY = "root";
-    public static final String ROOT2_PROPERTY = "root2";
+    private static final long serialVersionUID = 1L; 
 
     public static final String DEP_ID_PK_COLUMN = "DEP_ID";
     public static final String OTHER_ID_PK_COLUMN = "OTHER_ID";
 
+    public static final Property<Integer> DEP_ID = new Property<>("depId");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<ToManyFkRoot> ROOT = new Property<>("root");
+    public static final Property<ToManyRoot2> ROOT2 = new Property<>("root2");
+
     public void setDepId(Integer depId) {
-        writeProperty(DEP_ID_PROPERTY, depId);
+        writeProperty("depId", depId);
     }
     public Integer getDepId() {
-        return (Integer)readProperty(DEP_ID_PROPERTY);
+        return (Integer)readProperty("depId");
     }
 
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void setRoot(ToManyFkRoot root) {
-        setToOneTarget(ROOT_PROPERTY, root, true);
+        setToOneTarget("root", root, true);
     }
 
     public ToManyFkRoot getRoot() {
-        return (ToManyFkRoot)readProperty(ROOT_PROPERTY);
+        return (ToManyFkRoot)readProperty("root");
     }
 
 
     public void setRoot2(ToManyRoot2 root2) {
-        setToOneTarget(ROOT2_PROPERTY, root2, true);
+        setToOneTarget("root2", root2, true);
     }
 
     public ToManyRoot2 getRoot2() {
-        return (ToManyRoot2)readProperty(ROOT2_PROPERTY);
+        return (ToManyRoot2)readProperty("root2");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkRoot.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkRoot.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkRoot.java
index 11f5339..a84d75a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkRoot.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyFkRoot.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.relationships_to_many_fk.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyFkDep;
 
 /**
@@ -13,35 +14,37 @@ import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyFkDep;
  */
 public abstract class _ToManyFkRoot extends CayenneDataObject {
 
-    public static final String DEP_ID_PROPERTY = "depId";
-    public static final String NAME_PROPERTY = "name";
-    public static final String DEPS_PROPERTY = "deps";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Integer> DEP_ID = new Property<>("depId");
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<ToManyFkDep>> DEPS = new Property<>("deps");
+
     public void setDepId(Integer depId) {
-        writeProperty(DEP_ID_PROPERTY, depId);
+        writeProperty("depId", depId);
     }
     public Integer getDepId() {
-        return (Integer)readProperty(DEP_ID_PROPERTY);
+        return (Integer)readProperty("depId");
     }
 
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToDeps(ToManyFkDep obj) {
-        addToManyTarget(DEPS_PROPERTY, obj, true);
+        addToManyTarget("deps", obj, true);
     }
     public void removeFromDeps(ToManyFkDep obj) {
-        removeToManyTarget(DEPS_PROPERTY, obj, true);
+        removeToManyTarget("deps", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<ToManyFkDep> getDeps() {
-        return (List<ToManyFkDep>)readProperty(DEPS_PROPERTY);
+        return (List<ToManyFkDep>)readProperty("deps");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyRoot2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyRoot2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyRoot2.java
index 418b975..3b1134b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyRoot2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_many_fk/auto/_ToManyRoot2.java
@@ -3,6 +3,7 @@ package org.apache.cayenne.testdo.relationships_to_many_fk.auto;
 import java.util.List;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyFkDep;
 
 /**
@@ -13,27 +14,29 @@ import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyFkDep;
  */
 public abstract class _ToManyRoot2 extends CayenneDataObject {
 
-    public static final String NAME_PROPERTY = "name";
-    public static final String DEPS_PROPERTY = "deps";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<String> NAME = new Property<>("name");
+    public static final Property<List<ToManyFkDep>> DEPS = new Property<>("deps");
+
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     public void addToDeps(ToManyFkDep obj) {
-        addToManyTarget(DEPS_PROPERTY, obj, true);
+        addToManyTarget("deps", obj, true);
     }
     public void removeFromDeps(ToManyFkDep obj) {
-        removeToManyTarget(DEPS_PROPERTY, obj, true);
+        removeToManyTarget("deps", obj, true);
     }
     @SuppressWarnings("unchecked")
     public List<ToManyFkDep> getDeps() {
-        return (List<ToManyFkDep>)readProperty(DEPS_PROPERTY);
+        return (List<ToManyFkDep>)readProperty("deps");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK1.java
index 32dfca7..9f7c489 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK1.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_to_one_fk.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_to_one_fk.ToOneFK2;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.relationships_to_one_fk.ToOneFK2;
  */
 public abstract class _ToOneFK1 extends CayenneDataObject {
 
-    public static final String TO_PK_PROPERTY = "toPK";
+    private static final long serialVersionUID = 1L; 
 
-    public static final String TO_ONEFK1_PK_PK_COLUMN = "TO_ONEFK1_PK";
+    public static final String TO_ONE_FK1_PK_PK_COLUMN = "TO_ONE_FK1_PK";
+
+    public static final Property<ToOneFK2> TO_PK = new Property<>("toPK");
 
     public void setToPK(ToOneFK2 toPK) {
-        setToOneTarget(TO_PK_PROPERTY, toPK, true);
+        setToOneTarget("toPK", toPK, true);
     }
 
     public ToOneFK2 getToPK() {
-        return (ToOneFK2)readProperty(TO_PK_PROPERTY);
+        return (ToOneFK2)readProperty("toPK");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK2.java
index 15fcfdd..4f12594 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_to_one_fk/auto/_ToOneFK2.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.relationships_to_one_fk.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 import org.apache.cayenne.testdo.relationships_to_one_fk.ToOneFK1;
 
 /**
@@ -11,16 +12,18 @@ import org.apache.cayenne.testdo.relationships_to_one_fk.ToOneFK1;
  */
 public abstract class _ToOneFK2 extends CayenneDataObject {
 
-    public static final String TO_ONE_TO_FK_PROPERTY = "toOneToFK";
+    private static final long serialVersionUID = 1L; 
 
-    public static final String TO_ONEFK2_PK_PK_COLUMN = "TO_ONEFK2_PK";
+    public static final String TO_ONE_FK2_PK_PK_COLUMN = "TO_ONE_FK2_PK";
+
+    public static final Property<ToOneFK1> TO_ONE_TO_FK = new Property<>("toOneToFK");
 
     public void setToOneToFK(ToOneFK1 toOneToFK) {
-        setToOneTarget(TO_ONE_TO_FK_PROPERTY, toOneToFK, true);
+        setToOneTarget("toOneToFK", toOneToFK, true);
     }
 
     public ToOneFK1 getToOneToFK() {
-        return (ToOneFK1)readProperty(TO_ONE_TO_FK_PROPERTY);
+        return (ToOneFK1)readProperty("toOneToFK");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
index a126ceb..3a17bf0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_clob.ClobMaster;
@@ -89,11 +88,11 @@ public class CAY_115IT extends ServerCase {
         createDistinctClobFetchDataSet();
 
         SelectQuery noDistinct = new SelectQuery(ClobMaster.class);
-        noDistinct.addOrdering(ClobMaster.NAME_PROPERTY, SortOrder.ASCENDING);
+        noDistinct.addOrdering(ClobMaster.NAME.asc());
 
         SelectQuery distinct = new SelectQuery(ClobMaster.class);
         distinct.setDistinct(true);
-        distinct.addOrdering(ClobMaster.NAME_PROPERTY, SortOrder.ASCENDING);
+        distinct.addOrdering(ClobMaster.NAME.asc());
 
         List<?> noDistinctResult = context.performQuery(noDistinct);
         List<?> distinctResult = context.performQuery(distinct);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/resources/cayenne-relationships-clob.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/cayenne-relationships-clob.xml b/cayenne-server/src/test/resources/cayenne-relationships-clob.xml
index abaa23d..2d736b4 100644
--- a/cayenne-server/src/test/resources/cayenne-relationships-clob.xml
+++ b/cayenne-server/src/test/resources/cayenne-relationships-clob.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <domain project-version="9">
-    <map name="relationships-clob"/>
+	<map name="relationships-clob"/>
 </domain>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/resources/cayenne-relationships-flattened.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/cayenne-relationships-flattened.xml b/cayenne-server/src/test/resources/cayenne-relationships-flattened.xml
index 1283c12..499333a 100644
--- a/cayenne-server/src/test/resources/cayenne-relationships-flattened.xml
+++ b/cayenne-server/src/test/resources/cayenne-relationships-flattened.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <domain project-version="9">
-    <map name="relationships-flattened"/>
+	<map name="relationships-flattened"/>
 </domain>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/resources/relationships-clob.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/relationships-clob.map.xml b/cayenne-server/src/test/resources/relationships-clob.map.xml
index 0456088..550b1a5 100644
--- a/cayenne-server/src/test/resources/relationships-clob.map.xml
+++ b/cayenne-server/src/test/resources/relationships-clob.map.xml
@@ -1,32 +1,32 @@
 <?xml version="1.0" encoding="utf-8"?>
 <data-map xmlns="http://cayenne.apache.org/schema/9/modelMap"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://cayenne.apache.org/schema/9/modelMap http://cayenne.apache.org/schema/9/modelMap.xsd"
-          project-version="9">
-    <property name="defaultPackage" value="org.apache.cayenne.testdo.relationship_clob"/>
-    <db-entity name="CLOB_DETAIL">
-        <db-attribute name="CLOB_DETAIL_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-        <db-attribute name="CLOB_MASTER_ID" type="INTEGER"/>
-        <db-attribute name="NAME" type="VARCHAR" length="254"/>
-    </db-entity>
-    <db-entity name="CLOB_MASTER">
-        <db-attribute name="CLOB_COLUMN" type="CLOB"/>
-        <db-attribute name="CLOB_MASTER_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-        <db-attribute name="NAME" type="VARCHAR" length="254"/>
-    </db-entity>
-    <obj-entity name="ClobDetail" className="org.apache.cayenne.testdo.relationships_clob.ClobDetail" dbEntityName="CLOB_DETAIL">
-        <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-    </obj-entity>
-    <obj-entity name="ClobMaster" className="org.apache.cayenne.testdo.relationships_clob.ClobMaster" dbEntityName="CLOB_MASTER">
-        <obj-attribute name="clobColumn" type="java.lang.String" db-attribute-path="CLOB_COLUMN"/>
-        <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-    </obj-entity>
-    <db-relationship name="master" source="CLOB_DETAIL" target="CLOB_MASTER" toMany="false">
-        <db-attribute-pair source="CLOB_MASTER_ID" target="CLOB_MASTER_ID"/>
-    </db-relationship>
-    <db-relationship name="details" source="CLOB_MASTER" target="CLOB_DETAIL" toMany="true">
-        <db-attribute-pair source="CLOB_MASTER_ID" target="CLOB_MASTER_ID"/>
-    </db-relationship>
-    <obj-relationship name="master" source="ClobDetail" target="ClobMaster" db-relationship-path="master"/>
-    <obj-relationship name="details" source="ClobMaster" target="ClobDetail" db-relationship-path="details"/>
+	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	 xsi:schemaLocation="http://cayenne.apache.org/schema/9/modelMap http://cayenne.apache.org/schema/9/modelMap.xsd"
+	 project-version="9">
+	<property name="defaultPackage" value="org.apache.cayenne.testdo.relationships_clob"/>
+	<db-entity name="CLOB_DETAIL">
+		<db-attribute name="CLOB_DETAIL_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="CLOB_MASTER_ID" type="INTEGER"/>
+		<db-attribute name="NAME" type="VARCHAR" length="254"/>
+	</db-entity>
+	<db-entity name="CLOB_MASTER">
+		<db-attribute name="CLOB_COLUMN" type="CLOB"/>
+		<db-attribute name="CLOB_MASTER_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" length="254"/>
+	</db-entity>
+	<obj-entity name="ClobDetail" className="org.apache.cayenne.testdo.relationships_clob.ClobDetail" dbEntityName="CLOB_DETAIL">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<obj-entity name="ClobMaster" className="org.apache.cayenne.testdo.relationships_clob.ClobMaster" dbEntityName="CLOB_MASTER">
+		<obj-attribute name="clobColumn" type="java.lang.String" db-attribute-path="CLOB_COLUMN"/>
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<db-relationship name="master" source="CLOB_DETAIL" target="CLOB_MASTER" toMany="false">
+		<db-attribute-pair source="CLOB_MASTER_ID" target="CLOB_MASTER_ID"/>
+	</db-relationship>
+	<db-relationship name="details" source="CLOB_MASTER" target="CLOB_DETAIL" toMany="true">
+		<db-attribute-pair source="CLOB_MASTER_ID" target="CLOB_MASTER_ID"/>
+	</db-relationship>
+	<obj-relationship name="master" source="ClobDetail" target="ClobMaster" db-relationship-path="master"/>
+	<obj-relationship name="details" source="ClobMaster" target="ClobDetail" db-relationship-path="details"/>
 </data-map>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5042973c/cayenne-server/src/test/resources/relationships-flattened.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/relationships-flattened.map.xml b/cayenne-server/src/test/resources/relationships-flattened.map.xml
index af9364a..cc32c8f 100644
--- a/cayenne-server/src/test/resources/relationships-flattened.map.xml
+++ b/cayenne-server/src/test/resources/relationships-flattened.map.xml
@@ -1,107 +1,107 @@
 <?xml version="1.0" encoding="utf-8"?>
 <data-map xmlns="http://cayenne.apache.org/schema/9/modelMap"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://cayenne.apache.org/schema/9/modelMap http://cayenne.apache.org/schema/9/modelMap.xsd"
-          project-version="9">
-    <property name="defaultPackage" value="org.apache.cayenne.testdo.relationship_flattened"/>
-    <db-entity name="COMPLEX_JOIN">
-        <db-attribute name="EXTRA_COLUMN" type="VARCHAR" length="50"/>
-        <db-attribute name="FT1_FK" type="INTEGER"/>
-        <db-attribute name="FT3_FK" type="INTEGER"/>
-        <db-attribute name="PK" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-    </db-entity>
-    <db-entity name="FLATTENED_CIRCULAR">
-        <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-    </db-entity>
-    <db-entity name="FLATTENED_CIRCULAR_JOIN">
-        <db-attribute name="SIDE1_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-        <db-attribute name="SIDE2_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-    </db-entity>
-    <db-entity name="FLATTENED_TEST_1">
-        <db-attribute name="FT1_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-        <db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
-    </db-entity>
-    <db-entity name="FLATTENED_TEST_2">
-        <db-attribute name="FT1_ID" type="INTEGER"/>
-        <db-attribute name="FT2_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-        <db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
-    </db-entity>
-    <db-entity name="FLATTENED_TEST_3">
-        <db-attribute name="FT2_ID" type="INTEGER"/>
-        <db-attribute name="FT3_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-        <db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
-    </db-entity>
-    <db-entity name="FLATTENED_TEST_4">
-        <db-attribute name="FT3_ID" type="INTEGER"/>
-        <db-attribute name="FT4_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-        <db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
-    </db-entity>
-    <obj-entity name="FlattenedCircular" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedCircular" dbEntityName="FLATTENED_CIRCULAR">
-    </obj-entity>
-    <obj-entity name="FlattenedTest1" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedTest1" dbEntityName="FLATTENED_TEST_1">
-        <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-    </obj-entity>
-    <obj-entity name="FlattenedTest2" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedTest2" dbEntityName="FLATTENED_TEST_2">
-        <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-    </obj-entity>
-    <obj-entity name="FlattenedTest3" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedTest3" dbEntityName="FLATTENED_TEST_3">
-        <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-    </obj-entity>
-    <obj-entity name="FlattenedTest4" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedTest4" dbEntityName="FLATTENED_TEST_4">
-        <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-    </obj-entity>
-    <db-relationship name="toFT1" source="COMPLEX_JOIN" target="FLATTENED_TEST_1" toMany="false">
-        <db-attribute-pair source="FT1_FK" target="FT1_ID"/>
-    </db-relationship>
-    <db-relationship name="toFT3" source="COMPLEX_JOIN" target="FLATTENED_TEST_3" toMany="false">
-        <db-attribute-pair source="FT3_FK" target="FT3_ID"/>
-    </db-relationship>
-    <db-relationship name="side1s" source="FLATTENED_CIRCULAR" target="FLATTENED_CIRCULAR_JOIN" toDependentPK="true" toMany="true">
-        <db-attribute-pair source="ID" target="SIDE2_ID"/>
-    </db-relationship>
-    <db-relationship name="side2s" source="FLATTENED_CIRCULAR" target="FLATTENED_CIRCULAR_JOIN" toDependentPK="true" toMany="true">
-        <db-attribute-pair source="ID" target="SIDE1_ID"/>
-    </db-relationship>
-    <db-relationship name="side1" source="FLATTENED_CIRCULAR_JOIN" target="FLATTENED_CIRCULAR" toMany="false">
-        <db-attribute-pair source="SIDE1_ID" target="ID"/>
-    </db-relationship>
-    <db-relationship name="side2" source="FLATTENED_CIRCULAR_JOIN" target="FLATTENED_CIRCULAR" toMany="false">
-        <db-attribute-pair source="SIDE2_ID" target="ID"/>
-    </db-relationship>
-    <db-relationship name="complexJoins" source="FLATTENED_TEST_1" target="COMPLEX_JOIN" toMany="true">
-        <db-attribute-pair source="FT1_ID" target="FT1_FK"/>
-    </db-relationship>
-    <db-relationship name="ft2Array" source="FLATTENED_TEST_1" target="FLATTENED_TEST_2" toMany="true">
-        <db-attribute-pair source="FT1_ID" target="FT1_ID"/>
-    </db-relationship>
-    <db-relationship name="ft3Array" source="FLATTENED_TEST_2" target="FLATTENED_TEST_3" toMany="true">
-        <db-attribute-pair source="FT2_ID" target="FT2_ID"/>
-    </db-relationship>
-    <db-relationship name="toFT1" source="FLATTENED_TEST_2" target="FLATTENED_TEST_1" toMany="false">
-        <db-attribute-pair source="FT1_ID" target="FT1_ID"/>
-    </db-relationship>
-    <db-relationship name="complexJoins" source="FLATTENED_TEST_3" target="COMPLEX_JOIN" toMany="true">
-        <db-attribute-pair source="FT3_ID" target="FT3_FK"/>
-    </db-relationship>
-    <db-relationship name="ft4Array" source="FLATTENED_TEST_3" target="FLATTENED_TEST_4" toMany="true">
-        <db-attribute-pair source="FT3_ID" target="FT3_ID"/>
-    </db-relationship>
-    <db-relationship name="toFT2" source="FLATTENED_TEST_3" target="FLATTENED_TEST_2" toMany="false">
-        <db-attribute-pair source="FT2_ID" target="FT2_ID"/>
-    </db-relationship>
-    <db-relationship name="toFT3" source="FLATTENED_TEST_4" target="FLATTENED_TEST_3" toMany="false">
-        <db-attribute-pair source="FT3_ID" target="FT3_ID"/>
-    </db-relationship>
-    <obj-relationship name="side1s" source="FlattenedCircular" target="FlattenedCircular" db-relationship-path="side1s.side1"/>
-    <obj-relationship name="side2s" source="FlattenedCircular" target="FlattenedCircular" db-relationship-path="side2s.side2"/>
-    <obj-relationship name="ft2Array" source="FlattenedTest1" target="FlattenedTest2" db-relationship-path="ft2Array"/>
-    <obj-relationship name="ft3Array" source="FlattenedTest1" target="FlattenedTest3" db-relationship-path="ft2Array.ft3Array"/>
-    <obj-relationship name="ft3OverComplex" source="FlattenedTest1" target="FlattenedTest3" db-relationship-path="complexJoins.toFT3"/>
-    <obj-relationship name="ft4ArrayFor1" source="FlattenedTest1" target="FlattenedTest4" db-relationship-path="ft2Array.ft3Array.ft4Array"/>
-    <obj-relationship name="ft3Array" source="FlattenedTest2" target="FlattenedTest3" db-relationship-path="ft3Array"/>
-    <obj-relationship name="toFT1" source="FlattenedTest2" target="FlattenedTest1" db-relationship-path="toFT1"/>
-    <obj-relationship name="ft4Array" source="FlattenedTest3" target="FlattenedTest4" db-relationship-path="ft4Array"/>
-    <obj-relationship name="toFT1" source="FlattenedTest3" target="FlattenedTest1" db-relationship-path="toFT2.toFT1"/>
-    <obj-relationship name="toFT2" source="FlattenedTest3" target="FlattenedTest2" db-relationship-path="toFT2"/>
-    <obj-relationship name="toFT3" source="FlattenedTest4" target="FlattenedTest3" db-relationship-path="toFT3"/>
+	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	 xsi:schemaLocation="http://cayenne.apache.org/schema/9/modelMap http://cayenne.apache.org/schema/9/modelMap.xsd"
+	 project-version="9">
+	<property name="defaultPackage" value="org.apache.cayenne.testdo.relationships_flattened"/>
+	<db-entity name="COMPLEX_JOIN">
+		<db-attribute name="EXTRA_COLUMN" type="VARCHAR" length="50"/>
+		<db-attribute name="FT1_FK" type="INTEGER"/>
+		<db-attribute name="FT3_FK" type="INTEGER"/>
+		<db-attribute name="PK" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+	</db-entity>
+	<db-entity name="FLATTENED_CIRCULAR">
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+	</db-entity>
+	<db-entity name="FLATTENED_CIRCULAR_JOIN">
+		<db-attribute name="SIDE1_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="SIDE2_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+	</db-entity>
+	<db-entity name="FLATTENED_TEST_1">
+		<db-attribute name="FT1_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
+	</db-entity>
+	<db-entity name="FLATTENED_TEST_2">
+		<db-attribute name="FT1_ID" type="INTEGER"/>
+		<db-attribute name="FT2_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
+	</db-entity>
+	<db-entity name="FLATTENED_TEST_3">
+		<db-attribute name="FT2_ID" type="INTEGER"/>
+		<db-attribute name="FT3_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
+	</db-entity>
+	<db-entity name="FLATTENED_TEST_4">
+		<db-attribute name="FT3_ID" type="INTEGER"/>
+		<db-attribute name="FT4_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
+	</db-entity>
+	<obj-entity name="FlattenedCircular" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedCircular" dbEntityName="FLATTENED_CIRCULAR">
+	</obj-entity>
+	<obj-entity name="FlattenedTest1" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedTest1" dbEntityName="FLATTENED_TEST_1">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<obj-entity name="FlattenedTest2" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedTest2" dbEntityName="FLATTENED_TEST_2">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<obj-entity name="FlattenedTest3" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedTest3" dbEntityName="FLATTENED_TEST_3">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<obj-entity name="FlattenedTest4" className="org.apache.cayenne.testdo.relationships_flattened.FlattenedTest4" dbEntityName="FLATTENED_TEST_4">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<db-relationship name="toFT1" source="COMPLEX_JOIN" target="FLATTENED_TEST_1" toMany="false">
+		<db-attribute-pair source="FT1_FK" target="FT1_ID"/>
+	</db-relationship>
+	<db-relationship name="toFT3" source="COMPLEX_JOIN" target="FLATTENED_TEST_3" toMany="false">
+		<db-attribute-pair source="FT3_FK" target="FT3_ID"/>
+	</db-relationship>
+	<db-relationship name="side1s" source="FLATTENED_CIRCULAR" target="FLATTENED_CIRCULAR_JOIN" toDependentPK="true" toMany="true">
+		<db-attribute-pair source="ID" target="SIDE2_ID"/>
+	</db-relationship>
+	<db-relationship name="side2s" source="FLATTENED_CIRCULAR" target="FLATTENED_CIRCULAR_JOIN" toDependentPK="true" toMany="true">
+		<db-attribute-pair source="ID" target="SIDE1_ID"/>
+	</db-relationship>
+	<db-relationship name="side1" source="FLATTENED_CIRCULAR_JOIN" target="FLATTENED_CIRCULAR" toMany="false">
+		<db-attribute-pair source="SIDE1_ID" target="ID"/>
+	</db-relationship>
+	<db-relationship name="side2" source="FLATTENED_CIRCULAR_JOIN" target="FLATTENED_CIRCULAR" toMany="false">
+		<db-attribute-pair source="SIDE2_ID" target="ID"/>
+	</db-relationship>
+	<db-relationship name="complexJoins" source="FLATTENED_TEST_1" target="COMPLEX_JOIN" toMany="true">
+		<db-attribute-pair source="FT1_ID" target="FT1_FK"/>
+	</db-relationship>
+	<db-relationship name="ft2Array" source="FLATTENED_TEST_1" target="FLATTENED_TEST_2" toMany="true">
+		<db-attribute-pair source="FT1_ID" target="FT1_ID"/>
+	</db-relationship>
+	<db-relationship name="ft3Array" source="FLATTENED_TEST_2" target="FLATTENED_TEST_3" toMany="true">
+		<db-attribute-pair source="FT2_ID" target="FT2_ID"/>
+	</db-relationship>
+	<db-relationship name="toFT1" source="FLATTENED_TEST_2" target="FLATTENED_TEST_1" toMany="false">
+		<db-attribute-pair source="FT1_ID" target="FT1_ID"/>
+	</db-relationship>
+	<db-relationship name="complexJoins" source="FLATTENED_TEST_3" target="COMPLEX_JOIN" toMany="true">
+		<db-attribute-pair source="FT3_ID" target="FT3_FK"/>
+	</db-relationship>
+	<db-relationship name="ft4Array" source="FLATTENED_TEST_3" target="FLATTENED_TEST_4" toMany="true">
+		<db-attribute-pair source="FT3_ID" target="FT3_ID"/>
+	</db-relationship>
+	<db-relationship name="toFT2" source="FLATTENED_TEST_3" target="FLATTENED_TEST_2" toMany="false">
+		<db-attribute-pair source="FT2_ID" target="FT2_ID"/>
+	</db-relationship>
+	<db-relationship name="toFT3" source="FLATTENED_TEST_4" target="FLATTENED_TEST_3" toMany="false">
+		<db-attribute-pair source="FT3_ID" target="FT3_ID"/>
+	</db-relationship>
+	<obj-relationship name="side1s" source="FlattenedCircular" target="FlattenedCircular" db-relationship-path="side1s.side1"/>
+	<obj-relationship name="side2s" source="FlattenedCircular" target="FlattenedCircular" db-relationship-path="side2s.side2"/>
+	<obj-relationship name="ft2Array" source="FlattenedTest1" target="FlattenedTest2" db-relationship-path="ft2Array"/>
+	<obj-relationship name="ft3Array" source="FlattenedTest1" target="FlattenedTest3" db-relationship-path="ft2Array.ft3Array"/>
+	<obj-relationship name="ft3OverComplex" source="FlattenedTest1" target="FlattenedTest3" db-relationship-path="complexJoins.toFT3"/>
+	<obj-relationship name="ft4ArrayFor1" source="FlattenedTest1" target="FlattenedTest4" db-relationship-path="ft2Array.ft3Array.ft4Array"/>
+	<obj-relationship name="ft3Array" source="FlattenedTest2" target="FlattenedTest3" db-relationship-path="ft3Array"/>
+	<obj-relationship name="toFT1" source="FlattenedTest2" target="FlattenedTest1" db-relationship-path="toFT1"/>
+	<obj-relationship name="ft4Array" source="FlattenedTest3" target="FlattenedTest4" db-relationship-path="ft4Array"/>
+	<obj-relationship name="toFT1" source="FlattenedTest3" target="FlattenedTest1" db-relationship-path="toFT2.toFT1"/>
+	<obj-relationship name="toFT2" source="FlattenedTest3" target="FlattenedTest2" db-relationship-path="toFT2"/>
+	<obj-relationship name="toFT3" source="FlattenedTest4" target="FlattenedTest3" db-relationship-path="toFT3"/>
 </data-map>


[11/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
CAY-2176 Java 7 diamond class generation templates


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

Branch: refs/heads/master
Commit: a24473ad80c3343538d51ca9dc56e058fa88c139
Parents: a9d22d3
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Dec 18 19:18:18 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Dec 18 21:20:45 2016 +0300

----------------------------------------------------------------------
 docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/a24473ad/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 740698c..7281967 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -19,6 +19,7 @@ CAY-2165 Explicit "contribution" API for easier expansion of DI collections and
 CAY-2166 Auto-loading of Cayenne modules
 CAY-2168 Split DbLoader to parts and clean it up
 CAY-2169 Split DbMerger to parts and clean it up
+CAY-2176 Java 7 diamond class generation templates
 
 Bug Fixes:
 


[08/11] cayenne git commit: CAY-2176 Java 7 diamond class generation templates

Posted by aa...@apache.org.
CAY-2176 Java 7 diamond class generation templates

* regenerated unit tests with the new templates and no String properties
* cleaned up String property refs in unit tests
* removing server-side Persistent tests (objects that do not inherit from CayenneDataObject)


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

Branch: refs/heads/master
Commit: 1510b054dfe4d0505ca56a88a146b41a43846bdd
Parents: 5042973
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Dec 18 19:18:18 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Dec 18 21:02:09 2016 +0300

----------------------------------------------------------------------
 .../cayenne/access/DataContextCharTypeIT.java   |   5 +-
 .../cayenne/access/ReturnTypesMappingIT.java    |   6 +-
 .../cayenne/query/SelectQueryReturnTypesIT.java |   8 +-
 .../return_types/auto/_ReturnTypesMap1.java     | 114 +++++++------------
 .../return_types/auto/_ReturnTypesMap2.java     |  17 +--
 .../return_types/auto/_ReturnTypesMapLobs1.java |  11 +-
 .../testdo/soft_delete/auto/_SoftDelete.java    |  17 +--
 .../table_primitives/auto/_TablePrimitives.java |  15 ++-
 .../test/resources/cayenne-small-testmap.xml    |   4 -
 9 files changed, 77 insertions(+), 120 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/1510b054/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
index cf84989..08983bc 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
-import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.testdo.return_types.ReturnTypesMap1;
 import org.apache.cayenne.unit.UnitDbAdapter;
@@ -55,14 +54,14 @@ public class DataContextCharTypeIT extends ServerCase {
             
             context.commitChanges();
             
-            Expression qual = ExpressionFactory.matchExp(ReturnTypesMap1.CHAR_COLUMN_PROPERTY, "  text");
+            Expression qual = ReturnTypesMap1.CHAR_COLUMN.eq("  text");
             SelectQuery query = new SelectQuery(ReturnTypesMap1.class, qual);
             List<ReturnTypesMap1> result =  context.performQuery(query);
             
             assertTrue("CHAR type trimming is not valid.", result.get(0).getCharColumn().startsWith("  text"));
             assertTrue("CHAR type trimming is not valid.", result.get(1).getCharColumn().startsWith("  text"));
             
-            qual = ExpressionFactory.matchExp(ReturnTypesMap1.CHAR_COLUMN_PROPERTY, "text");
+            qual = ReturnTypesMap1.CHAR_COLUMN.eq("text");
             query = new SelectQuery(ReturnTypesMap1.class, qual);
             result =  context.performQuery(query);
             

http://git-wip-us.apache.org/repos/asf/cayenne/blob/1510b054/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
index 6fe3937..9bb40ff 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
@@ -261,7 +261,7 @@ public class    ReturnTypesMappingIT extends ServerCase {
         ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
 
         String charValue = "\u062f\u0631\u062e\u062a\u200c\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648\u06cc \u0645\u062a\u0648\u0627\u0632\u0646\u060c \u0646\u06cc\u0627\u0632\u06cc \u0646\u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a!";
-        test.setNCharColumn(charValue);
+        test.setNcharColumn(charValue);
         context.commitChanges();
 		
         DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
@@ -324,7 +324,7 @@ public class    ReturnTypesMappingIT extends ServerCase {
                         "\"Balanced,\" \"Broad,\" \u06cc\u0627 \"Bushy\" \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647\u200c\u0628\u0627\u0634\u0646\u062f [\u0686\u0648\u0646 \u0647\u0645\u0647\u0654 \u0628\u0631\u06af\u200c\u0647\u0627 \u062f\u0631 \u06cc\u06a9 \u0633\u0637\u062d \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f]. \u062f\u06cc\u06af\u0631\u0627\u0646 \u0627\u0638\u0647\u0627\u0631 \u062f\u0627\u0634\u062a\u0646\u062f \u06a9\u0647 \u062d\u0631\u0641 \"B\" \u0627\u0632 \u06a9\u0644\u0645\u0647\u0654 \u0628\u0648\u0626\u06cc\u0646\u06af \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a [\u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u06a9\u0647 \u067e\u062f\u06cc\u062f\u0622\u0648\u0631\u062f\u0646\u062f\u0647 \u062f\u0631\u0633\u0627\u0644 1972 \u062f\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u062a\u062d\u0642\u06cc\u0642\u0627\u062a\u06cc \u0639\u0644\u0645\u06cc \u0634\u0631\u06a9\u062a \u0628\u0648\u0626\u06cc\u0646\u06af \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0631\u062f]. \u0628\u0627 \u0627\u06cc\u0646 \u0648\u062c\u0648\u062f \u067e\u0646\u062f\u0627\u0634\u062a\u0646 \u062f\u0631\u062e\u062a \u0628\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0631\u062e\u062a \"\u0628\u0650\u06cc\u0650\u0631\" \u0646\u06cc\u0632 \u062f\u0631\u062e\u0648\u0631 \u0627\u0633\u062a.[\u06f2]");
             }
             String clobValue = buffer.toString();
-            test.setNClobColumn(clobValue);
+            test.setNclobColumn(clobValue);
             context.commitChanges();
 			
             DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesLobsMap1")).get(0);
@@ -903,7 +903,7 @@ public class    ReturnTypesMappingIT extends ServerCase {
         ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
 
         String varcharValue = "\u06cc \u0645\u062a\u0648\u0627\u0632\u0646\u060c \u0646\u06cc\u0627\u0632\u06cc \u0646\u062f\u0627\u0631\u062f \u06a9\u0647 \u0628";
-        test.setNVarcharColumn(varcharValue);
+        test.setNvarcharColumn(varcharValue);
         context.commitChanges();
 		
         DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/1510b054/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
index 2bb20c5..6c0a06a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
@@ -76,7 +76,7 @@ public class SelectQueryReturnTypesIT extends ServerCase {
         createNumericsDataSet();
 
         // to simplify result checking, do double NOT
-        Expression left = new ASTBitwiseNot(new ASTBitwiseNot(new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY)));
+        Expression left = new ASTBitwiseNot(new ASTBitwiseNot(new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN.getName())));
         Expression right = new ASTScalar(2);
         Expression greater = new ASTGreater();
         greater.setOperand(0, left);
@@ -99,7 +99,7 @@ public class SelectQueryReturnTypesIT extends ServerCase {
         createNumericsDataSet();
 
         // to simplify result checking, do double NOT
-        Expression left = new ASTBitwiseOr(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY),
+        Expression left = new ASTBitwiseOr(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN.getName()),
                 new ASTScalar(1) });
         Expression right = new ASTScalar(1);
         Expression equal = new ASTEqual();
@@ -123,7 +123,7 @@ public class SelectQueryReturnTypesIT extends ServerCase {
         createNumericsDataSet();
 
         // to simplify result checking, do double NOT
-        Expression left = new ASTBitwiseAnd(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY),
+        Expression left = new ASTBitwiseAnd(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN.getName()),
                 new ASTScalar(1) });
         Expression right = new ASTScalar(0);
         Expression equal = new ASTEqual();
@@ -147,7 +147,7 @@ public class SelectQueryReturnTypesIT extends ServerCase {
         createNumericsDataSet();
 
         // to simplify result checking, do double NOT
-        Expression left = new ASTBitwiseXor(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY),
+        Expression left = new ASTBitwiseXor(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN.getName()),
                 new ASTScalar(1) });
         Expression right = new ASTScalar(5);
         Expression equal = new ASTEqual();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/1510b054/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap1.java
index df8f17a..93d0249 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap1.java
@@ -1,11 +1,11 @@
 package org.apache.cayenne.testdo.return_types.auto;
 
-import java.math.BigDecimal;
-import java.util.Date;
-
 import org.apache.cayenne.CayenneDataObject;
 import org.apache.cayenne.exp.Property;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * Class _ReturnTypesMap1 was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
@@ -16,60 +16,28 @@ public abstract class _ReturnTypesMap1 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BIGINT_COLUMN_PROPERTY = "bigintColumn";
-    @Deprecated
-    public static final String BIT_COLUMN_PROPERTY = "bitColumn";
-    @Deprecated
-    public static final String BOOLEAN_COLUMN_PROPERTY = "booleanColumn";
-    @Deprecated
-    public static final String CHAR_COLUMN_PROPERTY = "charColumn";
-    @Deprecated
-    public static final String DATE_COLUMN_PROPERTY = "dateColumn";
-    @Deprecated
-    public static final String DECIMAL_COLUMN_PROPERTY = "decimalColumn";
-    @Deprecated
-    public static final String DOUBLE_COLUMN_PROPERTY = "doubleColumn";
-    @Deprecated
-    public static final String FLOAT_COLUMN_PROPERTY = "floatColumn";
-    @Deprecated
-    public static final String INTEGER_COLUMN_PROPERTY = "integerColumn";
-    @Deprecated
-    public static final String LONGVARCHAR_COLUMN_PROPERTY = "longvarcharColumn";
-    @Deprecated
-    public static final String NUMERIC_COLUMN_PROPERTY = "numericColumn";
-    @Deprecated
-    public static final String REAL_COLUMN_PROPERTY = "realColumn";
-    @Deprecated
-    public static final String SMALLINT_COLUMN_PROPERTY = "smallintColumn";
-    @Deprecated
-    public static final String TIME_COLUMN_PROPERTY = "timeColumn";
-    @Deprecated
-    public static final String TIMESTAMP_COLUMN_PROPERTY = "timestampColumn";
-    @Deprecated
-    public static final String TINYINT_COLUMN_PROPERTY = "tinyintColumn";
-    @Deprecated
-    public static final String VARCHAR_COLUMN_PROPERTY = "varcharColumn";
-
     public static final String AAAID_PK_COLUMN = "AAAID";
 
-    public static final Property<Long> BIGINT_COLUMN = new Property<Long>("bigintColumn");
-    public static final Property<Boolean> BIT_COLUMN = new Property<Boolean>("bitColumn");
-    public static final Property<Boolean> BOOLEAN_COLUMN = new Property<Boolean>("booleanColumn");
-    public static final Property<String> CHAR_COLUMN = new Property<String>("charColumn");
-    public static final Property<Date> DATE_COLUMN = new Property<Date>("dateColumn");
-    public static final Property<BigDecimal> DECIMAL_COLUMN = new Property<BigDecimal>("decimalColumn");
-    public static final Property<Double> DOUBLE_COLUMN = new Property<Double>("doubleColumn");
-    public static final Property<Float> FLOAT_COLUMN = new Property<Float>("floatColumn");
-    public static final Property<Integer> INTEGER_COLUMN = new Property<Integer>("integerColumn");
-    public static final Property<String> LONGVARCHAR_COLUMN = new Property<String>("longvarcharColumn");
-    public static final Property<BigDecimal> NUMERIC_COLUMN = new Property<BigDecimal>("numericColumn");
-    public static final Property<Float> REAL_COLUMN = new Property<Float>("realColumn");
-    public static final Property<Short> SMALLINT_COLUMN = new Property<Short>("smallintColumn");
-    public static final Property<Date> TIME_COLUMN = new Property<Date>("timeColumn");
-    public static final Property<Date> TIMESTAMP_COLUMN = new Property<Date>("timestampColumn");
-    public static final Property<Byte> TINYINT_COLUMN = new Property<Byte>("tinyintColumn");
-    public static final Property<String> VARCHAR_COLUMN = new Property<String>("varcharColumn");
+    public static final Property<Long> BIGINT_COLUMN = new Property<>("bigintColumn");
+    public static final Property<Boolean> BIT_COLUMN = new Property<>("bitColumn");
+    public static final Property<Boolean> BOOLEAN_COLUMN = new Property<>("booleanColumn");
+    public static final Property<String> CHAR_COLUMN = new Property<>("charColumn");
+    public static final Property<Date> DATE_COLUMN = new Property<>("dateColumn");
+    public static final Property<BigDecimal> DECIMAL_COLUMN = new Property<>("decimalColumn");
+    public static final Property<Double> DOUBLE_COLUMN = new Property<>("doubleColumn");
+    public static final Property<Float> FLOAT_COLUMN = new Property<>("floatColumn");
+    public static final Property<Integer> INTEGER_COLUMN = new Property<>("integerColumn");
+    public static final Property<String> LONGNVARCHAR_COLUMN = new Property<>("longnvarcharColumn");
+    public static final Property<String> LONGVARCHAR_COLUMN = new Property<>("longvarcharColumn");
+    public static final Property<String> NCHAR_COLUMN = new Property<>("ncharColumn");
+    public static final Property<BigDecimal> NUMERIC_COLUMN = new Property<>("numericColumn");
+    public static final Property<String> NVARCHAR_COLUMN = new Property<>("nvarcharColumn");
+    public static final Property<Float> REAL_COLUMN = new Property<>("realColumn");
+    public static final Property<Short> SMALLINT_COLUMN = new Property<>("smallintColumn");
+    public static final Property<Date> TIME_COLUMN = new Property<>("timeColumn");
+    public static final Property<Date> TIMESTAMP_COLUMN = new Property<>("timestampColumn");
+    public static final Property<Byte> TINYINT_COLUMN = new Property<>("tinyintColumn");
+    public static final Property<String> VARCHAR_COLUMN = new Property<>("varcharColumn");
 
     public void setBigintColumn(Long bigintColumn) {
         writeProperty("bigintColumn", bigintColumn);
@@ -99,13 +67,6 @@ public abstract class _ReturnTypesMap1 extends CayenneDataObject {
         return (String)readProperty("charColumn");
     }
 
-    public void setNCharColumn(String ncharColumn) {
-        writeProperty("ncharColumn", ncharColumn);
-    }
-    public String getNCharColumn() {
-        return (String)readProperty("ncharColumn");
-    }
-
     public void setDateColumn(Date dateColumn) {
         writeProperty("dateColumn", dateColumn);
     }
@@ -141,6 +102,13 @@ public abstract class _ReturnTypesMap1 extends CayenneDataObject {
         return (Integer)readProperty("integerColumn");
     }
 
+    public void setLongnvarcharColumn(String longnvarcharColumn) {
+        writeProperty("longnvarcharColumn", longnvarcharColumn);
+    }
+    public String getLongnvarcharColumn() {
+        return (String)readProperty("longnvarcharColumn");
+    }
+
     public void setLongvarcharColumn(String longvarcharColumn) {
         writeProperty("longvarcharColumn", longvarcharColumn);
     }
@@ -148,11 +116,11 @@ public abstract class _ReturnTypesMap1 extends CayenneDataObject {
         return (String)readProperty("longvarcharColumn");
     }
 
-    public void setLongnvarcharColumn(String longnvarcharColumn) {
-        writeProperty("longnvarcharColumn", longnvarcharColumn);
+    public void setNcharColumn(String ncharColumn) {
+        writeProperty("ncharColumn", ncharColumn);
     }
-    public String getLongnvarcharColumn() {
-        return (String)readProperty("longnvarcharColumn");
+    public String getNcharColumn() {
+        return (String)readProperty("ncharColumn");
     }
 
     public void setNumericColumn(BigDecimal numericColumn) {
@@ -162,6 +130,13 @@ public abstract class _ReturnTypesMap1 extends CayenneDataObject {
         return (BigDecimal)readProperty("numericColumn");
     }
 
+    public void setNvarcharColumn(String nvarcharColumn) {
+        writeProperty("nvarcharColumn", nvarcharColumn);
+    }
+    public String getNvarcharColumn() {
+        return (String)readProperty("nvarcharColumn");
+    }
+
     public void setRealColumn(Float realColumn) {
         writeProperty("realColumn", realColumn);
     }
@@ -197,13 +172,6 @@ public abstract class _ReturnTypesMap1 extends CayenneDataObject {
         return (Byte)readProperty("tinyintColumn");
     }
 
-    public void setNVarcharColumn(String nvarcharColumn) {
-        writeProperty("nvarcharColumn", nvarcharColumn);
-    }
-    public String getNVarcharColumn() {
-        return (String)readProperty("nvarcharColumn");
-    }
-
     public void setVarcharColumn(String varcharColumn) {
         writeProperty("varcharColumn", varcharColumn);
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/1510b054/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap2.java
index ece568c..8c3c57c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMap2.java
@@ -13,21 +13,12 @@ public abstract class _ReturnTypesMap2 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String BINARY_COLUMN_PROPERTY = "binaryColumn";
-    @Deprecated
-    public static final String BLOB_COLUMN_PROPERTY = "blobColumn";
-    @Deprecated
-    public static final String LONGVARBINARY_COLUMN_PROPERTY = "longvarbinaryColumn";
-    @Deprecated
-    public static final String VARBINARY_COLUMN_PROPERTY = "varbinaryColumn";
-
     public static final String AAAID_PK_COLUMN = "AAAID";
 
-    public static final Property<byte[]> BINARY_COLUMN = new Property<byte[]>("binaryColumn");
-    public static final Property<byte[]> BLOB_COLUMN = new Property<byte[]>("blobColumn");
-    public static final Property<byte[]> LONGVARBINARY_COLUMN = new Property<byte[]>("longvarbinaryColumn");
-    public static final Property<byte[]> VARBINARY_COLUMN = new Property<byte[]>("varbinaryColumn");
+    public static final Property<byte[]> BINARY_COLUMN = new Property<>("binaryColumn");
+    public static final Property<byte[]> BLOB_COLUMN = new Property<>("blobColumn");
+    public static final Property<byte[]> LONGVARBINARY_COLUMN = new Property<>("longvarbinaryColumn");
+    public static final Property<byte[]> VARBINARY_COLUMN = new Property<>("varbinaryColumn");
 
     public void setBinaryColumn(byte[] binaryColumn) {
         writeProperty("binaryColumn", binaryColumn);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/1510b054/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMapLobs1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMapLobs1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMapLobs1.java
index 29bc39c..53b7aa7 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMapLobs1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/return_types/auto/_ReturnTypesMapLobs1.java
@@ -13,13 +13,10 @@ public abstract class _ReturnTypesMapLobs1 extends CayenneDataObject {
 
     private static final long serialVersionUID = 1L; 
 
-    @Deprecated
-    public static final String CLOB_COLUMN_PROPERTY = "clobColumn";
-
     public static final String AAAID_PK_COLUMN = "AAAID";
 
-    public static final Property<String> CLOB_COLUMN = new Property<String>("clobColumn");
-    public static final Property<String> NCLOB_COLUMN = new Property<String>("nclobColumn");
+    public static final Property<String> CLOB_COLUMN = new Property<>("clobColumn");
+    public static final Property<String> NCLOB_COLUMN = new Property<>("nclobColumn");
 
     public void setClobColumn(String clobColumn) {
         writeProperty("clobColumn", clobColumn);
@@ -28,10 +25,10 @@ public abstract class _ReturnTypesMapLobs1 extends CayenneDataObject {
         return (String)readProperty("clobColumn");
     }
 
-    public void setNClobColumn(String nclobColumn) {
+    public void setNclobColumn(String nclobColumn) {
         writeProperty("nclobColumn", nclobColumn);
     }
-    public String getNClobColumn() {
+    public String getNclobColumn() {
         return (String)readProperty("nclobColumn");
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/1510b054/cayenne-server/src/test/java/org/apache/cayenne/testdo/soft_delete/auto/_SoftDelete.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/soft_delete/auto/_SoftDelete.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/soft_delete/auto/_SoftDelete.java
index 363490f..a3dded8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/soft_delete/auto/_SoftDelete.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/soft_delete/auto/_SoftDelete.java
@@ -1,32 +1,35 @@
 package org.apache.cayenne.testdo.soft_delete.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 
 /**
- * Class _SoftTest was generated by Cayenne.
+ * Class _SoftDelete was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
  * since it may be overwritten next time code is regenerated.
  * If you need to make any customizations, please use subclass.
  */
 public abstract class _SoftDelete extends CayenneDataObject {
 
-    public static final String DELETED_PROPERTY = "deleted";
-    public static final String NAME_PROPERTY = "name";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Boolean> DELETED = new Property<>("deleted");
+    public static final Property<String> NAME = new Property<>("name");
+
     public void setDeleted(Boolean deleted) {
-        writeProperty(DELETED_PROPERTY, deleted);
+        writeProperty("deleted", deleted);
     }
     public Boolean getDeleted() {
-        return (Boolean)readProperty(DELETED_PROPERTY);
+        return (Boolean)readProperty("deleted");
     }
 
     public void setName(String name) {
-        writeProperty(NAME_PROPERTY, name);
+        writeProperty("name", name);
     }
     public String getName() {
-        return (String)readProperty(NAME_PROPERTY);
+        return (String)readProperty("name");
     }
 
     protected abstract void onPrePersist();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/1510b054/cayenne-server/src/test/java/org/apache/cayenne/testdo/table_primitives/auto/_TablePrimitives.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/table_primitives/auto/_TablePrimitives.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/table_primitives/auto/_TablePrimitives.java
index bed40fc..bc55726 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/table_primitives/auto/_TablePrimitives.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/table_primitives/auto/_TablePrimitives.java
@@ -1,6 +1,7 @@
 package org.apache.cayenne.testdo.table_primitives.auto;
 
 import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
 
 /**
  * Class _TablePrimitives was generated by Cayenne.
@@ -10,24 +11,26 @@ import org.apache.cayenne.CayenneDataObject;
  */
 public abstract class _TablePrimitives extends CayenneDataObject {
 
-    public static final String BOOLEAN_COLUMN_PROPERTY = "booleanColumn";
-    public static final String INT_COLUMN_PROPERTY = "intColumn";
+    private static final long serialVersionUID = 1L; 
 
     public static final String ID_PK_COLUMN = "ID";
 
+    public static final Property<Boolean> BOOLEAN_COLUMN = new Property<>("booleanColumn");
+    public static final Property<Integer> INT_COLUMN = new Property<>("intColumn");
+
     public void setBooleanColumn(boolean booleanColumn) {
-        writeProperty(BOOLEAN_COLUMN_PROPERTY, booleanColumn);
+        writeProperty("booleanColumn", booleanColumn);
     }
 	public boolean isBooleanColumn() {
-        Boolean value = (Boolean)readProperty(BOOLEAN_COLUMN_PROPERTY);
+        Boolean value = (Boolean)readProperty("booleanColumn");
         return (value != null) ? value.booleanValue() : false;
     }
 
     public void setIntColumn(int intColumn) {
-        writeProperty(INT_COLUMN_PROPERTY, intColumn);
+        writeProperty("intColumn", intColumn);
     }
     public int getIntColumn() {
-        Object value = readProperty(INT_COLUMN_PROPERTY);
+        Object value = readProperty("intColumn");
         return (value != null) ? (Integer) value : 0;
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/1510b054/cayenne-server/src/test/resources/cayenne-small-testmap.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/cayenne-small-testmap.xml b/cayenne-server/src/test/resources/cayenne-small-testmap.xml
deleted file mode 100644
index 6c7d55b..0000000
--- a/cayenne-server/src/test/resources/cayenne-small-testmap.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<domain project-version="9">
-	<map name="small-testmap"/>
-</domain>