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:06 UTC

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

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);