You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/07/31 12:08:17 UTC

[2/5] cayenne git commit: Cleanup tests

Cleanup tests


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

Branch: refs/heads/master
Commit: 0a83ab70a386933a47d749f09dd52fab2d664a1b
Parents: 36e2322
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Jul 31 14:55:00 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Jul 31 14:55:00 2018 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/CDOOneToManyFKIT.java    |  17 +-
 .../access/DataContextCompoundRelIT.java        |  64 ++--
 .../DataContextDisjointByIdPrefetchIT.java      | 108 +++----
 ...ataContextDisjointByIdPrefetch_ExtrasIT.java | 228 +++++++------
 .../access/DataContextEJBQLFetchJoinIT.java     | 316 +++++++++----------
 .../DataContextFlattenedAttributesIT.java       |  43 +--
 .../access/DataContextJoinAliasesIT.java        |  10 +-
 .../cayenne/access/DataContextOrderingIT.java   |   3 +-
 .../cayenne/access/DataContextOuterJoinsIT.java |  10 +-
 .../DataContextSelectQuerySplitAliasesIT.java   |   8 +-
 .../apache/cayenne/access/DeleteObjectIT.java   |   3 +-
 .../cayenne/access/QuotedIdentifiersIT.java     |  94 ++++--
 .../cayenne/access/ReturnTypesMappingIT.java    |   8 +-
 .../configuration/xml/BaseHandlerTest.java      |   2 +-
 .../cayenne/dba/DefaultQuotingStrategyTest.java |   4 +-
 .../apache/cayenne/query/SelectQueryClobIT.java |   8 +-
 .../org/apache/cayenne/query/SelectQueryIT.java |   8 +-
 .../cayenne/unit/di/server/SchemaBuilder.java   |  44 ++-
 .../org/apache/cayenne/unit/jira/CAY_194IT.java |  15 +-
 19 files changed, 475 insertions(+), 518 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
index a442452..2f02a14 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
@@ -33,8 +33,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
 
