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/27 11:47:11 UTC

[2/2] cayenne git commit: Code cleanup

Code cleanup


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

Branch: refs/heads/master
Commit: c659ee05d70ebc4f05c4e93f0d05a6cbcf317b72
Parents: e4f58f9
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Jul 27 13:36:24 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Jul 27 13:36:24 2018 +0300

----------------------------------------------------------------------
 .../cayenne/remote/MockClientConnection.java    |   8 +-
 .../cayenne/util/PersistentObjectListTest.java  |   4 +-
 ...otostuffPersistentObjectCollectionsTest.java |   4 +-
 .../cayenne/remote/hessian/HessianConfig.java   |   2 +-
 .../cayenne/access/DataDomainQueryAction.java   |   7 +-
 .../access/HierarchicalObjectResolver.java      |  36 +-
 .../cayenne/access/ListWithPrefetches.java      |  23 +-
 .../access/PrefetchProcessorTreeBuilder.java    |  17 +-
 .../access/NestedDataContextWriteIT.java        | 404 +++++++++----------
 .../access/PrefetchProcessorTreeBuilderIT.java  |   8 +-
 .../apache/cayenne/velocity/BindDirective.java  |   7 +-
 .../cayenne/asciidoc/CayennePostProcessor.java  |  12 +-
 .../cayenne/stubs/CayenneProjectStub.java       |   2 +-
 .../wocompat/PropertyListSerializationTest.java |  63 +--
 14 files changed, 285 insertions(+), 312 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-client/src/test/java/org/apache/cayenne/remote/MockClientConnection.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/remote/MockClientConnection.java b/cayenne-client/src/test/java/org/apache/cayenne/remote/MockClientConnection.java