-// TODO: this mapping scenario is really unsupported ... this is just an attempt at
-// partial solution
+// TODO: this mapping scenario is really unsupported ... this is just an attempt at partial solution
 @UseServerRuntime(CayenneProjects.RELATIONSHIPS_TO_MANY_FK_PROJECT)
 public class CDOOneToManyFKIT extends ServerCase {
 
@@ -42,17 +41,17 @@ public class CDOOneToManyFKIT extends ServerCase {
     protected DataContext context;
 
     @Test
-    public void testReadRelationship() throws Exception {
+    public void testReadRelationship() {
 
         ToManyRoot2 src2 = context.newObject(ToManyRoot2.class);
         ToManyFkRoot src = context.newObject(ToManyFkRoot.class);
 
         // this should go away when such mapping becomes fully supported
-        src.setDepId(new Integer(1));
+        src.setDepId(1);
         ToManyFkDep target = context.newObject(ToManyFkDep.class);
 
         // this should go away when such mapping becomes fully supported
-        target.setDepId(new Integer(1));
+        target.setDepId(1);
         target.setRoot2(src2);
 
         src.addToDeps(target);
@@ -60,17 +59,15 @@ public class CDOOneToManyFKIT extends ServerCase {
 
         context.invalidateObjects(src, target, src2);
 
-        ToManyFkRoot src1 = (ToManyFkRoot) Cayenne
-                .objectForPK(context, src.getObjectId());
+        ToManyFkRoot src1 = (ToManyFkRoot) Cayenne.objectForPK(context, src.getObjectId());
         assertNotNull(src1.getDeps());
         assertEquals(1, src1.getDeps().size());
         // resolve HOLLOW
-        assertSame(src1, ((ToManyFkDep) src1.getDeps().get(0)).getRoot());
+        assertSame(src1, src1.getDeps().get(0).getRoot());
 
         context.invalidateObjects(src1, src1.getDeps().get(0));
 
-        ToManyFkDep target2 = (ToManyFkDep) Cayenne.objectForPK(context, target
-                .getObjectId());
+        ToManyFkDep target2 = (ToManyFkDep) Cayenne.objectForPK(context, target.getObjectId());
         assertNotNull(target2.getRoot());
 
         // resolve HOLLOW

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
index be2041f..c7eaa20 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
@@ -48,9 +48,9 @@ public class DataContextCompoundRelIT extends ServerCase {
 
     @Test
     public void testInsert() {
-
         CompoundPkTestEntity master = context.newObject(CompoundPkTestEntity.class);
         CompoundFkTestEntity detail = context.newObject(CompoundFkTestEntity.class);
+
         master.addToCompoundFkArray(detail);
         master.setName("m1");
         master.setKey1("key11");
@@ -60,30 +60,24 @@ public class DataContextCompoundRelIT extends ServerCase {
         context.commitChanges();
         context.invalidateObjects(master, detail);
 
-        SelectQuery q = new SelectQuery(CompoundPkTestEntity.class);
-        List<?> objs = context1.performQuery(q);
-        assertEquals(1, objs.size());
+        SelectQuery<CompoundPkTestEntity> q = SelectQuery.query(CompoundPkTestEntity.class);
+        List<CompoundPkTestEntity> objs = q.select(context1);
 
-        master = (CompoundPkTestEntity) objs.get(0);
-        assertEquals("m1", master.getName());
+        assertEquals(1, objs.size());
+        assertEquals("m1", objs.get(0).getName());
 
-        List<?> details = master.getCompoundFkArray();
+        List<CompoundFkTestEntity> details = objs.get(0).getCompoundFkArray();
         assertEquals(1, details.size());
-        detail = (CompoundFkTestEntity) details.get(0);
-
-        assertEquals("d1", detail.getName());
+        assertEquals("d1", details.get(0).getName());
     }
 
     @Test
     public void testFetchQualifyingToOne() {
-        CompoundPkTestEntity master = (CompoundPkTestEntity) context
-                .newObject("CompoundPkTestEntity");
-        CompoundPkTestEntity master1 = (CompoundPkTestEntity) context
-                .newObject("CompoundPkTestEntity");
-        CompoundFkTestEntity detail = (CompoundFkTestEntity) context
-                .newObject("CompoundFkTestEntity");
-        CompoundFkTestEntity detail1 = (CompoundFkTestEntity) context
-                .newObject("CompoundFkTestEntity");
+        CompoundPkTestEntity master  = context.newObject(CompoundPkTestEntity.class);
+        CompoundPkTestEntity master1 = context.newObject(CompoundPkTestEntity.class);
+        CompoundFkTestEntity detail  = context.newObject(CompoundFkTestEntity.class);
+        CompoundFkTestEntity detail1 = context.newObject(CompoundFkTestEntity.class);
+
         master.addToCompoundFkArray(detail);
         master1.addToCompoundFkArray(detail1);
 
@@ -96,31 +90,26 @@ public class DataContextCompoundRelIT extends ServerCase {
         master1.setKey2("key22");
 
         detail.setName("d1");
-
         detail1.setName("d2");
 
         context.commitChanges();
         context.invalidateObjects(master, master1, detail, detail1);
 
         Expression qual = ExpressionFactory.matchExp("toCompoundPk", master);
-        SelectQuery q = new SelectQuery(CompoundFkTestEntity.class, qual);
-        List<?> objs = context1.performQuery(q);
-        assertEquals(1, objs.size());
+        SelectQuery<CompoundFkTestEntity> q = SelectQuery.query(CompoundFkTestEntity.class, qual);
+        List<CompoundFkTestEntity> objs = q.select(context1);
 
-        detail = (CompoundFkTestEntity) objs.get(0);
-        assertEquals("d1", detail.getName());
+        assertEquals(1, objs.size());
+        assertEquals("d1", objs.get(0).getName());
     }
 
     @Test
-    public void testFetchQualifyingToMany() throws Exception {
-        CompoundPkTestEntity master = (CompoundPkTestEntity) context
-                .newObject("CompoundPkTestEntity");
-        CompoundPkTestEntity master1 = (CompoundPkTestEntity) context
-                .newObject("CompoundPkTestEntity");
-        CompoundFkTestEntity detail = (CompoundFkTestEntity) context
-                .newObject("CompoundFkTestEntity");
-        CompoundFkTestEntity detail1 = (CompoundFkTestEntity) context
-                .newObject("CompoundFkTestEntity");
+    public void testFetchQualifyingToMany() {
+        CompoundPkTestEntity master  = context.newObject(CompoundPkTestEntity.class);
+        CompoundPkTestEntity master1 = context.newObject(CompoundPkTestEntity.class);
+        CompoundFkTestEntity detail  = context.newObject(CompoundFkTestEntity.class);
+        CompoundFkTestEntity detail1 = context.newObject(CompoundFkTestEntity.class);
+
         master.addToCompoundFkArray(detail);
         master1.addToCompoundFkArray(detail1);
 
@@ -140,11 +129,10 @@ public class DataContextCompoundRelIT extends ServerCase {
         context.invalidateObjects(master, master1, detail, detail1);
 
         Expression qual = ExpressionFactory.matchExp("compoundFkArray", detail1);
-        SelectQuery q = new SelectQuery(CompoundPkTestEntity.class, qual);
-        List<?> objs = context1.performQuery(q);
-        assertEquals(1, objs.size());
+        SelectQuery<CompoundPkTestEntity> q = SelectQuery.query(CompoundPkTestEntity.class, qual);
+        List<CompoundPkTestEntity> objs = q.select(context1);
 
-        master = (CompoundPkTestEntity) objs.get(0);
-        assertEquals("m2", master.getName());
+        assertEquals(1, objs.size());
+        assertEquals("m2", objs.get(0).getName());
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
index 57831f5..2dd4c15 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
@@ -29,7 +29,6 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
 import org.apache.cayenne.unit.di.DataChannelInterceptor;
-import org.apache.cayenne.unit.di.UnitTestClosure;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -115,29 +114,27 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
     public void testOneToMany() throws Exception {
         createArtistWithTwoPaintingsDataSet();
 
-        SelectQuery query = new SelectQuery(Artist.class);
+        SelectQuery<Artist> query = SelectQuery.query(Artist.class);
         query.addPrefetch(Artist.PAINTING_ARRAY.disjointById());
-
-        final List<Artist> result = context.performQuery(query);
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                assertFalse(result.isEmpty());
-                Artist b1 = result.get(0);
-                List<Painting> toMany = (List<Painting>) b1.readPropertyDirectly(Artist.PAINTING_ARRAY.getName());
-                assertNotNull(toMany);
-                assertFalse(((ValueHolder) toMany).isFault());
-                assertEquals(2, toMany.size());
-
-                List<String> names = new ArrayList<String>();
-                for (Painting b : toMany) {
-                    assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
-                    names.add(b.getPaintingTitle());
-                }
-
-                assertTrue(names.contains("Y1"));
-                assertTrue(names.contains("Y2"));
+        List<Artist> result = query.select(context);
+
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+            Artist b1 = result.get(0);
+            @SuppressWarnings("unchecked")
+            List<Painting> toMany = (List<Painting>) b1.readPropertyDirectly(Artist.PAINTING_ARRAY.getName());
+            assertNotNull(toMany);
+            assertFalse(((ValueHolder) toMany).isFault());
+            assertEquals(2, toMany.size());
+
+            List<String> names = new ArrayList<>();
+            for (Painting b : toMany) {
+                assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
+                names.add(b.getPaintingTitle());
             }
+
+            assertTrue(names.contains("Y1"));
+            assertTrue(names.contains("Y2"));
         });
     }
 
@@ -145,19 +142,16 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
     public void testManyToOne() throws Exception {
         createArtistWithTwoPaintingsDataSet();
 
-        SelectQuery query = new SelectQuery(Painting.class);
+        SelectQuery<Painting> query = SelectQuery.query(Painting.class);
         query.addPrefetch(Painting.TO_ARTIST.disjointById());
 
-        final List<Painting> result = context.performQuery(query);
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                assertFalse(result.isEmpty());
-                Painting b1 = result.get(0);
-                assertNotNull(b1.getToArtist());
-                assertEquals(PersistenceState.COMMITTED, b1.getToArtist().getPersistenceState());
-                assertEquals("X", b1.getToArtist().getArtistName());
-            }
+        final List<Painting> result = query.select(context);
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+            Painting b1 = result.get(0);
+            assertNotNull(b1.getToArtist());
+            assertEquals(PersistenceState.COMMITTED, b1.getToArtist().getPersistenceState());
+            assertEquals("X", b1.getToArtist().getArtistName());
         });
     }
 
@@ -165,7 +159,7 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
     public void testFetchLimit() throws Exception {
         createThreeArtistsWithPlentyOfPaintingsDataSet();
 
-        final SelectQuery query = new SelectQuery(Artist.class);
+        SelectQuery<Artist> query = SelectQuery.query(Artist.class);
         query.addPrefetch(Artist.PAINTING_ARRAY.disjointById());
         query.addOrdering("db:" + Artist.ARTIST_ID_PK_COLUMN, SortOrder.ASCENDING);
 
@@ -174,22 +168,19 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
         // There will be only 2 bags in a result. The first bag has 5 boxes and
         // the second has 2. So we are expecting exactly 9 snapshots in the data
         // row store after performing the query.
-        final List<Artist> bags = context.performQuery(query);
+        final List<Artist> bags = query.select(context);
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
+        queryInterceptor.runWithQueriesBlocked(() -> {
 
-            public void execute() {
+            assertEquals(2, bags.size());
 
-                assertEquals(2, bags.size());
+            assertEquals(5, bags.get(0).getPaintingArray().size());
+            assertEquals(2, bags.get(1).getPaintingArray().size());
 
-                assertEquals(5, bags.get(0).getPaintingArray().size());
-                assertEquals(2, bags.get(1).getPaintingArray().size());
-
-                for (Artist b : bags) {
-                    b.getArtistName();
-                    for (Painting bx : b.getPaintingArray()) {
-                        bx.getPaintingTitle();
-                    }
+            for (Artist b : bags) {
+                b.getArtistName();
+                for (Painting bx : b.getPaintingArray()) {
+                    bx.getPaintingTitle();
                 }
             }
         });
@@ -199,22 +190,19 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
     public void testOneToOneRelationship() throws Exception {
         createTwoPaintingsWithInfosDataSet();
 
-        SelectQuery query = new SelectQuery(Painting.class);
+        SelectQuery<Painting> query = SelectQuery.query(Painting.class);
         query.addPrefetch(Painting.TO_PAINTING_INFO.disjointById());
-        final List<Painting> result = context.performQuery(query);
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                assertFalse(result.isEmpty());
-                List<String> boxColors = new ArrayList<String>();
-                for (Painting box : result) {
-                    PaintingInfo info = (PaintingInfo) box.readPropertyDirectly(Painting.TO_PAINTING_INFO.getName());
-                    assertNotNull(info);
-                    boxColors.add(info.getTextReview());
-                    assertEquals(PersistenceState.COMMITTED, info.getPersistenceState());
-                }
-                assertTrue(boxColors.containsAll(Arrays.asList("red", "green")));
+        final List<Painting> result = query.select(context);
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+            List<String> boxColors = new ArrayList<>();
+            for (Painting box : result) {
+                PaintingInfo info = (PaintingInfo) box.readPropertyDirectly(Painting.TO_PAINTING_INFO.getName());
+                assertNotNull(info);
+                boxColors.add(info.getTextReview());
+                assertEquals(PersistenceState.COMMITTED, info.getPersistenceState());
             }
+            assertTrue(boxColors.containsAll(Arrays.asList("red", "green")));
         });
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/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 44b2060..1ec7722 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
@@ -30,7 +30,6 @@ import org.apache.cayenne.testdo.things.Ball;
 import org.apache.cayenne.testdo.things.Box;
 import org.apache.cayenne.testdo.things.Thing;
 import org.apache.cayenne.unit.di.DataChannelInterceptor;
-import org.apache.cayenne.unit.di.UnitTestClosure;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -41,6 +40,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import static org.hamcrest.CoreMatchers.hasItems;
 import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.THINGS_PROJECT)
@@ -123,27 +123,26 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
     public void testFlattenedRelationship() throws Exception {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
-        SelectQuery query = new SelectQuery(Bag.class);
+        SelectQuery<Bag> query = SelectQuery.query(Bag.class);
         query.addPrefetch(Bag.BALLS.disjointById());
-        final List<Bag> result = context.performQuery(query);
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                assertFalse(result.isEmpty());
-                Bag b1 = result.get(0);
-                List<Ball> balls = (List<Ball>) b1.readPropertyDirectly(Bag.BALLS.getName());
-                assertNotNull(balls);
-                assertFalse(((ValueHolder) balls).isFault());
-                assertEquals(6, balls.size());
-
-                List<Integer> volumes = new ArrayList<Integer>();
-                for (Ball b : balls) {
-                    assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
-                    volumes.add(b.getThingVolume());
-                }
-                assertTrue(volumes.containsAll(Arrays.asList(10, 20, 30, 40, 20, 40)));
+        final List<Bag> result = query.select(context);
+
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+            Bag b1 = result.get(0);
+            @SuppressWarnings("unchecked")
+            List<Ball> balls = (List<Ball>) b1.readPropertyDirectly(Bag.BALLS.getName());
+            assertNotNull(balls);
+            assertFalse(((ValueHolder) balls).isFault());
+            assertEquals(6, balls.size());
+
+            List<Integer> volumes = new ArrayList<>();
+            for (Ball b : balls) {
+                assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
+                volumes.add(b.getThingVolume());
             }
+            assertThat(volumes, hasItems(10, 20, 30, 40, 20, 40));
         });
     }
 
@@ -151,27 +150,25 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
     public void testFlattenedMultiColumnRelationship() throws Exception {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
-        SelectQuery query = new SelectQuery(Box.class);
+        SelectQuery<Box> query = new SelectQuery<>(Box.class);
         query.addPrefetch(Box.THINGS.disjointById());
-        final List<Box> result = context.performQuery(query);
-
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                assertFalse(result.isEmpty());
-                List<Integer> volumes = new ArrayList<Integer>();
-                for (Box box : result) {
-                    List<Thing> things = (List<Thing>) box.readPropertyDirectly(Box.THINGS.getName());
-                    assertNotNull(things);
-                    assertFalse(((ValueHolder) things).isFault());
-                    for (Thing t : things) {
-                        assertEquals(PersistenceState.COMMITTED, t.getPersistenceState());
-                        volumes.add(t.getVolume());
-                    }
+        final List<Box> result = query.select(context);
+
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+            List<Integer> volumes = new ArrayList<>();
+            for (Box box : result) {
+                @SuppressWarnings("unchecked")
+                List<Thing> things = (List<Thing>) box.readPropertyDirectly(Box.THINGS.getName());
+                assertNotNull(things);
+                assertFalse(((ValueHolder) things).isFault());
+                for (Thing t : things) {
+                    assertEquals(PersistenceState.COMMITTED, t.getPersistenceState());
+                    volumes.add(t.getVolume());
                 }
-                assertEquals(6, volumes.size());
-                assertTrue(volumes.containsAll(Arrays.asList(10, 20, 30, 40)));
             }
+            assertEquals(6, volumes.size());
+            assertTrue(volumes.containsAll(Arrays.asList(10, 20, 30, 40)));
         });
     }
 
@@ -179,27 +176,25 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
     public void testLongFlattenedRelationship() throws Exception {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
-        SelectQuery query = new SelectQuery(Bag.class);
+        SelectQuery<Bag> query = new SelectQuery<>(Bag.class);
         query.addPrefetch(Bag.THINGS.disjointById());
-        final List<Bag> result = context.performQuery(query);
-
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                assertFalse(result.isEmpty());
-                Bag b1 = result.get(0);
-                List<Thing> things = (List<Thing>) b1.readPropertyDirectly(Bag.THINGS.getName());
-                assertNotNull(things);
-                assertFalse(((ValueHolder) things).isFault());
-                assertEquals(6, things.size());
-
-                List<Integer> volumes = new ArrayList<Integer>();
-                for (Thing t : things) {
-                    assertEquals(PersistenceState.COMMITTED, t.getPersistenceState());
-                    volumes.add(t.getVolume());
-                }
-                assertTrue(volumes.containsAll(Arrays.asList(10, 20, 20, 30, 40, 40)));
+        final List<Bag> result = query.select(context);
+
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+            Bag b1 = result.get(0);
+            @SuppressWarnings("unchecked")
+            List<Thing> things = (List<Thing>) b1.readPropertyDirectly(Bag.THINGS.getName());
+            assertNotNull(things);
+            assertFalse(((ValueHolder) things).isFault());
+            assertEquals(6, things.size());
+
+            List<Integer> volumes = new ArrayList<>();
+            for (Thing t : things) {
+                assertEquals(PersistenceState.COMMITTED, t.getPersistenceState());
+                volumes.add(t.getVolume());
             }
+            assertTrue(volumes.containsAll(Arrays.asList(10, 20, 20, 30, 40, 40)));
         });
     }
 
@@ -207,22 +202,19 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
     public void testMultiColumnRelationship() throws Exception {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
-        SelectQuery query = new SelectQuery(Ball.class);
+        SelectQuery<Ball> query = SelectQuery.query(Ball.class);
         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.disjointById());
 
-        final List<Ball> balls = context.performQuery(query);
-
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
+        final List<Ball> balls = query.select(context);
 
-            public void execute() {
-
-                assertEquals(2, balls.size());
-
-                balls.get(0).getThing().getVolume();
-                balls.get(1).getThing().getVolume();
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertEquals(2, balls.size());
+            for(Ball next : balls) {
+                assertNotNull(balls.get(0).getThing());
+                next.getThing().getVolume();
             }
         });
     }
@@ -231,30 +223,28 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
     public void testJointPrefetchInParent() throws Exception {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
-        SelectQuery query = new SelectQuery(Box.class);
+        SelectQuery<Box> query = new SelectQuery<>(Box.class);
         query.addPrefetch(Box.BALLS.disjointById());
         query.addPrefetch(Box.BALLS.dot(Ball.THING).disjointById());
-        final List<Box> result = context.performQuery(query);
-
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                assertFalse(result.isEmpty());
-                List<Integer> volumes = new ArrayList<Integer>();
-                for (Box box : result) {
-                    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.getName());
-                        assertNotNull(thing);
-                        assertEquals(PersistenceState.COMMITTED, thing.getPersistenceState());
-                        volumes.add(thing.getVolume());
-                    }
+        final List<Box> result = query.select(context);
+
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+            List<Integer> volumes = new ArrayList<>();
+            for (Box box : result) {
+                @SuppressWarnings("unchecked")
+                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.getName());
+                    assertNotNull(thing);
+                    assertEquals(PersistenceState.COMMITTED, thing.getPersistenceState());
+                    volumes.add(thing.getVolume());
                 }
-                assertEquals(6, volumes.size());
-                assertTrue(volumes.containsAll(Arrays.asList(10, 20, 30, 40)));
             }
+            assertEquals(6, volumes.size());
+            assertTrue(volumes.containsAll(Arrays.asList(10, 20, 30, 40)));
         });
     }
 