index 2e18b82..cbab805 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/remote/MockClientConnection.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/remote/MockClientConnection.java
@@ -24,8 +24,6 @@ import java.util.Collection;
 
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.event.EventBridge;
-import org.apache.cayenne.remote.ClientConnection;
-import org.apache.cayenne.remote.ClientMessage;
 
 /**
  * A noop CayenneConnector used for unit testing. Accumulates commands sent via this
@@ -34,7 +32,7 @@ import org.apache.cayenne.remote.ClientMessage;
  */
 public class MockClientConnection implements ClientConnection {
 
-    protected Collection commands;
+    protected Collection<ClientMessage> commands;
     protected Object fakeResponse;
 
     public MockClientConnection() {
@@ -42,7 +40,7 @@ public class MockClientConnection implements ClientConnection {
     }
 
     public MockClientConnection(Object defaultResponse) {
-        this.commands = new ArrayList();
+        this.commands = new ArrayList<>();
         this.fakeResponse = defaultResponse;
     }
 
@@ -59,7 +57,7 @@ public class MockClientConnection implements ClientConnection {
         this.fakeResponse = fakeResponse;
     }
 
-    public Collection getCommands() {
+    public Collection<ClientMessage> getCommands() {
         return commands;
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-client/src/test/java/org/apache/cayenne/util/PersistentObjectListTest.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/util/PersistentObjectListTest.java b/cayenne-client/src/test/java/org/apache/cayenne/util/PersistentObjectListTest.java
index 6d2d318..0d86bb2 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/util/PersistentObjectListTest.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/util/PersistentObjectListTest.java
@@ -57,9 +57,9 @@ public class PersistentObjectListTest {
         ClientMtTable1 owner = new ClientMtTable1();
         owner.setPersistenceState(PersistenceState.COMMITTED);
         owner.setGlobalAttribute1("a");
-        PersistentObjectList list = new PersistentObjectList(owner, "x");
+        PersistentObjectList<String> list = new PersistentObjectList<>(owner, "x");
 
-        List<Object> objects = new ArrayList<>();
+        List<String> objects = new ArrayList<>();
         objects.add("a");
         objects.add("b");
         list.setObjectList(objects);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-protostuff/src/test/java/org/apache/cayenne/rop/protostuff/ProtostuffPersistentObjectCollectionsTest.java
----------------------------------------------------------------------
diff --git a/cayenne-protostuff/src/test/java/org/apache/cayenne/rop/protostuff/ProtostuffPersistentObjectCollectionsTest.java b/cayenne-protostuff/src/test/java/org/apache/cayenne/rop/protostuff/ProtostuffPersistentObjectCollectionsTest.java
index ab93dd9..d26606d 100644
--- a/cayenne-protostuff/src/test/java/org/apache/cayenne/rop/protostuff/ProtostuffPersistentObjectCollectionsTest.java
+++ b/cayenne-protostuff/src/test/java/org/apache/cayenne/rop/protostuff/ProtostuffPersistentObjectCollectionsTest.java
@@ -57,7 +57,7 @@ public class ProtostuffPersistentObjectCollectionsTest extends ProtostuffPropert
 
     @Test
     public void testPersistentObjectList() throws IOException {
-        PersistentObjectList list = new PersistentObjectList(object1, "test");
+        PersistentObjectList<TestObject> list = new PersistentObjectList<>(object1, "test");
         list.add(object2);
 
         byte[] bytes = serializationService.serialize(list);
@@ -73,7 +73,7 @@ public class ProtostuffPersistentObjectCollectionsTest extends ProtostuffPropert
 
     @Test
     public void testPersistentObjectListWithWrapper() throws IOException {
-        PersistentObjectList list = new PersistentObjectList(object1, "test");
+        PersistentObjectList<TestObject> list = new PersistentObjectList<>(object1, "test");
         list.add(object2);
 
         byte[] bytes = serializationService.serialize(new ListWrapper(list));

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-rop-server/src/main/java/org/apache/cayenne/remote/hessian/HessianConfig.java
----------------------------------------------------------------------
diff --git a/cayenne-rop-server/src/main/java/org/apache/cayenne/remote/hessian/HessianConfig.java b/cayenne-rop-server/src/main/java/org/apache/cayenne/remote/hessian/HessianConfig.java
index 550ef09..ffdb126 100644
--- a/cayenne-rop-server/src/main/java/org/apache/cayenne/remote/hessian/HessianConfig.java
+++ b/cayenne-rop-server/src/main/java/org/apache/cayenne/remote/hessian/HessianConfig.java
@@ -76,7 +76,7 @@ public class HessianConfig {
             EntityResolver resolver) throws Exception {
 
         ClassLoader loader = Thread.currentThread().getContextClassLoader();
-        Class factoryClass = Class.forName(factoryName, true, loader);
+        Class<?> factoryClass = Class.forName(factoryName, true, loader);
 
         if (!AbstractSerializerFactory.class.isAssignableFrom(factoryClass)) {
             throw new IllegalArgumentException(factoryClass

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
index edbd21c..13b1961 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
@@ -79,7 +79,7 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver {
 
     QueryResponse response;
     GenericResponse fullResponse;
-    Map<String, List> prefetchResultsByPath;
+    Map<String, List<?>> prefetchResultsByPath;
     Map<QueryEngine, Collection<Query>> queriesByNode;
     Map<Query, Query> queriesByExecutedQueries;
     boolean noObjectConversion;
@@ -310,6 +310,7 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver {
                 return DONE;
             }
 
+            @SuppressWarnings("unchecked")
             Collection<Persistent> objects = (Collection<Persistent>) refreshQuery.getObjects();
             if (objects != null && !objects.isEmpty()) {
 
@@ -446,8 +447,8 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver {
         this.queriesByExecutedQueries = null;
 
         // whether this is null or not will driver further decisions on how to process prefetched rows
-        this.prefetchResultsByPath = metadata.getPrefetchTree() != null && !metadata.isFetchingDataRows() ?
-                new HashMap<>() : null;
+        this.prefetchResultsByPath = metadata.getPrefetchTree() != null && !metadata.isFetchingDataRows()
+                ? new HashMap<>() : null;
 
         // categorize queries by node and by "executable" query...
         query.route(this, domain.getEntityResolver(), null);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
index a747e9d..6adb1d9 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
@@ -35,7 +35,6 @@ import org.apache.cayenne.reflect.ClassDescriptor;
 
 import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -71,8 +70,8 @@ class HierarchicalObjectResolver {
      */
     PrefetchProcessorNode synchronizedRootResultNodeFromDataRows(
             PrefetchTreeNode tree,
-            List mainResultRows,
-            Map extraResultsByPath) {
+            List<DataRow> mainResultRows,
+            Map<String, List<?>> extraResultsByPath) {
 
         synchronized (context.getObjectStore()) {
             return resolveObjectTree(tree, mainResultRows, extraResultsByPath);
@@ -81,8 +80,8 @@ class HierarchicalObjectResolver {
 
     private PrefetchProcessorNode resolveObjectTree(
             PrefetchTreeNode tree,
-            List mainResultRows,
-            Map extraResultsByPath) {
+            List<DataRow> mainResultRows,
+            Map<String, List<?>> extraResultsByPath) {
 
         // create a copy of the tree using DecoratedPrefetchNodes and then traverse it
         // resolving objects...
@@ -113,8 +112,7 @@ class HierarchicalObjectResolver {
                 return false;
             }
 
-            // ... continue with processing even if the objects list is empty to handle
-            // multi-step prefetches.
+            // continue with processing even if the objects list is empty to handle multi-step prefetches.
             if (processorNode.getDataRows().isEmpty()) {
                 return true;
             }
@@ -163,8 +161,7 @@ class HierarchicalObjectResolver {
             List<?> parentDataRows;
             
 			// note that a disjoint prefetch that has adjacent joint prefetches
-			// will be a PrefetchProcessorJointNode, so here check for
-			// semantics, not node type
+			// will be a PrefetchProcessorJointNode, so here check for semantics, not node type
 			if (parentProcessorNode.getSemantics() == PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS) {
 				parentDataRows = ((PrefetchProcessorJointNode) parentProcessorNode).getResolvedRows();
 			} else {
@@ -223,7 +220,9 @@ class HierarchicalObjectResolver {
                     query.addResultPath("db:"
                             + relationship.getReverseDbRelationshipPath());
                 }
-                dataRows.addAll((List<DataRow>)context.performQuery(query));
+                @SuppressWarnings("unchecked")
+                List<DataRow> dataRowList = context.performQuery(query);
+                dataRows.addAll(dataRowList);
             }
             processorNode.setDataRows(dataRows);
 
@@ -324,13 +323,8 @@ class HierarchicalObjectResolver {
 
                     if (objects != null && objects.size() > 1) {
 
-                        Set<Persistent> seen = new HashSet<Persistent>(objects.size());
-                        Iterator<Persistent> it = objects.iterator();
-                        while (it.hasNext()) {
-                            if (!seen.add(it.next())) {
-                                it.remove();
-                            }
-                        }
+                        Set<Persistent> seen = new HashSet<>(objects.size());
+                        objects.removeIf(persistent -> !seen.add(persistent));
                     }
                 }
             }
@@ -368,11 +362,9 @@ class HierarchicalObjectResolver {
         public boolean startJointPrefetch(PrefetchTreeNode node) {
             PrefetchProcessorJointNode processorNode = (PrefetchProcessorJointNode) node;
 
-            Persistent object = null;
-
             // find existing object, if found skip further processing
             Map id = processorNode.idFromFlatRow(currentFlatRow);
-            object = processorNode.getResolved(id);
+            Persistent object = processorNode.getResolved(id);
             DataRow row = null;
             if (object == null) {
 
@@ -388,9 +380,7 @@ class HierarchicalObjectResolver {
                 processorNode.addObject(object, row);
             }
 
-            // linking by parent needed even if an object is already there
-            // (many-to-many case)
-
+            // linking by parent needed even if an object is already there (many-to-many case)
             processorNode.getParentAttachmentStrategy().linkToParent(row, object);
 
             processorNode.setLastResolved(object);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-server/src/main/java/org/apache/cayenne/access/ListWithPrefetches.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/ListWithPrefetches.java b/cayenne-server/src/main/java/org/apache/cayenne/access/ListWithPrefetches.java
index feb516b..bfe1b59 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/ListWithPrefetches.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/ListWithPrefetches.java
@@ -38,22 +38,23 @@ import java.util.Map;
 //
 // Future alternatives may include caching the entire QueryResponse... or maybe leaving
 // everything the way it is.
-class ListWithPrefetches implements List, Serializable {
+class ListWithPrefetches implements List<Object>, Serializable {
 
-    private final List list;
-    private final Map prefetchResultsByPath;
+    private final List<Object> list;
+    private final Map<String, List<?>> prefetchResultsByPath;
 
-    ListWithPrefetches(List mainList, Map prefetchResultsByPath) {
+    @SuppressWarnings("unchecked")
+    ListWithPrefetches(List<?> mainList, Map<String, List<?>> prefetchResultsByPath) {
         if (mainList == null) {
             throw new IllegalArgumentException("Main list is null");
         }
 
-        this.list = mainList;
+        this.list = (List<Object>)mainList;
         this.prefetchResultsByPath = prefetchResultsByPath != null ? Collections
                 .unmodifiableMap(prefetchResultsByPath) : null;
     }
 
-    Map getPrefetchResultsByPath() {
+    Map<String, List<?>> getPrefetchResultsByPath() {
         return prefetchResultsByPath;
     }
 
@@ -107,7 +108,7 @@ class ListWithPrefetches implements List, Serializable {
         return list.isEmpty();
     }
 
-    public Iterator iterator() {
+    public Iterator<Object> iterator() {
         return list.iterator();
     }
 
@@ -115,11 +116,11 @@ class ListWithPrefetches implements List, Serializable {
         return list.lastIndexOf(o);
     }
 
-    public ListIterator listIterator() {
+    public ListIterator<Object> listIterator() {
         return list.listIterator();
     }
 
-    public ListIterator listIterator(int index) {
+    public ListIterator<Object> listIterator(int index) {
         return list.listIterator(index);
     }
 
@@ -147,7 +148,7 @@ class ListWithPrefetches implements List, Serializable {
         return list.size();
     }
 
-    public List subList(int fromIndex, int toIndex) {
+    public List<Object> subList(int fromIndex, int toIndex) {
         return list.subList(fromIndex, toIndex);
     }
 
@@ -155,7 +156,7 @@ class ListWithPrefetches implements List, Serializable {
         return list.toArray();
     }
 
-    public Object[] toArray(Object[] a) {
+    public <T> T[] toArray(T[] a) {
         return list.toArray(a);
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java
index dc2ea91..ebc0e99 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java
@@ -19,6 +19,7 @@
 package org.apache.cayenne.access;
 
 import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.PrefetchProcessor;
@@ -40,12 +41,12 @@ final class PrefetchProcessorTreeBuilder implements PrefetchProcessor {
     private LinkedList<PrefetchProcessorNode> nodeStack;
 
     private ClassDescriptor descriptor;
-    private List mainResultRows;
-    private Map extraResultsByPath;
+    private List<DataRow> mainResultRows;
+    private Map<String, List<?>> extraResultsByPath;
     private Map<ObjectId, Persistent> seen;
 
-    PrefetchProcessorTreeBuilder(HierarchicalObjectResolver objectTreeResolver, List mainResultRows,
-            Map extraResultsByPath) {
+    PrefetchProcessorTreeBuilder(HierarchicalObjectResolver objectTreeResolver, List<DataRow> mainResultRows,
+                                 Map<String, List<?>> extraResultsByPath) {
         this.context = objectTreeResolver.context;
         this.queryMetadata = objectTreeResolver.queryMetadata;
         this.mainResultRows = mainResultRows;
@@ -55,7 +56,7 @@ final class PrefetchProcessorTreeBuilder implements PrefetchProcessor {
 
     PrefetchProcessorNode buildTree(PrefetchTreeNode tree) {
         // reset state
-        this.nodeStack = new LinkedList<PrefetchProcessorNode>();
+        this.nodeStack = new LinkedList<>();
 
         // 'seen' is used to avoid re-processing objects already processed in a
         // given prefetch query (see CAY-1695 for why this is bad). It is
@@ -147,14 +148,16 @@ final class PrefetchProcessorTreeBuilder implements PrefetchProcessor {
 
     boolean addNode(PrefetchProcessorNode node) {
 
-        List rows;
+        List<DataRow> rows;
         ArcProperty arc;
         ClassDescriptor descriptor;
 
         PrefetchProcessorNode currentNode = getParent();
 
         if (currentNode != null) {
-            rows = (List) extraResultsByPath.get(node.getPath());
+            @SuppressWarnings("unchecked")
+            List<DataRow> dataRows = (List<DataRow>)extraResultsByPath.get(node.getPath());
+            rows = dataRows;
             arc = (ArcProperty) currentNode.getResolver().getDescriptor().getProperty(node.getName());
 
             if (arc == null) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
index c72f325..4288ec5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
-import org.apache.cayenne.Persistent;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.map.ObjEntity;
@@ -35,7 +34,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;
@@ -66,7 +64,6 @@ public class NestedDataContextWriteIT extends ServerCase {
 
     private TableHelper tArtist;
     private TableHelper tPainting;
-    private TableHelper tPaintingInfo;
 
     @Before
     public void setUp() throws Exception {
@@ -84,7 +81,7 @@ public class NestedDataContextWriteIT extends ServerCase {
                 Types.BIGINT,
                 Types.DECIMAL);
 
-        tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO");
+        TableHelper tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO");
         tPaintingInfo.setColumns("PAINTING_ID", "TEXT_REVIEW", "IMAGE_BLOB");
     }
 
@@ -123,7 +120,7 @@ public class NestedDataContextWriteIT extends ServerCase {
      */
     // TODO : pluggable retain strategy
     private DataContext createDataContext() {
-        context.getObjectStore().objectMap = new HashMap<Object, Persistent>();
+        context.getObjectStore().objectMap = new HashMap<>();
         return context;
     }
 
@@ -164,19 +161,16 @@ public class NestedDataContextWriteIT extends ServerCase {
         Cayenne.objectForPK(childContextPeer, Painting.class, 33001);
         childP1.setToArtist(null);
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            childContext.commitChangesToParent();
+            assertEquals(PersistenceState.COMMITTED, childP1.getPersistenceState());
 
-            public void execute() {
-                childContext.commitChangesToParent();
-                assertEquals(PersistenceState.COMMITTED, childP1.getPersistenceState());
+            Painting parentP1 = (Painting) context.getGraphManager().getNode(
+                    childP1.getObjectId());
 
-                Painting parentP1 = (Painting) context.getGraphManager().getNode(
-                        childP1.getObjectId());
-
-                assertNotNull(parentP1);
-                assertEquals(PersistenceState.MODIFIED, parentP1.getPersistenceState());
-                assertNull(parentP1.getToArtist());
-            }
+            assertNotNull(parentP1);
+            assertEquals(PersistenceState.MODIFIED, parentP1.getPersistenceState());
+            assertNull(parentP1.getToArtist());
         });
     }
 
@@ -188,7 +182,7 @@ public class NestedDataContextWriteIT extends ServerCase {
         final ObjectContext childContext = runtime.newContext(context);
 
         // make sure we fetch in predictable order
-        SelectQuery query = new SelectQuery(Artist.class);
+        SelectQuery<Artist> query = new SelectQuery<>(Artist.class);
         query.addOrdering(Artist.ARTIST_NAME.asc());
         List<?> objects = childContext.performQuery(query);
 
@@ -205,53 +199,50 @@ public class NestedDataContextWriteIT extends ServerCase {
         final Artist childHollow = (Artist) objects.get(3);
         childContext.invalidateObjects(childHollow);
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                childContext.commitChangesToParent();
-
-                // * all modified child objects must be in committed state now
-                // * all modifications should be propagated to the parent
-                // * no actual commit should occur.
-
-                assertEquals(PersistenceState.COMMITTED, childNew.getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childModified
-                        .getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childCommitted
-                        .getPersistenceState());
-                assertEquals(PersistenceState.HOLLOW, childHollow.getPersistenceState());
-
-                Artist parentNew = (Artist) context.getGraphManager().getNode(
-                        childNew.getObjectId());
-                Artist parentModified = (Artist) context.getGraphManager().getNode(
-                        childModified.getObjectId());
-                Artist parentCommitted = (Artist) context.getGraphManager().getNode(
-                        childCommitted.getObjectId());
-                Artist parentHollow = (Artist) context.getGraphManager().getNode(
-                        childHollow.getObjectId());
-
-                assertNotNull(parentNew);
-                assertEquals(PersistenceState.NEW, parentNew.getPersistenceState());
-                assertEquals("NNN", parentNew.getArtistName());
-
-                assertNotNull(parentModified);
-                assertEquals(PersistenceState.MODIFIED, parentModified
-                        .getPersistenceState());
-                assertEquals("MMM", parentModified.getArtistName());
-                assertNotNull(context.getObjectStore().getChangesByObjectId().get(
-                        parentModified.getObjectId()));
-
-                assertNotNull(parentCommitted);
-                assertEquals(PersistenceState.COMMITTED, parentCommitted
-                        .getPersistenceState());
-
-                assertNotNull(parentHollow);
-                // TODO: we can assert that when we figure out how nested "invalidate"
-                // should
-                // work
-                // assertEquals(PersistenceState.HOLLOW,
-                // parentHollow.getPersistenceState());
-            }
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            childContext.commitChangesToParent();
+
+            // * all modified child objects must be in committed state now
+            // * all modifications should be propagated to the parent
+            // * no actual commit should occur.
+
+            assertEquals(PersistenceState.COMMITTED, childNew.getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childModified
+                    .getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childCommitted
+                    .getPersistenceState());
+            assertEquals(PersistenceState.HOLLOW, childHollow.getPersistenceState());
+
+            Artist parentNew = (Artist) context.getGraphManager().getNode(
+                    childNew.getObjectId());
+            Artist parentModified = (Artist) context.getGraphManager().getNode(
+                    childModified.getObjectId());
+            Artist parentCommitted = (Artist) context.getGraphManager().getNode(
+                    childCommitted.getObjectId());
+            Artist parentHollow = (Artist) context.getGraphManager().getNode(
+                    childHollow.getObjectId());
+
+            assertNotNull(parentNew);
+            assertEquals(PersistenceState.NEW, parentNew.getPersistenceState());
+            assertEquals("NNN", parentNew.getArtistName());
+
+            assertNotNull(parentModified);
+            assertEquals(PersistenceState.MODIFIED, parentModified
+                    .getPersistenceState());
+            assertEquals("MMM", parentModified.getArtistName());
+            assertNotNull(context.getObjectStore().getChangesByObjectId().get(
+                    parentModified.getObjectId()));
+
+            assertNotNull(parentCommitted);
+            assertEquals(PersistenceState.COMMITTED, parentCommitted
+                    .getPersistenceState());
+
+            assertNotNull(parentHollow);
+            // TODO: we can assert that when we figure out how nested "invalidate"
+            // should
+            // work
+            // assertEquals(PersistenceState.HOLLOW,
+            // parentHollow.getPersistenceState());
         });
     }
 
@@ -263,7 +254,7 @@ public class NestedDataContextWriteIT extends ServerCase {
         ObjectContext childContext = runtime.newContext(context);
 
         // make sure we fetch in predictable order
-        SelectQuery query = new SelectQuery(Artist.class);
+        SelectQuery<Artist> query = new SelectQuery<>(Artist.class);
         query.addOrdering(Artist.ARTIST_NAME.asc());
         List<?> objects = childContext.performQuery(query);
 
@@ -300,7 +291,7 @@ public class NestedDataContextWriteIT extends ServerCase {
         ObjectContext childContext = runtime.newContext(context);
 
         // make sure we fetch in predictable order
-        SelectQuery query = new SelectQuery(Artist.class);
+        SelectQuery<Artist> query = new SelectQuery<>(Artist.class);
         query.addOrdering(Artist.ARTIST_NAME.asc());
         List<?> objects = childContext.performQuery(query);
 
@@ -367,7 +358,7 @@ public class NestedDataContextWriteIT extends ServerCase {
         final ObjectContext childContext = runtime.newContext(context);
 
         // make sure we fetch in predictable order
-        SelectQuery query = new SelectQuery(Painting.class);
+        SelectQuery<Painting> query = new SelectQuery<>(Painting.class);
         query.addOrdering(Painting.PAINTING_TITLE.asc());
         List<?> objects = childContext.performQuery(query);
 
@@ -385,63 +376,60 @@ public class NestedDataContextWriteIT extends ServerCase {
         childModifiedToMany.getPaintingArray().size();
         childModifiedToMany.addToPaintingArray((Painting) objects.get(3));
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                Painting parentModifiedSimple = null;
-                Artist parentModifiedToMany = null;
-
-                childContext.commitChangesToParent();
-
-                assertEquals(PersistenceState.COMMITTED, childModifiedSimple
-                        .getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childModifiedToOne
-                        .getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childModifiedToMany
-                        .getPersistenceState());
-
-                parentModifiedSimple = (Painting) context.getGraphManager().getNode(
-                        childModifiedSimple.getObjectId());
-
-                Painting parentModifiedToOne = (Painting) context
-                        .getGraphManager()
-                        .getNode(childModifiedToOne.getObjectId());
-
-                parentModifiedToMany = (Artist) context.getGraphManager().getNode(
-                        childModifiedToMany.getObjectId());
-
-                assertNotNull(parentModifiedSimple);
-                assertEquals(PersistenceState.MODIFIED, parentModifiedSimple
-                        .getPersistenceState());
-                assertEquals("C_PT", parentModifiedSimple.getPaintingTitle());
-                assertNotNull(context.getObjectStore().getChangesByObjectId().get(
-                        parentModifiedSimple.getObjectId()));
-
-                assertNotNull(parentModifiedToOne);
-                assertEquals(PersistenceState.MODIFIED, parentModifiedToOne
-                        .getPersistenceState());
-                assertNotNull(parentModifiedToOne.getToArtist());
-                assertEquals(33001, Cayenne.intPKForObject(parentModifiedToOne
-                        .getToArtist()));
-                assertNotNull(context.getObjectStore().getChangesByObjectId().get(
-                        parentModifiedToOne.getObjectId()));
-
-                // indirectly modified....
-                assertNotNull(parentModifiedToMany);
-                assertEquals(PersistenceState.MODIFIED, parentModifiedToMany
-                        .getPersistenceState());
-
-                // here query is expected, as the parent was hollow and its to-many
-                // relationship
-                // is unresolved
-                List<?> paintings = parentModifiedToMany.getPaintingArray();
-                assertEquals(2, paintings.size());
-            }
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            Painting parentModifiedSimple;
+            Artist parentModifiedToMany;
+
+            childContext.commitChangesToParent();
+
+            assertEquals(PersistenceState.COMMITTED, childModifiedSimple
+                    .getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childModifiedToOne
+                    .getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childModifiedToMany
+                    .getPersistenceState());
+
+            parentModifiedSimple = (Painting) context.getGraphManager().getNode(
+                    childModifiedSimple.getObjectId());
+
+            Painting parentModifiedToOne = (Painting) context
+                    .getGraphManager()
+                    .getNode(childModifiedToOne.getObjectId());
+
+            parentModifiedToMany = (Artist) context.getGraphManager().getNode(
+                    childModifiedToMany.getObjectId());
+
+            assertNotNull(parentModifiedSimple);
+            assertEquals(PersistenceState.MODIFIED, parentModifiedSimple
+                    .getPersistenceState());
+            assertEquals("C_PT", parentModifiedSimple.getPaintingTitle());
+            assertNotNull(context.getObjectStore().getChangesByObjectId().get(
+                    parentModifiedSimple.getObjectId()));
+
+            assertNotNull(parentModifiedToOne);
+            assertEquals(PersistenceState.MODIFIED, parentModifiedToOne
+                    .getPersistenceState());
+            assertNotNull(parentModifiedToOne.getToArtist());
+            assertEquals(33001, Cayenne.intPKForObject(parentModifiedToOne
+                    .getToArtist()));
+            assertNotNull(context.getObjectStore().getChangesByObjectId().get(
+                    parentModifiedToOne.getObjectId()));
+
+            // indirectly modified....
+            assertNotNull(parentModifiedToMany);
+            assertEquals(PersistenceState.MODIFIED, parentModifiedToMany
+                    .getPersistenceState());
+
+            // here query is expected, as the parent was hollow and its to-many
+            // relationship
+            // is unresolved
+            List<?> paintings = parentModifiedToMany.getPaintingArray();
+            assertEquals(2, paintings.size());
         });
     }
 
     @Test
-    public void testCommitChangesToParentPropagatedKey() throws Exception {
+    public void testCommitChangesToParentPropagatedKey() {
         final DataContext context = createDataContext();
         final ObjectContext childContext = runtime.newContext(context);
 
@@ -452,37 +440,34 @@ public class NestedDataContextWriteIT extends ServerCase {
         childDetail1.setTextReview("Detail1");
         childDetail1.setPainting(childMaster);
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                childContext.commitChangesToParent();
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            childContext.commitChangesToParent();
 
-                assertEquals(PersistenceState.COMMITTED, childMaster
-                        .getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childDetail1
-                        .getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childMaster
+                    .getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childDetail1
+                    .getPersistenceState());
 
-                Painting parentMaster = (Painting) context.getGraphManager().getNode(
-                        childMaster.getObjectId());
+            Painting parentMaster = (Painting) context.getGraphManager().getNode(
+                    childMaster.getObjectId());
 
-                assertNotNull(parentMaster);
-                assertEquals(PersistenceState.NEW, parentMaster.getPersistenceState());
+            assertNotNull(parentMaster);
+            assertEquals(PersistenceState.NEW, parentMaster.getPersistenceState());
 
-                PaintingInfo parentDetail1 = (PaintingInfo) context
-                        .getGraphManager()
-                        .getNode(childDetail1.getObjectId());
+            PaintingInfo parentDetail1 = (PaintingInfo) context
+                    .getGraphManager()
+                    .getNode(childDetail1.getObjectId());
 
-                assertNotNull(parentDetail1);
-                assertEquals(PersistenceState.NEW, parentDetail1.getPersistenceState());
+            assertNotNull(parentDetail1);
+            assertEquals(PersistenceState.NEW, parentDetail1.getPersistenceState());
 
-                assertSame(parentMaster, parentDetail1.getPainting());
-                assertSame(parentDetail1, parentMaster.getToPaintingInfo());
-            }
+            assertSame(parentMaster, parentDetail1.getPainting());
+            assertSame(parentDetail1, parentMaster.getToPaintingInfo());
         });
     }
 
     @Test
-    public void testCommitChangesToParentFlattened() throws Exception {
+    public void testCommitChangesToParentFlattened() {
 
         final DataContext context = createDataContext();
         final ObjectContext childContext = runtime.newContext(context);
@@ -501,36 +486,33 @@ public class NestedDataContextWriteIT extends ServerCase {
         assertEquals(1, childO1.getGroupArray().size());
         assertEquals(1, childO2.getArtistArray().size());
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                childContext.commitChangesToParent();
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            childContext.commitChangesToParent();
 
-                assertEquals(PersistenceState.COMMITTED, childO1.getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childO2.getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childO1.getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childO2.getPersistenceState());
 
-                Artist parentO1 = (Artist) context.getGraphManager().getNode(
-                        childO1.getObjectId());
+            Artist parentO1 = (Artist) context.getGraphManager().getNode(
+                    childO1.getObjectId());
 
-                assertNotNull(parentO1);
-                assertEquals(PersistenceState.NEW, parentO1.getPersistenceState());
+            assertNotNull(parentO1);
+            assertEquals(PersistenceState.NEW, parentO1.getPersistenceState());
 
-                ArtGroup parentO2 = (ArtGroup) context.getGraphManager().getNode(
-                        childO2.getObjectId());
+            ArtGroup parentO2 = (ArtGroup) context.getGraphManager().getNode(
+                    childO2.getObjectId());
 
-                assertNotNull(parentO2);
-                assertEquals(PersistenceState.NEW, parentO2.getPersistenceState());
+            assertNotNull(parentO2);
+            assertEquals(PersistenceState.NEW, parentO2.getPersistenceState());
 
-                assertEquals(1, parentO1.getGroupArray().size());
-                assertEquals(1, parentO2.getArtistArray().size());
-                assertTrue(parentO2.getArtistArray().contains(parentO1));
-                assertTrue(parentO1.getGroupArray().contains(parentO2));
-            }
+            assertEquals(1, parentO1.getGroupArray().size());
+            assertEquals(1, parentO2.getArtistArray().size());
+            assertTrue(parentO2.getArtistArray().contains(parentO1));
+            assertTrue(parentO1.getGroupArray().contains(parentO2));
         });
     }
 
     @Test
-    public void testCommitChangesToParentFlattenedMultipleFlush() throws Exception {
+    public void testCommitChangesToParentFlattenedMultipleFlush() {
         final DataContext context = createDataContext();
         final ObjectContext childContext = runtime.newContext(context);
 
@@ -551,79 +533,73 @@ public class NestedDataContextWriteIT extends ServerCase {
         assertEquals(1, childO2.getArtistArray().size());
         assertEquals(1, childO3.getArtistArray().size());
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            childContext.commitChangesToParent();
 
-            public void execute() {
-                childContext.commitChangesToParent();
+            assertEquals(PersistenceState.COMMITTED, childO1.getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childO2.getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childO3.getPersistenceState());
 
-                assertEquals(PersistenceState.COMMITTED, childO1.getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childO2.getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childO3.getPersistenceState());
+            Artist parentO1 = (Artist) context.getGraphManager().getNode(
+                    childO1.getObjectId());
 
-                Artist parentO1 = (Artist) context.getGraphManager().getNode(
-                        childO1.getObjectId());
+            assertNotNull(parentO1);
+            assertEquals(PersistenceState.NEW, parentO1.getPersistenceState());
 
-                assertNotNull(parentO1);
-                assertEquals(PersistenceState.NEW, parentO1.getPersistenceState());
+            ArtGroup parentO2 = (ArtGroup) context.getGraphManager().getNode(
+                    childO2.getObjectId());
 
-                ArtGroup parentO2 = (ArtGroup) context.getGraphManager().getNode(
-                        childO2.getObjectId());
+            assertNotNull(parentO2);
+            assertEquals(PersistenceState.NEW, parentO2.getPersistenceState());
 
-                assertNotNull(parentO2);
-                assertEquals(PersistenceState.NEW, parentO2.getPersistenceState());
+            ArtGroup parentO3 = (ArtGroup) context.getGraphManager().getNode(
+                    childO3.getObjectId());
 
-                ArtGroup parentO3 = (ArtGroup) context.getGraphManager().getNode(
-                        childO3.getObjectId());
+            assertNotNull(parentO3);
+            assertEquals(PersistenceState.NEW, parentO3.getPersistenceState());
 
-                assertNotNull(parentO3);
-                assertEquals(PersistenceState.NEW, parentO3.getPersistenceState());
-
-                assertEquals(2, parentO1.getGroupArray().size());
-                assertEquals(1, parentO2.getArtistArray().size());
-                assertEquals(1, parentO3.getArtistArray().size());
-                assertTrue(parentO2.getArtistArray().contains(parentO1));
-                assertTrue(parentO3.getArtistArray().contains(parentO1));
-                assertTrue(parentO1.getGroupArray().contains(parentO2));
-                assertTrue(parentO1.getGroupArray().contains(parentO3));
-            }
+            assertEquals(2, parentO1.getGroupArray().size());
+            assertEquals(1, parentO2.getArtistArray().size());
+            assertEquals(1, parentO3.getArtistArray().size());
+            assertTrue(parentO2.getArtistArray().contains(parentO1));
+            assertTrue(parentO3.getArtistArray().contains(parentO1));
+            assertTrue(parentO1.getGroupArray().contains(parentO2));
+            assertTrue(parentO1.getGroupArray().contains(parentO3));
         });
 
         childO1.removeFromGroupArray(childO2);
 
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                childContext.commitChangesToParent();
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            childContext.commitChangesToParent();
 
-                assertEquals(PersistenceState.COMMITTED, childO1.getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childO2.getPersistenceState());
-                assertEquals(PersistenceState.COMMITTED, childO3.getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childO1.getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childO2.getPersistenceState());
+            assertEquals(PersistenceState.COMMITTED, childO3.getPersistenceState());
 
-                Artist parentO1 = (Artist) context.getGraphManager().getNode(
-                        childO1.getObjectId());
+            Artist parentO1 = (Artist) context.getGraphManager().getNode(
+                    childO1.getObjectId());
 
-                assertNotNull(parentO1);
-                assertEquals(PersistenceState.NEW, parentO1.getPersistenceState());
+            assertNotNull(parentO1);
+            assertEquals(PersistenceState.NEW, parentO1.getPersistenceState());
 
-                ArtGroup parentO2 = (ArtGroup) context.getGraphManager().getNode(
-                        childO2.getObjectId());
+            ArtGroup parentO2 = (ArtGroup) context.getGraphManager().getNode(
+                    childO2.getObjectId());
 
-                assertNotNull(parentO2);
-                assertEquals(PersistenceState.NEW, parentO2.getPersistenceState());
+            assertNotNull(parentO2);
+            assertEquals(PersistenceState.NEW, parentO2.getPersistenceState());
 
-                ArtGroup parentO3 = (ArtGroup) context.getGraphManager().getNode(
-                        childO3.getObjectId());
+            ArtGroup parentO3 = (ArtGroup) context.getGraphManager().getNode(
+                    childO3.getObjectId());
 
-                assertNotNull(parentO3);
-                assertEquals(PersistenceState.NEW, parentO3.getPersistenceState());
+            assertNotNull(parentO3);
+            assertEquals(PersistenceState.NEW, parentO3.getPersistenceState());
 
-                assertEquals(1, parentO1.getGroupArray().size());
-                assertEquals(0, parentO2.getArtistArray().size());
-                assertEquals(1, parentO3.getArtistArray().size());
+            assertEquals(1, parentO1.getGroupArray().size());
+            assertEquals(0, parentO2.getArtistArray().size());
+            assertEquals(1, parentO3.getArtistArray().size());
 
-                assertTrue(parentO3.getArtistArray().contains(parentO1));
-                assertTrue(parentO1.getGroupArray().contains(parentO3));
-            }
+            assertTrue(parentO3.getArtistArray().contains(parentO1));
+            assertTrue(parentO1.getGroupArray().contains(parentO3));
         });
     }
 
@@ -655,7 +631,7 @@ public class NestedDataContextWriteIT extends ServerCase {
     }
 
     @Test
-    public void testCAY1194() throws Exception {
+    public void testCAY1194() {
         DataContext context = createDataContext();
 
         Artist artist = context.newObject(Artist.class);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
index a32e384..0a394bf 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
@@ -61,7 +61,7 @@ public class PrefetchProcessorTreeBuilderIT extends ServerCase {
     public void testBuildTreeNoPrefetches() {
 
         final ClassDescriptor descriptor = resolver.getClassDescriptor("Artist");
-        List<Object> dataRows = new ArrayList<Object>();
+        List<DataRow> dataRows = new ArrayList<>();
         dataRows.add(new DataRow(4));
         dataRows.add(new DataRow(4));
 
@@ -105,7 +105,7 @@ public class PrefetchProcessorTreeBuilderIT extends ServerCase {
         PrefetchProcessorTreeBuilder builder = new PrefetchProcessorTreeBuilder(
                 resolver,
                 dataRows,
-                new HashMap<Object, Object>());
+                new HashMap<>());
 
         PrefetchProcessorNode processingTree = builder.buildTree(tree);
 
@@ -127,8 +127,8 @@ public class PrefetchProcessorTreeBuilderIT extends ServerCase {
         ObjEntity e4 = resolver.getObjEntity("Exhibit");
         ObjEntity e5 = resolver.getObjEntity("ArtistExhibit");
 
-        List<Object> mainRows = new ArrayList<Object>();
-        Map<Object, Object> extraRows = new HashMap<Object, Object>();
+        List<DataRow> mainRows = new ArrayList<>();
+        Map<String, List<?>> extraRows = new HashMap<>();
 
         PrefetchTreeNode tree = new PrefetchTreeNode();
         tree.addPath(Artist.PAINTING_ARRAY.getName()).setPhantom(false);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java
----------------------------------------------------------------------
diff --git a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java
index 94080d6..669c878 100644
--- a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java
+++ b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java
@@ -115,7 +115,7 @@ public class BindDirective extends Directive {
 	protected void render(InternalContextAdapter context, Writer writer, Node node, Object value, String typeString,
 			int scale) throws IOException, ParseErrorException {
 
-		int jdbcType = TypesMapping.NOT_DEFINED;
+		int jdbcType;
 		if (typeString != null) {
 			jdbcType = TypesMapping.getSqlTypeByName(typeString);
 		} else if (value != null) {
@@ -148,8 +148,9 @@ public class BindDirective extends Directive {
 	 */
 	protected void bind(InternalContextAdapter context, ParameterBinding binding) {
 
-		Collection bindings = (Collection) context.getInternalUserContext().get(
-				VelocitySQLTemplateProcessor.BINDINGS_LIST_KEY);
+		@SuppressWarnings("unchecked")
+		Collection<ParameterBinding> bindings = (Collection<ParameterBinding>)
+				context.getInternalUserContext().get(VelocitySQLTemplateProcessor.BINDINGS_LIST_KEY);
 
 		if (bindings != null) {
 			bindings.add(binding);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/docs/asciidoc/cayenne-asciidoc-extension/src/main/java/org/apache/cayenne/asciidoc/CayennePostProcessor.java
----------------------------------------------------------------------
diff --git a/docs/asciidoc/cayenne-asciidoc-extension/src/main/java/org/apache/cayenne/asciidoc/CayennePostProcessor.java b/docs/asciidoc/cayenne-asciidoc-extension/src/main/java/org/apache/cayenne/asciidoc/CayennePostProcessor.java
index 5be212d..1b7e001 100644
--- a/docs/asciidoc/cayenne-asciidoc-extension/src/main/java/org/apache/cayenne/asciidoc/CayennePostProcessor.java
+++ b/docs/asciidoc/cayenne-asciidoc-extension/src/main/java/org/apache/cayenne/asciidoc/CayennePostProcessor.java
@@ -58,10 +58,12 @@ public class CayennePostProcessor extends Postprocessor {
     private static final String POSITION_BODY = "body";
     private static final String POSITION_BOTTOM = "bottom";
 
+    @SuppressWarnings("unused")
     public CayennePostProcessor() {
         super();
     }
 
+    @SuppressWarnings("unused")
     public CayennePostProcessor(Map<String, Object> config) {
         super(config);
     }
@@ -145,14 +147,14 @@ public class CayennePostProcessor extends Postprocessor {
     }
 
     protected String processHeader(Document document, String output) {
-        String headerFile = (String) document.getAttr("cayenne-header", "");
-        String headerPosition = (String)document.getAttr("cayenne-header-position", POSITION_TOP);
+        String headerFile = (String) document.getAttribute("cayenne-header", "");
+        String headerPosition = (String)document.getAttribute("cayenne-header-position", POSITION_TOP);
 
         if(headerFile.isEmpty()) {
             return output;
         }
 
-        String header = "";
+        String header;
         // inject empty front matter
         if(FRONT_MATTER.equals(headerFile.trim())) {
             header = EMPTY_FRONT_MATTER ;
@@ -178,8 +180,8 @@ public class CayennePostProcessor extends Postprocessor {
     }
 
     protected String processFooter(Document document, String output) {
-        String footerFile = (String) document.getAttr("cayenne-footer", "");
-        String footerPosition = (String)document.getAttr("cayenne-footer-position", POSITION_BOTTOM);
+        String footerFile = (String) document.getAttribute("cayenne-footer", "");
+        String footerPosition = (String)document.getAttribute("cayenne-footer-position", POSITION_BOTTOM);
 
         if(footerFile.isEmpty()) {
             return output;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/stubs/CayenneProjectStub.java
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/stubs/CayenneProjectStub.java b/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/stubs/CayenneProjectStub.java
index da554b3..5eccdff 100644
--- a/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/stubs/CayenneProjectStub.java
+++ b/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/stubs/CayenneProjectStub.java
@@ -28,7 +28,7 @@ public class CayenneProjectStub extends MavenProjectStub{
 
     public CayenneProjectStub()
     {
-        Set artifacts = new HashSet();
+        Set<Artifact> artifacts = new HashSet<>();
 
         artifacts.add( new ArtifactStub( "assembly", "dependency-artifact1", "1.0", "jar", Artifact.SCOPE_COMPILE ) );
         artifacts.add( new ArtifactStub( "assembly", "dependency-artifact2", "1.0", "jar", Artifact.SCOPE_RUNTIME ) );

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c659ee05/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/PropertyListSerializationTest.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/PropertyListSerializationTest.java b/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/PropertyListSerializationTest.java
index 9c49e5c..4e3a4f7 100644
--- a/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/PropertyListSerializationTest.java
+++ b/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/PropertyListSerializationTest.java
@@ -28,6 +28,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -36,9 +37,9 @@ public class PropertyListSerializationTest extends WOCompatCase {
     @Test
     public void testListPlist() throws Exception {
         File plistFile = new File(setupTestDirectory("testListPlist"), "test-array.plist");
-        List<Object> list = new ArrayList<Object>();
+        List<Object> list = new ArrayList<>();
         list.add("str");
-        list.add(new Integer(5));
+        list.add(5);
 
         assertFalse(plistFile.exists());
         PropertyListSerialization.propertyListToFile(plistFile, list);
@@ -46,15 +47,15 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readList = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readList instanceof List);
-        assertTrue(list.equals(readList));
+        assertEquals(list, readList);
     }
 
     @Test
     public void testMapPlist() throws Exception {
         File plistFile = new File(setupTestDirectory("testMapPlist"), "test-map.plist");
-        Map map = new HashMap();
+        Map<String, Object> map = new HashMap<>();
         map.put("key1", "val");
-        map.put("key2", new Integer(5));
+        map.put("key2", 5);
 
         assertFalse(plistFile.exists());
         PropertyListSerialization.propertyListToFile(plistFile, map);
@@ -62,7 +63,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readMap = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readMap instanceof Map);
-        assertTrue(map.equals(readMap));
+        assertEquals(map, readMap);
     }
 
     @Test
@@ -70,7 +71,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
         File plistFile = new File(
                 setupTestDirectory("testEmptyString"),
                 "test-empty-string.plist");
-        Map map = new HashMap();
+        Map<String, Object> map = new HashMap<>();
         map.put("a", "");
 
         assertFalse(plistFile.exists());
@@ -79,7 +80,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readMap = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readMap instanceof Map);
-        assertTrue(map.equals(readMap));
+        assertEquals(map, readMap);
     }
 
     @Test
@@ -87,9 +88,9 @@ public class PropertyListSerializationTest extends WOCompatCase {
         File plistFile = new File(
                 setupTestDirectory("testStringWithQuotes"),
                 "test-quotes.plist");
-        List<Object> list = new ArrayList<Object>();
+        List<Object> list = new ArrayList<>();
         list.add("s\"tr");
-        list.add(new Integer(5));
+        list.add(5);
 
         assertFalse(plistFile.exists());
         PropertyListSerialization.propertyListToFile(plistFile, list);
@@ -97,7 +98,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readList = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readList instanceof List);
-        assertTrue(list.equals(readList));
+        assertEquals(list, readList);
     }
 
     @Test
@@ -105,13 +106,13 @@ public class PropertyListSerializationTest extends WOCompatCase {
         File plistFile = new File(
                 setupTestDirectory("testNestedPlist"),
                 "test-nested.plist");
-        Map map = new HashMap();
+        Map<String, Object> map = new HashMap<>();
         map.put("key1", "val");
-        map.put("key2", new Integer(5));
+        map.put("key2", 5);
 
-        List list = new ArrayList();
+        List<Object> list = new ArrayList<>();
         list.add("str");
-        list.add(new Integer(5));
+        list.add(5);
         map.put("key3", list);
 
         assertFalse(plistFile.exists());
@@ -120,7 +121,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readMap = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readMap instanceof Map);
-        assertTrue(map.equals(readMap));
+        assertEquals(map, readMap);
     }
 
     @Test
@@ -128,9 +129,9 @@ public class PropertyListSerializationTest extends WOCompatCase {
         File plistFile = new File(
                 setupTestDirectory("testStringWithSpaces"),
                 "test-spaces.plist");
-        List list = new ArrayList();
+        List<Object> list = new ArrayList<>();
         list.add("s tr");
-        list.add(new Integer(5));
+        list.add(5);
 
         assertFalse(plistFile.exists());
         PropertyListSerialization.propertyListToFile(plistFile, list);
@@ -138,7 +139,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readList = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readList instanceof List);
-        assertTrue(list.equals(readList));
+        assertEquals(list, readList);
     }
 
     @Test
@@ -146,9 +147,9 @@ public class PropertyListSerializationTest extends WOCompatCase {
         File plistFile = new File(
                 setupTestDirectory("testStringWithBraces"),
                 "test-braces.plist");
-        List list = new ArrayList();
+        List<Object> list = new ArrayList<>();
         list.add("s{t)r");
-        list.add(new Integer(5));
+        list.add(5);
 
         assertFalse(plistFile.exists());
         PropertyListSerialization.propertyListToFile(plistFile, list);
@@ -156,7 +157,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readList = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readList instanceof List);
-        assertTrue(list.equals(readList));
+        assertEquals(list, readList);
     }
 
     @Test
@@ -164,9 +165,9 @@ public class PropertyListSerializationTest extends WOCompatCase {
         File plistFile = new File(
                 setupTestDirectory("testStringWithSlashes"),
                 "test-slashes.plist");
-        List list = new ArrayList();
+        List<Object> list = new ArrayList<>();
         list.add("s/t\\r");
-        list.add(new Integer(5));
+        list.add(5);
 
         assertFalse(plistFile.exists());
         PropertyListSerialization.propertyListToFile(plistFile, list);
@@ -174,7 +175,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readList = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readList instanceof List);
-        assertTrue(list.equals(readList));
+        assertEquals(list, readList);
     }
 
     @Test
@@ -182,7 +183,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
         File plistFile = new File(
                 setupTestDirectory("testStringWithQuotes1"),
                 "test-quotes1.plist");
-        List list = new ArrayList();
+        List<Object> list = new ArrayList<>();
         list.add("like");
         list.add("key");
         list.add("\"*003*\"");
@@ -193,7 +194,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readList = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readList instanceof List);
-        assertTrue(list.equals(readList));
+        assertEquals(list, readList);
     }
 
     @Test
@@ -201,7 +202,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
         File plistFile = new File(
                 setupTestDirectory("testStringWithPlusMinus"),
                 "test-plus-minus.plist");
-        List list = new ArrayList();
+        List<Object> list = new ArrayList<>();
         list.add("a+b");
         list.add("a-b");
         list.add("a+-b");
@@ -212,7 +213,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readList = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readList instanceof List);
-        assertTrue(list.equals(readList));
+        assertEquals(list, readList);
     }
 
     @Test
@@ -220,7 +221,7 @@ public class PropertyListSerializationTest extends WOCompatCase {
         File plistFile = new File(
                 setupTestDirectory("testStringWithLessGreater"),
                 "test-less-greater.plist");
-        List list = new ArrayList();
+        List<Object> list = new ArrayList<>();
         list.add("a<b");
         list.add("a>b");
         list.add("a<>b");
@@ -231,6 +232,6 @@ public class PropertyListSerializationTest extends WOCompatCase {
 
         Object readList = PropertyListSerialization.propertyListFromFile(plistFile);
         assertTrue(readList instanceof List);
-        assertTrue(list.equals(readList));
+        assertEquals(list, readList);
     }
 }