@@ -262,46 +252,44 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT extends ServerCase {
     public void testJointPrefetchInChild() throws Exception {
         createBagWithTwoBoxesAndPlentyOfBallsDataSet();
 
-        SelectQuery<Bag> query = new SelectQuery<Bag>(Bag.class);
+        SelectQuery<Bag> query = new SelectQuery<>(Bag.class);
         query.addPrefetch(Bag.BOXES.disjointById());
         query.addPrefetch(Bag.BOXES.dot(Box.BALLS).joint());
         final List<Bag> result = context.select(query);
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-        	@Override
-            public void execute() {
-                assertFalse(result.isEmpty());
-
-                Bag bag = result.get(0);
-                List<Box> boxes = (List<Box>) bag.readPropertyDirectly(Bag.BOXES.getName());
-                assertNotNull(boxes);
-                assertFalse(((ValueHolder) boxes).isFault());
-                assertEquals(2, boxes.size());
-
-                Box big = null;
-                List<String> names = new ArrayList<String>();
-                for (Box box : boxes) {
-                    assertEquals(PersistenceState.COMMITTED, box.getPersistenceState());
-                    names.add(box.getName());
-                    if (box.getName().equals("big")) {
-                        big = box;
-                    }
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+
+            Bag bag = result.get(0);
+            @SuppressWarnings("unchecked")
+            List<Box> boxes = (List<Box>) bag.readPropertyDirectly(Bag.BOXES.getName());
+            assertNotNull(boxes);
+            assertFalse(((ValueHolder) boxes).isFault());
+            assertEquals(2, boxes.size());
+
+            Box big = null;
+            List<String> names = new ArrayList<>();
+            for (Box box : boxes) {
+                assertEquals(PersistenceState.COMMITTED, box.getPersistenceState());
+                names.add(box.getName());
+                if (box.getName().equals("big")) {
+                    big = box;
                 }
-                assertTrue(names.contains("big"));
-                assertTrue(names.contains("small"));
-
-                List<Ball> balls = (List<Ball>) big.readPropertyDirectly(Box.BALLS.getName());
-                assertNotNull(balls);
-                assertFalse(((ValueHolder) balls).isFault());
-                assertEquals(2, balls.size());
-                List<Integer> volumes = new ArrayList<Integer>();
-                for (Ball ball : balls) {
-                    assertEquals(PersistenceState.COMMITTED, ball.getPersistenceState());
-                    volumes.add(ball.getThingVolume());
-                }
-                assertTrue(volumes.containsAll(Arrays.asList(10, 20)));
             }
+            assertTrue(names.contains("big"));
+            assertTrue(names.contains("small"));
+
+            @SuppressWarnings("unchecked")
+            List<Ball> balls = (List<Ball>) big.readPropertyDirectly(Box.BALLS.getName());
+            assertNotNull(balls);
+            assertFalse(((ValueHolder) balls).isFault());
+            assertEquals(2, balls.size());
+            List<Integer> volumes = new ArrayList<>();
+            for (Ball ball : balls) {
+                assertEquals(PersistenceState.COMMITTED, ball.getPersistenceState());
+                volumes.add(ball.getThingVolume());
+            }
+            assertTrue(volumes.containsAll(Arrays.asList(10, 20)));
         });
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
index f802a6d..e55a54a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
@@ -128,25 +128,21 @@ public class DataContextEJBQLFetchJoinIT extends ServerCase {
 
         final List<?> objects = context.performQuery(query);
 
-        queryBlocker.runWithQueriesBlocked(new UnitTestClosure() {
+        queryBlocker.runWithQueriesBlocked(() -> {
 
-            public void execute() {
+            assertEquals(2, objects.size());
 
-                assertEquals(2, objects.size());
+            for (Object object : objects) {
+                Artist a = (Artist) object;
+                List<Painting> list = a.getPaintingArray();
 
-                Iterator<?> it = objects.iterator();
-                while (it.hasNext()) {
-                    Artist a = (Artist) it.next();
-                    List<Painting> list = a.getPaintingArray();
+                assertNotNull(list);
+                assertFalse(((ValueHolder) list).isFault());
 
-                    assertNotNull(list);
-                    assertFalse(((ValueHolder) list).isFault());
-
-                    for (Painting p : list) {
-                        assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
-                        // make sure properties are not null..
-                        assertNotNull(p.getPaintingTitle());
-                    }
+                for (Painting p : list) {
+                    assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
+                    // make sure properties are not null..
+                    assertNotNull(p.getPaintingTitle());
                 }
             }
         });
@@ -164,46 +160,38 @@ public class DataContextEJBQLFetchJoinIT extends ServerCase {
 
         final List<?> objects = context.performQuery(query);
 
-        queryBlocker.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-
-                assertEquals(1, objects.size());
+        queryBlocker.runWithQueriesBlocked(() -> {
 
-                Artist a = (Artist) objects.get(0);
-                assertEquals("A1", a.getArtistName());
+            assertEquals(1, objects.size());
 
-                List<Painting> paintings = a.getPaintingArray();
+            Artist a = (Artist) objects.get(0);
+            assertEquals("A1", a.getArtistName());
 
-                assertNotNull(paintings);
-                assertFalse(((ValueHolder) paintings).isFault());
-                assertEquals(2, paintings.size());
+            List<Painting> paintings = a.getPaintingArray();
 
-                List<String> expectedPaintingsNames = new ArrayList<String>();
-                expectedPaintingsNames.add("P11");
-                expectedPaintingsNames.add("P12");
+            assertNotNull(paintings);
+            assertFalse(((ValueHolder) paintings).isFault());
+            assertEquals(2, paintings.size());
 
-                Iterator<Painting> paintingsIterator = paintings.iterator();
-                while (paintingsIterator.hasNext()) {
-                    Painting p = paintingsIterator.next();
-                    assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
-                    assertNotNull(p.getPaintingTitle());
-                    assertTrue(expectedPaintingsNames.contains(p.getPaintingTitle()));
-                }
+            List<String> expectedPaintingsNames = new ArrayList<>();
+            expectedPaintingsNames.add("P11");
+            expectedPaintingsNames.add("P12");
 
-                List<ArtistExhibit> exibits = a.getArtistExhibitArray();
+            for (Painting p : paintings) {
+                assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
+                assertNotNull(p.getPaintingTitle());
+                assertTrue(expectedPaintingsNames.contains(p.getPaintingTitle()));
+            }
 
-                assertNotNull(exibits);
-                assertFalse(((ValueHolder) exibits).isFault());
-                assertEquals(2, exibits.size());
+            List<ArtistExhibit> exibits = a.getArtistExhibitArray();
 
-                Iterator<ArtistExhibit> exibitsIterator = exibits.iterator();
-                while (exibitsIterator.hasNext()) {
-                    ArtistExhibit ae = exibitsIterator.next();
-                    assertEquals(PersistenceState.COMMITTED, ae.getPersistenceState());
-                    assertNotNull(ae.getObjectId());
+            assertNotNull(exibits);
+            assertFalse(((ValueHolder) exibits).isFault());
+            assertEquals(2, exibits.size());
 
-                }
+            for (ArtistExhibit ae : exibits) {
+                assertEquals(PersistenceState.COMMITTED, ae.getPersistenceState());
+                assertNotNull(ae.getObjectId());
             }
         });
     }
@@ -220,14 +208,10 @@ public class DataContextEJBQLFetchJoinIT extends ServerCase {
 
         final List<?> objects = context.performQuery(query);
 
-        queryBlocker.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-
-                assertNotNull(objects);
-                assertFalse(objects.isEmpty());
-                assertEquals(1, objects.size());
-            }
+        queryBlocker.runWithQueriesBlocked(() -> {
+            assertNotNull(objects);
+            assertFalse(objects.isEmpty());
+            assertEquals(1, objects.size());
         });
     }
 
@@ -243,71 +227,68 @@ public class DataContextEJBQLFetchJoinIT extends ServerCase {
 
         final List<?> objects = context.performQuery(query);
 
-        queryBlocker.runWithQueriesBlocked(new UnitTestClosure() {
+        queryBlocker.runWithQueriesBlocked(() -> {
 
-            public void execute() {
+            assertEquals(2, objects.size());
 
-                assertEquals(2, objects.size());
+            Object[] firstRow = (Object[]) objects.get(0);
+            Artist a = (Artist) firstRow[0];
+            assertEquals("A1", a.getArtistName());
 
-                Object[] firstRow = (Object[]) objects.get(0);
-                Artist a = (Artist) firstRow[0];
-                assertEquals("A1", a.getArtistName());
+            List<Painting> paintings = a.getPaintingArray();
 
-                List<Painting> paintings = a.getPaintingArray();
+            assertNotNull(paintings);
+            assertFalse(((ValueHolder) paintings).isFault());
+            assertEquals(2, paintings.size());
 
-                assertNotNull(paintings);
-                assertFalse(((ValueHolder) paintings).isFault());
-                assertEquals(2, paintings.size());
-
-                List<String> expectedPaintingsNames = new ArrayList<String>();
-                expectedPaintingsNames.add("P11");
-                expectedPaintingsNames.add("P12");
-
-                Iterator<Painting> paintingsIterator = paintings.iterator();
-                while (paintingsIterator.hasNext()) {
-                    Painting p = paintingsIterator.next();
-                    assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
-                    assertNotNull(p.getPaintingTitle());
-                    assertTrue(expectedPaintingsNames.contains(p.getPaintingTitle()));
-                }
-                String artistName = (String) firstRow[1];
-                assertEquals("A1", artistName);
+            List<String> expectedPaintingsNames = new ArrayList<>();
+            expectedPaintingsNames.add("P11");
+            expectedPaintingsNames.add("P12");
 
-                Gallery g1 = (Gallery) firstRow[2];
-                assertEquals("gallery1", g1.getGalleryName());
+            Iterator<Painting> paintingsIterator = paintings.iterator();
+            while (paintingsIterator.hasNext()) {
+                Painting p = paintingsIterator.next();
+                assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
+                assertNotNull(p.getPaintingTitle());
+                assertTrue(expectedPaintingsNames.contains(p.getPaintingTitle()));
+            }
+            String artistName = (String) firstRow[1];
+            assertEquals("A1", artistName);
 
-                List<Exhibit> exibits = g1.getExhibitArray();
+            Gallery g1 = (Gallery) firstRow[2];
+            assertEquals("gallery1", g1.getGalleryName());
 
-                assertNotNull(exibits);
-                assertFalse(((ValueHolder) exibits).isFault());
-                assertEquals(2, exibits.size());
+            List<Exhibit> exibits = g1.getExhibitArray();
 
-                Object[] secondRow = (Object[]) objects.get(1);
-                a = (Artist) secondRow[0];
-                assertEquals("A2", a.getArtistName());
+            assertNotNull(exibits);
+            assertFalse(((ValueHolder) exibits).isFault());
+            assertEquals(2, exibits.size());
 
-                paintings = a.getPaintingArray();
+            Object[] secondRow = (Object[]) objects.get(1);
+            a = (Artist) secondRow[0];
+            assertEquals("A2", a.getArtistName());
 
-                assertNotNull(paintings);
-                assertFalse(((ValueHolder) paintings).isFault());
-                assertEquals(1, paintings.size());
+            paintings = a.getPaintingArray();
 
-                expectedPaintingsNames = new ArrayList<String>();
-                expectedPaintingsNames.add("P2");
+            assertNotNull(paintings);
+            assertFalse(((ValueHolder) paintings).isFault());
+            assertEquals(1, paintings.size());
 
-                paintingsIterator = paintings.iterator();
-                while (paintingsIterator.hasNext()) {
-                    Painting p = paintingsIterator.next();
-                    assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
-                    assertNotNull(p.getPaintingTitle());
-                    assertTrue(expectedPaintingsNames.contains(p.getPaintingTitle()));
-                }
-                artistName = (String) secondRow[1];
-                assertEquals("A2", artistName);
+            expectedPaintingsNames = new ArrayList<>();
+            expectedPaintingsNames.add("P2");
 
-                Gallery g2 = (Gallery) secondRow[2];
-                assertEquals(g1, g2);
+            paintingsIterator = paintings.iterator();
+            while (paintingsIterator.hasNext()) {
+                Painting p = paintingsIterator.next();
+                assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
+                assertNotNull(p.getPaintingTitle());
+                assertTrue(expectedPaintingsNames.contains(p.getPaintingTitle()));
             }
+            artistName = (String) secondRow[1];
+            assertEquals("A2", artistName);
+
+            Gallery g2 = (Gallery) secondRow[2];
+            assertEquals(g1, g2);
         });
     }
 
@@ -322,101 +303,96 @@ public class DataContextEJBQLFetchJoinIT extends ServerCase {
         EJBQLQuery query = new EJBQLQuery(ejbql);
 
         final List<?> objects = context.performQuery(query);
-        queryBlocker.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
+        queryBlocker.runWithQueriesBlocked(() -> {
 
-                assertEquals(6, objects.size());
+            assertEquals(6, objects.size());
 
-                Object[] row = (Object[]) objects.get(0);
-                Artist a1 = (Artist) row[0];
-                assertEquals("A1", a1.getArtistName());
+            Object[] row = (Object[]) objects.get(0);
+            Artist a1 = (Artist) row[0];
+            assertEquals("A1", a1.getArtistName());
 
-                List<Painting> paintings = a1.getPaintingArray();
+            List<Painting> paintings = a1.getPaintingArray();
 
-                assertNotNull(paintings);
-                assertFalse(((ValueHolder) paintings).isFault());
-                assertEquals(2, paintings.size());
+            assertNotNull(paintings);
+            assertFalse(((ValueHolder) paintings).isFault());
+            assertEquals(2, paintings.size());
 
-                List<String> expectedPaintingsNames = new ArrayList<String>();
-                expectedPaintingsNames.add("P11");
-                expectedPaintingsNames.add("P12");
+            List<String> expectedPaintingsNames = new ArrayList<>();
+            expectedPaintingsNames.add("P11");
+            expectedPaintingsNames.add("P12");
 
-                Iterator<Painting> paintingsIterator = paintings.iterator();
-                while (paintingsIterator.hasNext()) {
-                    Painting p = paintingsIterator.next();
-                    assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
-                    assertNotNull(p.getPaintingTitle());
-                    assertTrue(expectedPaintingsNames.contains(p.getPaintingTitle()));
-                }
-                String artistName1 = (String) row[1];
-                assertEquals("A1", artistName1);
+            for (Painting p : paintings) {
+                assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
+                assertNotNull(p.getPaintingTitle());
+                assertTrue(expectedPaintingsNames.contains(p.getPaintingTitle()));
+            }
+            String artistName1 = (String) row[1];
+            assertEquals("A1", artistName1);
 
-                Gallery g1 = (Gallery) row[2];
-                assertEquals("gallery1", g1.getGalleryName());
+            Gallery g1 = (Gallery) row[2];
+            assertEquals("gallery1", g1.getGalleryName());
 
-                List<?> exibits = g1.getExhibitArray();
+            List<?> exibits = g1.getExhibitArray();
 
-                assertNotNull(exibits);
-                assertFalse(((ValueHolder) exibits).isFault());
-                assertEquals(2, exibits.size());
+            assertNotNull(exibits);
+            assertFalse(((ValueHolder) exibits).isFault());
+            assertEquals(2, exibits.size());
 
-                row = (Object[]) objects.get(1);
+            row = (Object[]) objects.get(1);
 
-                assertEquals(a1, row[0]);
-                assertEquals(artistName1, row[1]);
+            assertEquals(a1, row[0]);
+            assertEquals(artistName1, row[1]);
 
-                Gallery g2 = (Gallery) row[2];
-                assertEquals("gallery2", g2.getGalleryName());
+            Gallery g2 = (Gallery) row[2];
+            assertEquals("gallery2", g2.getGalleryName());
 
-                exibits = g2.getExhibitArray();
+            exibits = g2.getExhibitArray();
 
-                assertTrue(exibits.isEmpty());
+            assertTrue(exibits.isEmpty());
 
-                row = (Object[]) objects.get(2);
+            row = (Object[]) objects.get(2);
 
-                Artist a2 = (Artist) row[0];
-                assertEquals("A2", a2.getArtistName());
+            Artist a2 = (Artist) row[0];
+            assertEquals("A2", a2.getArtistName());
 
-                paintings = a2.getPaintingArray();
+            paintings = a2.getPaintingArray();
 
-                assertNotNull(paintings);
-                assertEquals(1, paintings.size());
+            assertNotNull(paintings);
+            assertEquals(1, paintings.size());
 
-                Painting p = paintings.get(0);
-                assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
-                assertNotNull(p.getPaintingTitle());
-                assertEquals("P2", p.getPaintingTitle());
+            Painting p = paintings.get(0);
+            assertEquals(PersistenceState.COMMITTED, p.getPersistenceState());
+            assertNotNull(p.getPaintingTitle());
+            assertEquals("P2", p.getPaintingTitle());
 
-                String artistName2 = (String) row[1];
-                assertEquals("A2", artistName2);
-                assertEquals(g1, row[2]);
+            String artistName2 = (String) row[1];
+            assertEquals("A2", artistName2);
+            assertEquals(g1, row[2]);
 
-                row = (Object[]) objects.get(3);
+            row = (Object[]) objects.get(3);
 
-                assertEquals(a2, row[0]);
-                assertEquals(artistName2, row[1]);
-                assertEquals(g2, row[2]);
+            assertEquals(a2, row[0]);
+            assertEquals(artistName2, row[1]);
+            assertEquals(g2, row[2]);
 
-                row = (Object[]) objects.get(4);
+            row = (Object[]) objects.get(4);
 
-                Artist a3 = (Artist) row[0];
-                assertEquals("A3", a3.getArtistName());
+            Artist a3 = (Artist) row[0];
+            assertEquals("A3", a3.getArtistName());
 
-                paintings = a3.getPaintingArray();
+            paintings = a3.getPaintingArray();
 
-                assertTrue(paintings.isEmpty());
+            assertTrue(paintings.isEmpty());
 
-                String artistName3 = (String) row[1];
-                assertEquals("A3", artistName3);
-                assertEquals(g1, row[2]);
+            String artistName3 = (String) row[1];
+            assertEquals("A3", artistName3);
+            assertEquals(g1, row[2]);
 
-                row = (Object[]) objects.get(5);
+            row = (Object[]) objects.get(5);
 
-                assertEquals(a3, row[0]);
-                assertEquals(artistName3, row[1]);
-                assertEquals(g2, row[2]);
-            }
+            assertEquals(a3, row[0]);
+            assertEquals(artistName3, row[1]);
+            assertEquals(g2, row[2]);
         });
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
index 4d7f4b7..fb8f7a5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
@@ -111,29 +111,22 @@ public class DataContextFlattenedAttributesIT extends ServerCase {
     @Test
     public void testSelectCompound1() throws Exception {
         createTestDataSet();
-        SelectQuery query = new SelectQuery(CompoundPainting.class);
-        List<?> objects = context.performQuery(query);
+        SelectQuery<CompoundPainting> query = SelectQuery.query(CompoundPainting.class);
+        List<CompoundPainting> objects = query.select(context);
 
         assertNotNull(objects);
         assertEquals(8, objects.size());
-        assertTrue(
-                "CompoundPainting expected, got " + objects.get(0).getClass(),
-                objects.get(0) instanceof CompoundPainting);
+        assertTrue("CompoundPainting expected, got null", objects.get(0) != null);
 
-        for (Iterator<?> i = objects.iterator(); i.hasNext();) {
-            CompoundPainting painting = (CompoundPainting) i.next();
-            Number id = (Number) painting
-                    .getObjectId()
-                    .getIdSnapshot()
-                    .get("PAINTING_ID");
+        for (CompoundPainting painting : objects) {
+            Number id = (Number) painting.getObjectId().getIdSnapshot().get("PAINTING_ID");
             assertEquals(
                     "CompoundPainting.getPaintingTitle(): " + painting.getPaintingTitle(),
                     "painting" + id,
                     painting.getPaintingTitle());
             if (painting.getToPaintingInfo() == null) {
                 assertNull(painting.getTextReview());
-            }
-            else {
+            } else {
                 assertEquals(
                         "CompoundPainting.getTextReview(): " + painting.getTextReview(),
                         "painting review" + id,
@@ -145,8 +138,7 @@ public class DataContextFlattenedAttributesIT extends ServerCase {
                     painting.getArtistName());
             if (painting.getToGallery() == null) {
                 assertNull(painting.getGalleryName());
-            }
-            else {
+            } else {
                 assertEquals(
                         "CompoundPainting.getGalleryName(): " + painting.getGalleryName(),
                         painting.getToGallery().getGalleryName(),
@@ -156,25 +148,21 @@ public class DataContextFlattenedAttributesIT extends ServerCase {
     }
 
     // TODO: andrus 1/5/2007 - CAY-952: SelectQuery uses INNER JOIN for flattened
-    // attributes, while
-    // EJBQLQuery does an OUTER JOIN... which seems like a better idea...
+    // attributes, while EJBQLQuery does an OUTER JOIN... which seems like a better idea...
     // 14/01/2010 now it uses LEFT JOIN
     @Test
     public void testSelectCompound2() throws Exception {
         createTestDataSet();
-        SelectQuery query = new SelectQuery(
+        SelectQuery<CompoundPainting> query = SelectQuery.query(
                 CompoundPainting.class,
                 ExpressionFactory.matchExp("artistName", "artist2"));
-        List<?> objects = context.performQuery(query);
+        List<CompoundPainting> objects = query.select(context);
 
         assertNotNull(objects);
         assertEquals(2, objects.size());
-        assertTrue(
-                "CompoundPainting expected, got " + objects.get(0).getClass(),
-                objects.get(0) instanceof CompoundPainting);
+        assertTrue("CompoundPainting expected, got null", objects.get(0) != null);
 
-        for (Iterator<?> i = objects.iterator(); i.hasNext();) {
-            CompoundPainting painting = (CompoundPainting) i.next();
+        for (CompoundPainting painting : objects) {
             assertEquals(PersistenceState.COMMITTED, painting.getPersistenceState());
 
             assertEquals(
@@ -197,7 +185,7 @@ public class DataContextFlattenedAttributesIT extends ServerCase {
     @Test
     public void testSelectCompoundLongNames() throws Exception {
         createTestDataSet();
-        SelectQuery query = new SelectQuery(CompoundPaintingLongNames.class);
+        SelectQuery<CompoundPaintingLongNames> query = SelectQuery.query(CompoundPaintingLongNames.class);
         // the error was thrown on query execution
         List<?> objects = context.performQuery(query);
         assertNotNull(objects);
@@ -215,9 +203,8 @@ public class DataContextFlattenedAttributesIT extends ServerCase {
         assertTrue(
                 "CompoundPainting expected, got " + objects.get(0).getClass(),
                 objects.get(0) instanceof CompoundPainting);
-        Iterator<?> i = objects.iterator();
-        while (i.hasNext()) {
-            CompoundPainting painting = (CompoundPainting) i.next();
+        for (Object object : objects) {
+            CompoundPainting painting = (CompoundPainting) object;
             assertEquals(PersistenceState.COMMITTED, painting.getPersistenceState());
         }
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
index d99055c..1de1417 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
@@ -101,16 +101,14 @@ public class DataContextJoinAliasesIT extends ServerCase {
         Artist picasso = Cayenne.objectForPK(context, Artist.class, 1);
         Artist dali = Cayenne.objectForPK(context, Artist.class, 2);
 
-        SelectQuery query = new SelectQuery(Gallery.class);
-        query.andQualifier(ExpressionFactory.matchAllExp(
-                "|exhibitArray.artistExhibitArray.toArtist",
-                picasso,
-                dali));
+        SelectQuery<Gallery> query = SelectQuery.query(Gallery.class);
+        query.andQualifier(ExpressionFactory.matchAllExp("|exhibitArray.artistExhibitArray.toArtist", picasso, dali));
 
-        List<Gallery> galleries = context.performQuery(query);
+        List<Gallery> galleries = query.select(context);
 
         assertEquals(1, galleries.size());
         assertEquals("G1", galleries.get(0).getGalleryName());
+
     }
 
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/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 68506d2..974d641 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
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.access;
 
-import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.FunctionExpressionFactory;
@@ -45,7 +44,7 @@ public class DataContextOrderingIT extends ServerCase {
     private DataContext context;
 
     @Test
-    public void testMultipleOrdering() throws Exception {
+    public void testMultipleOrdering() {
 
         Calendar c = Calendar.getInstance();
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/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 3842a5f..eb998fb 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
@@ -86,7 +86,7 @@ public class DataContextOuterJoinsIT extends ServerCase {
 		missingToManyQuery.andQualifier(Artist.GROUP_ARRAY.outer().isNull());
 		missingToManyQuery.addOrdering(Artist.ARTIST_NAME.asc());
 
-		List<Artist> artists = context.performQuery(missingToManyQuery);
+		List<Artist> artists = missingToManyQuery.select(context);
 		assertEquals(1, artists.size());
 		assertEquals("BB1", artists.get(0).getArtistName());
 	}
@@ -102,20 +102,20 @@ public class DataContextOuterJoinsIT extends ServerCase {
 		paintingHelper.insert(33001, 33001, "P1");
 		paintingHelper.insert(33002, 33002, "P2");
 
-		SelectQuery missingToManyQuery = new SelectQuery(Artist.class);
+		SelectQuery<Artist> missingToManyQuery = SelectQuery.query(Artist.class);
 		missingToManyQuery.andQualifier(Artist.PAINTING_ARRAY.outer().isNull());
 		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<Artist> mixedConditionQuery = new SelectQuery<>(Artist.class);
+		SelectQuery<Artist> mixedConditionQuery = SelectQuery.query(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());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesIT.java
index 46f7a80..adbd1ba 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesIT.java
@@ -74,12 +74,12 @@ public class DataContextSelectQuerySplitAliasesIT extends ServerCase {
     public void testAliasPathSplits_SinglePath() throws Exception {
         createTwoArtistsTwoPaintingsDataSet();
 
-        SelectQuery query = new SelectQuery(Artist.class);
+        SelectQuery<Artist> query = SelectQuery.query(Artist.class);
         query.andQualifier(ExpressionFactory.matchExp("p.paintingTitle", "X"));
 
         query.aliasPathSplits("paintingArray", "p");
 
-        List<Artist> artists = context.performQuery(query);
+        List<Artist> artists = query.select(context);
         assertEquals(1, artists.size());
         assertEquals("AA", artists.get(0).getArtistName());
     }
@@ -88,13 +88,13 @@ public class DataContextSelectQuerySplitAliasesIT extends ServerCase {
     public void testAliasPathSplits_SplitJoin() throws Exception {
         createTwoArtistsThreePaintingsDataSet();
 
-        SelectQuery query = new SelectQuery(Artist.class);
+        SelectQuery<Artist> query = SelectQuery.query(Artist.class);
         query.andQualifier(ExpressionFactory.matchExp("p1.paintingTitle", "X"));
         query.andQualifier(ExpressionFactory.matchExp("p2.paintingTitle", "Y"));
 
         query.aliasPathSplits("paintingArray", "p1", "p2");
 
-        List<Artist> artists = context.performQuery(query);
+        List<Artist> artists = query.select(context);
         assertEquals(1, artists.size());
         assertEquals("BB", artists.get(0).getArtistName());
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
index 68e1944..65f57e4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
@@ -24,6 +24,7 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.map.DeleteRule;
 import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
@@ -207,7 +208,7 @@ public class DeleteObjectIT extends ServerCase {
     public void testDeleteHollow() throws Exception {
         createHollowDataSet();
 
-        List<Painting> paintings = context.performQuery(new SelectQuery(Painting.class));
+        List<Painting> paintings = ObjectSelect.query(Painting.class).select(context);
 
         Painting p = paintings.get(0);
         Artist a = p.getToArtist();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/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 b9174c9..98f8b44 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
@@ -22,12 +22,14 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.ExpressionFactory;
+import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.query.ObjectIdQuery;
 import org.apache.cayenne.query.RelationshipQuery;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.query.UpdateBatchQuery;
+import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.testdo.quotemap.QuoteAdress;
 import org.apache.cayenne.testdo.quotemap.Quote_Person;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
@@ -48,9 +50,11 @@ public class QuotedIdentifiersIT extends ServerCase {
     @Inject
     private ObjectContext context;
 
+    @Inject
+    protected DBHelper dbHelper;
+
     @Before
     public void setUp() throws Exception {
-
         QuoteAdress quoteAdress = context.newObject(QuoteAdress.class);
         quoteAdress.setCity("city");
         quoteAdress.setGroup("324");
@@ -63,13 +67,43 @@ public class QuotedIdentifiersIT extends ServerCase {
 
         context.commitChanges();
 
-        SelectQuery q = new SelectQuery(QuoteAdress.class);
-        List objects = context.performQuery(q);
-        assertEquals(1, objects.size());
+        QuoteAdress quoteAdress2 = context.newObject(QuoteAdress.class);
+        quoteAdress2.setCity("city2");
+
+        Quote_Person quote_Person2 = context.newObject(Quote_Person.class);
+        quote_Person2.setSalary(100);
+        quote_Person2.setName("Name");
+        quote_Person2.setGroup("1111");
+        quote_Person2.setDAte(new Date());
+        quote_Person2.setAddress_Rel(quoteAdress2);
+
+        context.commitChanges();
+    }
+
+    @Test
+    public void testDataSetup() {
+        SelectQuery<QuoteAdress> q = SelectQuery.query(QuoteAdress.class);
+        List<QuoteAdress> objects = q.select(context);
+        assertEquals(2, objects.size());
+
+        SelectQuery<Quote_Person> qQuote_Person = SelectQuery.query(Quote_Person.class);
+        List<Quote_Person> objects2 = qQuote_Person.select(context);
+        assertEquals(2, objects2.size());
+    }
+
+    @Test
+    public void testInsert() {
+        QuoteAdress quoteAdress = context.newObject(QuoteAdress.class);
+        quoteAdress.setCity("city");
+        quoteAdress.setGroup("324");
+
+        Quote_Person quote_Person = context.newObject(Quote_Person.class);
+        quote_Person.setSalary(10000);
+        quote_Person.setName("Arcadi");
+        quote_Person.setGroup("107324");
+        quote_Person.setAddress_Rel(quoteAdress);
 
-        SelectQuery qQuote_Person = new SelectQuery(Quote_Person.class);
-        List objects2 = context.performQuery(qQuote_Person);
-        assertEquals(1, objects2.size());
+        context.commitChanges();
 
         QuoteAdress quoteAdress2 = context.newObject(QuoteAdress.class);
         quoteAdress2.setCity("city2");
@@ -82,34 +116,41 @@ public class QuotedIdentifiersIT extends ServerCase {
         quote_Person2.setAddress_Rel(quoteAdress2);
 
         context.commitChanges();
+
+        SelectQuery<QuoteAdress> q = SelectQuery.query(QuoteAdress.class);
+        List<QuoteAdress> objects = q.select(context);
+        assertEquals(4, objects.size());
+
+        SelectQuery<Quote_Person> qQuote_Person = SelectQuery.query(Quote_Person.class);
+        List<Quote_Person> objects2 = qQuote_Person.select(context);
+        assertEquals(4, objects2.size());
     }
 
     @Test
-    public void testPrefetchQuote() throws Exception {
+    public void testPrefetchQuote() {
         DbEntity entity = context.getEntityResolver().getObjEntity(QuoteAdress.class).getDbEntity();
-        List idAttributes = Collections.singletonList(entity.getAttribute("City"));
-        List updatedAttributes = Collections.singletonList(entity.getAttribute("City"));
+        List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("City"));
+        List<DbAttribute> updatedAttributes = Collections.singletonList(entity.getAttribute("City"));
 
-        UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
-                Collections.<String> emptySet(), 1);
+        UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, Collections.emptySet(), 1);
 
         List objects3 = context.performQuery(updateQuery);
         assertEquals(0, objects3.size());
 
-        SelectQuery qQuote_Person2 = new SelectQuery(Quote_Person.class);
-        List objects4 = context.performQuery(qQuote_Person2);
+        SelectQuery<Quote_Person> qQuote_Person2 = SelectQuery.query(Quote_Person.class);
+        List<Quote_Person> objects4 = qQuote_Person2.select(context);
         assertEquals(2, objects4.size());
 
-        SelectQuery qQuote_Person3 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("salary", 100));
-        List objects5 = context.performQuery(qQuote_Person3);
+        SelectQuery<Quote_Person> qQuote_Person3 = SelectQuery.query(Quote_Person.class, ExpressionFactory.matchExp("salary", 100));
+        List<Quote_Person> objects5 = qQuote_Person3.select(context);
         assertEquals(1, objects5.size());
 
-        SelectQuery qQuote_Person4 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("group", "107324"));
-        List objects6 = context.performQuery(qQuote_Person4);
+        SelectQuery<Quote_Person> qQuote_Person4 = SelectQuery.query(Quote_Person.class, ExpressionFactory.matchExp("group", "107324"));
+        List<Quote_Person> objects6 = qQuote_Person4.select(context);
         assertEquals(1, objects6.size());
 
-        SelectQuery quoteAdress1 = new SelectQuery(QuoteAdress.class, ExpressionFactory.matchExp("group", "324"));
-        List objects7 = context.performQuery(quoteAdress1);
+        SelectQuery<QuoteAdress> quoteAdress1 = SelectQuery.query(QuoteAdress.class, ExpressionFactory.matchExp("group", "324"));
+        List<QuoteAdress> objects7 = quoteAdress1.select(context);
         assertEquals(1, objects7.size());
 
         ObjectIdQuery queryObjectId = new ObjectIdQuery(new ObjectId("QuoteAdress", QuoteAdress.GROUP.getName(), "324"));
@@ -121,8 +162,8 @@ public class QuotedIdentifiersIT extends ServerCase {
         List objects9 = context.performQuery(queryObjectId2);
         assertEquals(1, objects9.size());
 
-        SelectQuery person2Query = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("name", "Name"));
-        Quote_Person quote_Person2 = (Quote_Person) context.performQuery(person2Query).get(0);
+        SelectQuery<Quote_Person> person2Query = SelectQuery.query(Quote_Person.class, ExpressionFactory.matchExp("name", "Name"));
+        Quote_Person quote_Person2 = person2Query.select(context).get(0);
 
         RelationshipQuery relationshipQuery = new RelationshipQuery(quote_Person2.getObjectId(), "address_Rel");
         List objects10 = context.performQuery(relationshipQuery);
@@ -130,7 +171,7 @@ public class QuotedIdentifiersIT extends ServerCase {
     }
 
     @Test
-    public void testQuotedEJBQLQuery() throws Exception {
+    public void testQuotedEJBQLQuery() {
         String ejbql = "select a from QuoteAdress a where a.group = '324'";
         EJBQLQuery queryEJBQL = new EJBQLQuery(ejbql);
         List objects11 = context.performQuery(queryEJBQL);
@@ -138,7 +179,7 @@ public class QuotedIdentifiersIT extends ServerCase {
     }
 
     @Test
-    public void testQuotedEJBQLQueryWithJoin() throws Exception {
+    public void testQuotedEJBQLQueryWithJoin() {
         String ejbql = "select p from Quote_Person p join p.address_Rel a where p.name = 'Arcadi'";
         EJBQLQuery queryEJBQL = new EJBQLQuery(ejbql);
         List resultList = context.performQuery(queryEJBQL);
@@ -146,9 +187,10 @@ public class QuotedIdentifiersIT extends ServerCase {
     }
 
     @Test
-    public void testQuotedEJBQLQueryWithOrderBy() throws Exception {
+    public void testQuotedEJBQLQueryWithOrderBy() {
         EJBQLQuery query = new EJBQLQuery("select p from Quote_Person p order by p.name");
 
+        @SuppressWarnings("unchecked")
         List<Quote_Person> resultList = (List<Quote_Person>) context.performQuery(query);
 
         assertEquals(2, resultList.size());
@@ -157,7 +199,7 @@ public class QuotedIdentifiersIT extends ServerCase {
     }
 
     @Test
-    public void testQuotedEJBQLCountQuery() throws Exception {
+    public void testQuotedEJBQLCountQuery() {
         EJBQLQuery query = new EJBQLQuery("select count(p) from Quote_Person p");
         assertEquals(Collections.singletonList(2L), context.performQuery(query));
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/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 4dabb68..198a28f 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
@@ -764,7 +764,7 @@ public class ReturnTypesMappingIT extends ServerCase {
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
-        cal.set(2003, 1, 1, 1, 20, 30);
+        cal.set(2003, Calendar.FEBRUARY, 1, 1, 20, 30);
         Date timeValue = new Time(cal.getTime().getTime());
         test.setTimeColumn(timeValue);
         context.commitChanges();
@@ -783,13 +783,13 @@ public class ReturnTypesMappingIT extends ServerCase {
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
-        cal.set(2003, 1, 1, 1, 20, 30);
+        cal.set(2003, Calendar.FEBRUARY, 1, 1, 20, 30);
         Date timeValue = new Time(cal.getTime().getTime());
         test.setTimeColumn(timeValue);
         context.commitChanges();
 
-        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
-        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        SelectQuery<ReturnTypesMap1> q = new SelectQuery<>(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = q.selectOne(context);
         Date columnValue = testRead.getTimeColumn();
         assertNotNull(columnValue);
         assertEquals(Date.class, columnValue.getClass());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/configuration/xml/BaseHandlerTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/configuration/xml/BaseHandlerTest.java b/cayenne-server/src/test/java/org/apache/cayenne/configuration/xml/BaseHandlerTest.java
index 4cefbff..f73f11a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/configuration/xml/BaseHandlerTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/configuration/xml/BaseHandlerTest.java
@@ -35,7 +35,7 @@ import org.xml.sax.helpers.DefaultHandler;
 public abstract class BaseHandlerTest {
 
     protected void parse(String tag, HandlerFactory factory) throws Exception {
-        try(InputStream in = DbKeyGeneratorHandlerTest.class.getResource(getClass().getSimpleName() + ".xml").openStream()) {
+        try(InputStream in = BaseHandlerTest.class.getResource(getClass().getSimpleName() + ".xml").openStream()) {
             XMLReader parser = Util.createXmlReader();
             DefaultHandler handler = new TestRootHandler(parser, tag, factory);
             parser.setContentHandler(handler);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/dba/DefaultQuotingStrategyTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/dba/DefaultQuotingStrategyTest.java b/cayenne-server/src/test/java/org/apache/cayenne/dba/DefaultQuotingStrategyTest.java
index 27d725e..e5b5bcb 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/dba/DefaultQuotingStrategyTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/dba/DefaultQuotingStrategyTest.java
@@ -27,7 +27,7 @@ import static org.junit.Assert.assertEquals;
 public class DefaultQuotingStrategyTest {
 
     @Test
-    public void testQuotedIdentifer() {
+    public void testQuotedIdentifier() {
 
         DataMap dm = new DataMap();
         dm.setQuotingSQLIdentifiers(true);
@@ -41,7 +41,7 @@ public class DefaultQuotingStrategyTest {
     }
 
     @Test
-    public void testUnQuotedIdentifer() {
+    public void testUnQuotedIdentifier() {
 
         DataMap dm = new DataMap();
         dm.setQuotingSQLIdentifiers(false);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
index 232378f..3ebbe1c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
@@ -81,13 +81,13 @@ public class SelectQueryClobIT extends ServerCase {
 
             // see CAY-1539... CLOB column causes suppression of DISTINCT in
             // SQL, and hence the offset processing is done in memory
-            SelectQuery<ClobTestEntity> query = new SelectQuery<ClobTestEntity>(ClobTestEntity.class);
+            SelectQuery<ClobTestEntity> query = new SelectQuery<>(ClobTestEntity.class);
             query.addOrdering("db:" + ClobTestEntity.CLOB_TEST_ID_PK_COLUMN, SortOrder.ASCENDING);
             query.setFetchLimit(1);
             query.setFetchOffset(1);
             query.setDistinct(true);
 
-            List<ClobTestEntity> objects = context.performQuery(query);
+            List<ClobTestEntity> objects = query.select(context);
             assertEquals(1, objects.size());
             assertEquals(2, Cayenne.intPKForObject(objects.get(0)));
         }
@@ -97,7 +97,7 @@ public class SelectQueryClobIT extends ServerCase {
     public void testSelectEqualsClob() throws Exception {
         if (accessStackAdapter.supportsLobComparisons()) {
             createClobDataSet();
-            SelectQuery<ClobTestEntity> query = new SelectQuery<ClobTestEntity>(ClobTestEntity.class);
+            SelectQuery<ClobTestEntity> query = new SelectQuery<>(ClobTestEntity.class);
             Expression qual = ExpressionFactory.matchExp("clobCol", "clob1");
             query.setQualifier(qual);
             List<?> objects = context.performQuery(query);
@@ -109,7 +109,7 @@ public class SelectQueryClobIT extends ServerCase {
     public void testSelectNotEqualsClob() throws Exception {
         if (accessStackAdapter.supportsLobComparisons()) {
             createClobDataSet();
-            SelectQuery query = new SelectQuery(ClobTestEntity.class);
+            SelectQuery query = new SelectQuery<>(ClobTestEntity.class);
             Expression qual = ExpressionFactory.noMatchExp("clobCol", "clob1");
             query.setQualifier(qual);
             List<?> objects = context.performQuery(query);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0a83ab70/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
index 59b8a56..1bd6d1b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
+import java.sql.ResultSet;
 import java.sql.Types;
 import java.util.Arrays;
 import java.util.Collections;
@@ -127,7 +128,7 @@ public class SelectQueryIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		int totalRows = new SelectQuery<>(Artist.class).select(context).size();
+		long totalRows = ObjectSelect.query(Artist.class).selectCount(context);
 
 		SelectQuery<Artist> query = new SelectQuery<>(Artist.class);
 		query.addOrdering("db:" + Artist.ARTIST_ID_PK_COLUMN, SortOrder.ASCENDING);
@@ -319,8 +320,7 @@ public class SelectQueryIT extends ServerCase {
 
 		createArtistsWildcardDataSet();
 
-		// CAY-1978 - combining LIKE..ESCAPE with another clause generated bad
-		// SQL
+		// CAY-1978 - combining LIKE..ESCAPE with another clause generated bad SQL
 		SelectQuery<Artist> query = new SelectQuery<>(Artist.class);
 		query.andQualifier(ExpressionFactory.likeIgnoreCaseExp("artistName", "=_%", '='));
 		query.andQualifier(Artist.ARTIST_NAME.eq("_X"));
@@ -506,7 +506,7 @@ public class SelectQueryIT extends ServerCase {
 		Expression qual = ExpressionFactory.matchExp("artistName", "artist1");
 		query.setQualifier(qual);
 
-		Artist artist = (Artist) query.selectOne(context);
+		Artist artist = query.selectOne(context);
 		assertEquals("artist1", artist.getArtistName());
 	}