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 2017/02/14 09:19:43 UTC

[2/2] cayenne git commit: Compilation warnings cleanup

Compilation warnings cleanup


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

Branch: refs/heads/master
Commit: 62ef511585fc6bb8d41568a80e0c6b557f8cbbd2
Parents: f75229b
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Feb 14 12:18:04 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Feb 14 12:18:04 2017 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/gen/DataMapUtils.java    |  8 +-
 .../apache/cayenne/gen/ClassGenerationCase.java |  4 +-
 .../apache/cayenne/remote/ClientChannel.java    | 10 +-
 .../apache/cayenne/query/NamedQueryTest.java    |  1 +
 .../cayenne/unit/UnitLocalConnection.java       |  2 +-
 .../ClientServerDataChannelDecorator.java       |  2 +-
 .../di/spi/DefaultInjectorInjectionTest.java    |  4 +-
 .../apache/cayenne/di/spi/ModuleLoaderTest.java |  3 +
 .../lifecycle/audit/AuditableFilter.java        | 10 +-
 .../lifecycle/changeset/GenericChangeSet.java   |  6 +-
 .../sort/WeightedAshwoodEntitySorter.java       |  6 +-
 .../lifecycle/audit/AuditableFilterTest.java    |  2 +
 .../cayenne/project/FileProjectSaver.java       |  2 +-
 .../project/DataChannelProjectSaverTest.java    |  4 +-
 .../cayenne/project/FileProjectSaverTest.java   |  2 +-
 .../upgrade/v7/ProjectUpgrader_V7Test.java      |  6 +-
 .../upgrade/v8/ProjectUpgrader_V8Test.java      |  2 +-
 .../upgrade/v9/ProjectUpgrader_V9Test.java      |  2 +-
 .../java/org/apache/cayenne/CayenneContext.java |  1 +
 .../cayenne/CayenneContextGraphManager.java     |  2 +
 .../org/apache/cayenne/CayenneDataObject.java   |  2 +-
 .../cayenne/DataChannelSyncCallbackAction.java  |  6 +-
 .../apache/cayenne/ObjectContextChangeLog.java  |  2 +-
 .../apache/cayenne/ObjectContextStateLog.java   |  6 +-
 .../main/java/org/apache/cayenne/ObjectId.java  | 10 +-
 .../org/apache/cayenne/access/DataContext.java  |  2 +-
 .../org/apache/cayenne/access/DataDomain.java   | 10 +-
 .../access/DataDomainFlattenedBucket.java       |  7 +-
 .../cayenne/access/DataDomainSyncBucket.java    |  4 +-
 .../cayenne/access/DataDomainUpdateBucket.java  |  6 +-
 .../access/DefaultObjectMapRetainStrategy.java  | 10 +-
 .../org/apache/cayenne/access/ObjectStore.java  |  2 +-
 .../access/PrefetchProcessorJointNode.java      |  2 +-
 .../ejbql/EJBQLTranslationContext.java          |  2 +-
 .../configuration/ConfigurationTree.java        |  2 +-
 .../configuration/server/ServerRuntime.java     |  2 +
 .../configuration/web/CayenneFilter.java        | 11 ++-
 .../org/apache/cayenne/event/EventSubject.java  |  1 +
 .../apache/cayenne/exp/parser/ASTConcat.java    |  2 +-
 .../java/org/apache/cayenne/map/DataMap.java    |  2 +-
 .../java/org/apache/cayenne/map/DbEntity.java   |  3 +
 .../org/apache/cayenne/map/DbRelationship.java  |  8 +-
 .../apache/cayenne/map/EmbeddedAttribute.java   |  2 +-
 .../cayenne/map/EntityInheritanceTree.java      |  2 +-
 .../org/apache/cayenne/map/ObjAttribute.java    |  9 +-
 .../java/org/apache/cayenne/map/ObjEntity.java  | 43 +++++----
 .../cayenne/map/PathComponentIterator.java      |  2 +-
 .../cayenne/query/AbstractMappedQuery.java      |  3 +-
 .../org/apache/cayenne/query/EJBQLQuery.java    |  6 +-
 .../org/apache/cayenne/query/MappedSelect.java  |  2 +
 .../java/org/apache/cayenne/query/Ordering.java |  1 +
 .../apache/cayenne/query/ProcedureQuery.java    |  4 +-
 .../cayenne/query/ProcedureQueryMetadata.java   |  2 +-
 .../cayenne/reflect/PersistentDescriptor.java   |  2 +-
 .../reflect/generic/DataObjectBaseProperty.java |  4 +-
 .../resource/FilesystemResourceLocator.java     |  2 +-
 .../java/org/apache/cayenne/rop/ROPServlet.java |  6 +-
 .../apache/cayenne/util/GenericQueryResult.java |  1 +
 .../cayenne/util/ObjectContextQueryAction.java  |  7 +-
 .../cayenne/util/PersistentObjectMap.java       |  8 +-
 .../cayenne/access/DataContextPrefetchIT.java   |  4 +-
 .../access/DataContextPrefetchMultistepIT.java  |  6 +-
 .../DataContextSQLTemplateCompoundIT.java       |  4 +-
 .../access/DataContextSQLTemplateIT.java        | 16 ++--
 .../access/DataContextSharedCacheIT.java        | 24 ++---
 .../org/apache/cayenne/access/DataDomainIT.java | 16 ++--
 .../apache/cayenne/access/JointPrefetchIT.java  |  2 +-
 .../cayenne/access/OptimisticLockingIT.java     | 98 ++++++++++----------
 .../apache/cayenne/access/UnitTestDomain.java   |  3 +-
 .../access/jdbc/SQLTemplateActionIT.java        |  1 +
 .../rop/server/ROPServletTest.java              | 12 +--
 .../server/ServerRuntimeBuilderIT.java          |  1 +
 .../server/ServerRuntimeBuilderTest.java        |  1 +
 .../configuration/web/CayenneFilterTest.java    | 12 +--
 .../apache/cayenne/map/MockEntityResolver.java  |  1 +
 .../apache/cayenne/query/NamedQueryTest.java    |  3 +-
 .../resource/FilesystemResourceLocatorTest.java |  6 +-
 .../mt/auto/_ClientMtTable1Subclass1.java       |  2 +-
 .../unit/di/server/ServerRuntimeProvider.java   |  1 +
 .../java/org/apache/cayenne/util/UtilTest.java  |  3 +-
 .../modeler/osx/OSXPlatformInitializer.java     |  1 +
 .../modeler/dialog/pref/TemplateCreator.java    |  4 +-
 .../dialog/validator/ValidatorDialog.java       |  2 +-
 .../modeler/editor/SelectQueryMainTab.java      | 17 ++--
 .../cayenne/modeler/util/CellRenderers.java     |  6 +-
 .../persistent/client/auto/_Artist.java         |  6 +-
 .../persistent/client/auto/_Gallery.java        |  4 +-
 .../persistent/client/auto/_Painting.java       |  6 +-
 .../persistent/client/auto/_Artist.java         | 13 +--
 .../persistent/client/auto/_Gallery.java        |  9 +-
 .../persistent/client/auto/_Painting.java       | 13 +--
 .../java/org/apache/cayenne/tutorial/Main.java  |  4 +-
 92 files changed, 298 insertions(+), 290 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapUtils.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
index a0013cc..b83f89e 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
@@ -131,7 +131,7 @@ public class DataMapUtils {
 	 * @return List of parameter names.
 	 */
 	private Set parseQualifier(String qualifierString) {
-		Set result = new ListOrderedSet();
+		Set<String> result = (Set<String>)new ListOrderedSet();
 		Pattern pattern = Pattern.compile("\\$[\\w]+");
 		Matcher matcher = pattern.matcher(qualifierString);
 		while (matcher.find()) {
@@ -168,7 +168,7 @@ public class DataMapUtils {
 		if (expression != null) {
 			Map<String, String> types = new HashMap<>();
 			String typeName = "";
-			List<String> names = new LinkedList<String>();
+			List<String> names = new LinkedList<>();
 
 			for (int i = 0; i < expression.getOperandCount(); i++) {
 				Object operand = expression.getOperand(i);
@@ -186,7 +186,7 @@ public class DataMapUtils {
 					} else {
 						ObjRelationship relationship = component.getRelationship();
 						if (relationship != null) {
-							typeName = ((ObjEntity) relationship.getTargetEntity()).getClassName();
+							typeName = relationship.getTargetEntity().getClassName();
 						} else {
 							typeName = "Object";
 						}
@@ -214,6 +214,6 @@ public class DataMapUtils {
 
 			return types;
 		}
-		return Collections.EMPTY_MAP;
+		return Collections.emptyMap();
 	}
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationCase.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationCase.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationCase.java
index 44b709d..78139fd 100644
--- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationCase.java
+++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationCase.java
@@ -23,7 +23,7 @@ import org.apache.velocity.Template;
 import org.apache.velocity.app.VelocityEngine;
 import org.apache.velocity.context.Context;
 import org.apache.velocity.runtime.RuntimeConstants;
-import org.apache.velocity.runtime.log.NullLogSystem;
+import org.apache.velocity.runtime.log.NullLogChute;
 import org.junit.Before;
 
 import java.io.StringWriter;
@@ -38,7 +38,7 @@ public class ClassGenerationCase {
         Properties props = new Properties();
 
         // null logger that will prevent velocity.log from being generated
-        props.put(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, NullLogSystem.class.getName());
+        props.put(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, NullLogChute.class.getName());
         props.put("resource.loader", "cayenne");
         props.put("cayenne.resource.loader.class", ClassGeneratorResourceLoader.class.getName());
         props.put("cayenne.resource.loader.cache", "false");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java b/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java
index b917e49..60f9fcf 100644
--- a/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java
+++ b/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java
@@ -157,9 +157,9 @@ public class ClientChannel implements DataChannel {
         }
     }
 
-    private void convertSingleObjects(List objects, DeepMergeOperation merger) {
+    private void convertSingleObjects(List<Object> objects, DeepMergeOperation merger) {
 
-        ListIterator it = objects.listIterator();
+        ListIterator<Object> it = objects.listIterator();
         while (it.hasNext()) {
             Object next = it.next();
             it.set(convertObject( merger, (Persistent) next));
@@ -256,9 +256,7 @@ public class ClientChannel implements DataChannel {
         if (entityResolver == null) {
             synchronized (this) {
                 if (entityResolver == null) {
-                    entityResolver = (EntityResolver) send(
-                            new BootstrapMessage(),
-                            EntityResolver.class);
+                    entityResolver = send(new BootstrapMessage(), EntityResolver.class);
                 }
             }
         }
@@ -299,7 +297,7 @@ public class ClientChannel implements DataChannel {
      * @throws org.apache.cayenne.CayenneRuntimeException if an underlying connector
      *             exception occurred, or a result is not of expected type.
      */
-    protected <T extends Object> T send(ClientMessage message, Class<T> resultClass) {
+    protected <T> T send(ClientMessage message, Class<T> resultClass) {
         Object result = connection.sendMessage(message);
 
         if (result != null && !resultClass.isInstance(result)) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-client/src/test/java/org/apache/cayenne/query/NamedQueryTest.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/query/NamedQueryTest.java b/cayenne-client/src/test/java/org/apache/cayenne/query/NamedQueryTest.java
index 8ca6e85..0477cc9 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/query/NamedQueryTest.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/query/NamedQueryTest.java
@@ -28,6 +28,7 @@ import static org.junit.Assert.assertTrue;
 
 public class NamedQueryTest {
 
+    @SuppressWarnings("deprecation")
     @Test
     public void testSerializabilityWithHessian() throws Exception {
         NamedQuery o = new NamedQuery("abc");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-client/src/test/java/org/apache/cayenne/unit/UnitLocalConnection.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/unit/UnitLocalConnection.java b/cayenne-client/src/test/java/org/apache/cayenne/unit/UnitLocalConnection.java
index c34641c..da69275 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/unit/UnitLocalConnection.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/unit/UnitLocalConnection.java
@@ -19,7 +19,7 @@
 
 package org.apache.cayenne.unit;
 
-import junit.framework.Assert;
+import org.junit.Assert;
 import junit.framework.AssertionFailedError;
 
 import org.apache.cayenne.CayenneRuntimeException;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientServerDataChannelDecorator.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientServerDataChannelDecorator.java b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientServerDataChannelDecorator.java
index 57aea3e..3ecff3b 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientServerDataChannelDecorator.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientServerDataChannelDecorator.java
@@ -18,7 +18,7 @@
  ****************************************************************/
 package org.apache.cayenne.unit.di.client;
 
-import junit.framework.Assert;
+import org.junit.Assert;
 import junit.framework.AssertionFailedError;
 
 import org.apache.cayenne.DataChannel;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
----------------------------------------------------------------------
diff --git a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
index 3d81ea3..c5d8a35 100644
--- a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
+++ b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
@@ -308,12 +308,12 @@ public class DefaultInjectorInjectionTest {
                 binder.bind(MockInterface1.class).to(
                         MockImplementation1_ListConfiguration.class);
 
-                Collection firstList = new ArrayList<>();
+                Collection<Object> firstList = new ArrayList<>();
                 firstList.add("1value");
                 firstList.add("2value");
                 firstList.add("3value");
 
-                Collection secondList = new ArrayList<>();
+                Collection<Object> secondList = new ArrayList<>();
                 secondList.add("6value");
                 secondList.add("7value");
                 secondList.add("8value");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-di/src/test/java/org/apache/cayenne/di/spi/ModuleLoaderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/ModuleLoaderTest.java b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/ModuleLoaderTest.java
index 2bc51b5..c86e8db 100644
--- a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/ModuleLoaderTest.java
+++ b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/ModuleLoaderTest.java
@@ -93,6 +93,7 @@ public class ModuleLoaderTest {
         }
 
 
+        @SuppressWarnings("unchecked")
         @Override
         public Collection<Class<? extends Module>> overrides() {
             Collection c = Collections.singletonList(Module2.class);
@@ -112,6 +113,7 @@ public class ModuleLoaderTest {
             return Module2.class;
         }
 
+        @SuppressWarnings("unchecked")
         @Override
         public Collection<Class<? extends Module>> overrides() {
             Collection c = Collections.singletonList(Module4.class);
@@ -150,6 +152,7 @@ public class ModuleLoaderTest {
         }
 
         @Override
+        @SuppressWarnings("unchecked")
         public Collection<Class<? extends Module>> overrides() {
             Collection c = Collections.singletonList(Module3.class);
             return c;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableFilter.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableFilter.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableFilter.java
index 69a46fa..01e1b02 100644
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableFilter.java
+++ b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableFilter.java
@@ -189,7 +189,7 @@ public class AuditableFilter implements DataChannelFilter {
 
         String propertyPath = annotation.value();
 
-        if (propertyPath == null || propertyPath.equals("")) {
+        if (propertyPath.equals("")) {
             propertyPath = objectIdRelationshipName(annotation.objectIdRelationship());
         }
 
@@ -208,14 +208,14 @@ public class AuditableFilter implements DataChannelFilter {
         return "cay:related:" + uuidPropertyName;
     }
 
-    protected boolean isAuditableUpdate(Object object, boolean child) {
+    protected boolean isAuditableUpdate(Persistent object, boolean child) {
         AuditableEntityDescriptor descriptor = getEntityDescriptor(object, child);
-        return descriptor.auditableChange((Persistent) object);
+        return descriptor.auditableChange(object);
     }
 
-    private AuditableEntityDescriptor getEntityDescriptor(Object object, boolean child) {
+    private AuditableEntityDescriptor getEntityDescriptor(Persistent object, boolean child) {
 
-        ObjEntity entity = entityResolver.lookupObjEntity(object);
+        ObjEntity entity = entityResolver.getObjEntity(object);
 
         AuditableEntityDescriptor descriptor = entityDescriptors.get(entity.getName());
         if (descriptor == null) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java
index cf9519a..b043726 100644
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java
+++ b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java
@@ -48,7 +48,7 @@ public class GenericChangeSet implements ChangeSet {
 
     public Map<String, PropertyChange> getChanges(Persistent object) {
         Map<String, PropertyChange> changes = getChanges().get(object.getObjectId());
-        return changes != null ? changes : Collections.EMPTY_MAP;
+        return changes != null ? changes : Collections.<String, PropertyChange>emptyMap();
     }
 
     private Map<ObjectId, Map<String, PropertyChange>> getChanges() {
@@ -99,13 +99,13 @@ public class GenericChangeSet implements ChangeSet {
             public void arcDeleted(Object nodeId, Object targetNodeId, Object arcId) {
                 // record the fact of relationship change... TODO: analyze relationship
                 // semantics and record changset values
-                getChange(nodeId, (String) arcId, null);
+                getChange((ObjectId)nodeId, (String) arcId, null);
             }
 
             public void arcCreated(Object nodeId, Object targetNodeId, Object arcId) {
                 // record the fact of relationship change... TODO: analyze relationship
                 // semantics and record changset values
-                getChange(nodeId, (String) arcId, null);
+                getChange((ObjectId)nodeId, (String) arcId, null);
             }
 
             public void nodePropertyChanged(

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/sort/WeightedAshwoodEntitySorter.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/sort/WeightedAshwoodEntitySorter.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/sort/WeightedAshwoodEntitySorter.java
index 89ab219..4ea6895 100644
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/sort/WeightedAshwoodEntitySorter.java
+++ b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/sort/WeightedAshwoodEntitySorter.java
@@ -44,7 +44,7 @@ public class WeightedAshwoodEntitySorter extends AshwoodEntitySorter {
     public WeightedAshwoodEntitySorter() {
         this.weightedDbEntityComparator = new WeightedDbEntityComparator();
         this.weightedObjEntityComparator = new WeightedObjEntityComparator();
-        this.entityWeights = Collections.EMPTY_MAP;
+        this.entityWeights = Collections.emptyMap();
     }
 
     @Override
@@ -65,6 +65,7 @@ public class WeightedAshwoodEntitySorter extends AshwoodEntitySorter {
         }
     }
 
+    @SuppressWarnings("unchecked")
     @Override
     protected Comparator<DbEntity> getDbEntityComparator(boolean dependantFirst) {
         Comparator<DbEntity> c = weightedDbEntityComparator;
@@ -74,6 +75,7 @@ public class WeightedAshwoodEntitySorter extends AshwoodEntitySorter {
         return c;
     }
 
+    @SuppressWarnings("unchecked")
     @Override
     protected Comparator<ObjEntity> getObjEntityComparator(boolean dependantFirst) {
         Comparator<ObjEntity> c = weightedObjEntityComparator;
@@ -85,7 +87,7 @@ public class WeightedAshwoodEntitySorter extends AshwoodEntitySorter {
 
     private int getWeight(DbEntity e) {
         Integer w = entityWeights.get(e);
-        return w != null ? w.intValue() : 1;
+        return w != null ? w : 1;
     }
 
     private final class WeightedDbEntityComparator implements Comparator<DbEntity> {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterTest.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterTest.java
index 22c5062..2981b0d 100644
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterTest.java
+++ b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterTest.java
@@ -57,6 +57,8 @@ public class AuditableFilterTest {
 
         ObjEntity objectEntity = new ObjEntity("CayenneDataObject");
         when(resolver.lookupObjEntity(any(Object.class))).thenReturn(objectEntity);
+        when(resolver.getObjEntity(any(Persistent.class))).thenReturn(objectEntity);
+        when(resolver.getObjEntity(any(Class.class))).thenReturn(objectEntity);
 
         DataChannel channel = mock(DataChannel.class);
         when(channel.getEntityResolver()).thenReturn(resolver);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java b/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java
index daa0d22..c37d763 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java
@@ -226,7 +226,7 @@ public class FileProjectSaver implements ProjectSaver {
 
 			unit.targetTempFile = null;
 			try {
-				unit.node.acceptVisitor(new ConfigurationSourceSetter(new URLResource(targetFile.toURL())));
+				unit.node.acceptVisitor(new ConfigurationSourceSetter(new URLResource(targetFile.toURI().toURL())));
 			} catch (MalformedURLException e) {
 				throw new CayenneRuntimeException("Malformed URL for file '%s'", e, targetFile.getAbsolutePath());
 			}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-project/src/test/java/org/apache/cayenne/project/DataChannelProjectSaverTest.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/test/java/org/apache/cayenne/project/DataChannelProjectSaverTest.java b/cayenne-project/src/test/java/org/apache/cayenne/project/DataChannelProjectSaverTest.java
index dbdfd51..484c9ca 100644
--- a/cayenne-project/src/test/java/org/apache/cayenne/project/DataChannelProjectSaverTest.java
+++ b/cayenne-project/src/test/java/org/apache/cayenne/project/DataChannelProjectSaverTest.java
@@ -82,7 +82,7 @@ public class DataChannelProjectSaverTest extends Project2Case {
 
         File outFile = setupTestDirectory("testSave");
 
-        saver.saveAs(project, new URLResource(outFile.toURL()));
+        saver.saveAs(project, new URLResource(outFile.toURI().toURL()));
 
         File rootFile = new File(outFile, "cayenne-PROJECT2.xml");
         assertTrue(rootFile.exists());
@@ -138,7 +138,7 @@ public class DataChannelProjectSaverTest extends Project2Case {
         assertEquals(0, outFile.list().length);
 
         try {
-            saver.saveAs(project, new URLResource(outFile.toURL()));
+            saver.saveAs(project, new URLResource(outFile.toURI().toURL()));
             fail("No exception was thrown..");
         }
         catch (CayenneRuntimeException e) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-project/src/test/java/org/apache/cayenne/project/FileProjectSaverTest.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/test/java/org/apache/cayenne/project/FileProjectSaverTest.java b/cayenne-project/src/test/java/org/apache/cayenne/project/FileProjectSaverTest.java
index 322245c..a9a432d 100644
--- a/cayenne-project/src/test/java/org/apache/cayenne/project/FileProjectSaverTest.java
+++ b/cayenne-project/src/test/java/org/apache/cayenne/project/FileProjectSaverTest.java
@@ -92,7 +92,7 @@ public class FileProjectSaverTest extends Project2Case {
         Project project = new Project(new ConfigurationTree<DataChannelDescriptor>(
                 rootNode));
 
-        saver.saveAs(project, new URLResource(testFolder.toURL()));
+        saver.saveAs(project, new URLResource(testFolder.toURI().toURL()));
 
         File target = new File(testFolder, "cayenne-test.xml");
         assertTrue(target.isFile());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v7/ProjectUpgrader_V7Test.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v7/ProjectUpgrader_V7Test.java b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v7/ProjectUpgrader_V7Test.java
index 793d6a0..8dd51a2 100644
--- a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v7/ProjectUpgrader_V7Test.java
+++ b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v7/ProjectUpgrader_V7Test.java
@@ -223,7 +223,7 @@ public class ProjectUpgrader_V7Test extends Project2Case {
 		Injector injector = DIBootstrap.createInjector(testModule);
 		injector.injectMembers(upgrader);
 
-		Resource source = new URLResource(targetsBefore.get(0).toURL());
+		Resource source = new URLResource(targetsBefore.get(0).toURI().toURL());
 		UpgradeHandler handler = upgrader.getUpgradeHandler(source);
 
 		Resource upgraded = handler.performUpgrade();
@@ -377,7 +377,7 @@ public class ProjectUpgrader_V7Test extends Project2Case {
 		ProjectUpgrader_V7 upgrader = new ProjectUpgrader_V7();
 		injector.injectMembers(upgrader);
 
-		Resource source = new URLResource(files.get(0).toURL());
+		Resource source = new URLResource(files.get(0).toURI().toURL());
 		assertNotNull(source);
 		UpgradeHandler handler = upgrader.getUpgradeHandler(source);
 		assertNotNull(handler);
@@ -452,7 +452,7 @@ public class ProjectUpgrader_V7Test extends Project2Case {
 		ProjectUpgrader_V7 upgrader = new ProjectUpgrader_V7();
 		injector.injectMembers(upgrader);
 
-		Resource resource = new URLResource(file.get(0).toURL());
+		Resource resource = new URLResource(file.get(0).toURI().toURL());
 		assertNotNull(resource);
 		UpgradeHandler handler = upgrader.getUpgradeHandler(resource);
 		assertNotNull(handler);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v8/ProjectUpgrader_V8Test.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v8/ProjectUpgrader_V8Test.java b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v8/ProjectUpgrader_V8Test.java
index 610d77c..1252d69 100644
--- a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v8/ProjectUpgrader_V8Test.java
+++ b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v8/ProjectUpgrader_V8Test.java
@@ -115,7 +115,7 @@ public class ProjectUpgrader_V8Test extends Project2Case {
         Injector injector = DIBootstrap.createInjector(testModule);
         injector.injectMembers(upgrader);
 
-        Resource source = new URLResource(targetsBefore.get(0).toURL());
+        Resource source = new URLResource(targetsBefore.get(0).toURI().toURL());
         UpgradeHandler handler = upgrader.getUpgradeHandler(source);
 
         Resource upgraded = handler.performUpgrade();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v9/ProjectUpgrader_V9Test.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v9/ProjectUpgrader_V9Test.java b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v9/ProjectUpgrader_V9Test.java
index cf0db9b..3851a2e 100644
--- a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v9/ProjectUpgrader_V9Test.java
+++ b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/v9/ProjectUpgrader_V9Test.java
@@ -181,7 +181,7 @@ public class ProjectUpgrader_V9Test extends Project2Case {
         Injector injector = DIBootstrap.createInjector(testModule);
         injector.injectMembers(upgrader);
 
-        Resource source = new URLResource(targetsBefore.get(0).toURL());
+        Resource source = new URLResource(targetsBefore.get(0).toURI().toURL());
         UpgradeHandler handler = upgrader.getUpgradeHandler(source);
 
         Resource upgraded = handler.performUpgrade();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java b/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java
index d53167f..856d77b 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java
@@ -249,6 +249,7 @@ public class CayenneContext extends BaseContext {
         }
 
         ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(entity.getName());
+        @SuppressWarnings("unchecked")
         T object = (T) descriptor.createObject();
         descriptor.injectValueHolders(object);
         registerNewObject((Persistent) object, entity.getName(), descriptor);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextGraphManager.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextGraphManager.java b/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextGraphManager.java
index 2c47321..ec97004 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextGraphManager.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextGraphManager.java
@@ -186,7 +186,9 @@ final class CayenneContextGraphManager extends GraphMap {
             Object source,
             Object target) throws PropertyException {
 
+        @SuppressWarnings("unchecked")
         Map<Object, Object> map = (Map<Object, Object>) property.readProperty(source);
+
         Object newKey = property.getMapKey(target);
         Object currentValue = map.get(newKey);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java b/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java
index dfc8318..401f14b 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java
@@ -579,7 +579,7 @@ public class CayenneDataObject extends PersistentObject implements DataObject, V
 	 */
 	protected void validateForSave(ValidationResult validationResult) {
 
-		ObjEntity objEntity = getObjectContext().getEntityResolver().lookupObjEntity(this);
+		ObjEntity objEntity = getObjectContext().getEntityResolver().getObjEntity(this);
 		if (objEntity == null) {
 			throw new CayenneRuntimeException("No ObjEntity mapping found for DataObject " + getClass().getName());
 		}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/DataChannelSyncCallbackAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/DataChannelSyncCallbackAction.java b/cayenne-server/src/main/java/org/apache/cayenne/DataChannelSyncCallbackAction.java
index 32013f2..4e954f3 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/DataChannelSyncCallbackAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/DataChannelSyncCallbackAction.java
@@ -57,9 +57,9 @@ public abstract class DataChannelSyncCallbackAction implements GraphChangeHandle
     }
 
     LifecycleCallbackRegistry callbackRegistry;
-    Collection updated;
-    Collection persisted;
-    Collection removed;
+    Collection<Object> updated;
+    Collection<Object> persisted;
+    Collection<Object> removed;
     private Map<Object, Op> seenIds;
     private GraphManager graphManager;
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextChangeLog.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextChangeLog.java b/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextChangeLog.java
index 496da23..0c7b483 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextChangeLog.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextChangeLog.java
@@ -145,7 +145,7 @@ class ObjectContextChangeLog {
      */
     private List<GraphDiff> immutableList(int fromIndex, int toIndex) {
         if (toIndex - fromIndex == 0) {
-            return Collections.EMPTY_LIST;
+            return Collections.emptyList();
         }
 
         // Assuming that internal diffs list can only grow and can never be trimmed,

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextStateLog.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextStateLog.java b/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextStateLog.java
index acc9298..408813e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextStateLog.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextStateLog.java
@@ -53,10 +53,10 @@ class ObjectContextStateLog implements GraphChangeHandler {
      * Updates dirty objects state and clears dirty ids map.
      */
     void graphCommitted() {
-        /**
+        /*
          * Array for deleted ids, to avoid concurrent modification
          */
-        List deletedIds = new Vector();
+        List<Object> deletedIds = new Vector<>();
         
         for (Object id : dirtyIds) {
             Object node = graphManager.getNode(id);
@@ -75,7 +75,7 @@ class ObjectContextStateLog implements GraphChangeHandler {
             }
         }
         
-        /**
+        /*
          * Now unregister all deleted objects
          */
         for (Object id : deletedIds) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/ObjectId.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/ObjectId.java b/cayenne-server/src/main/java/org/apache/cayenne/ObjectId.java
index e726475..f7d6b41 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/ObjectId.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/ObjectId.java
@@ -176,14 +176,14 @@ public class ObjectId implements Serializable {
 	 */
 	public Map<String, Object> getIdSnapshot() {
 		if (isTemporary()) {
-			return (replacementIdMap == null) ? Collections.EMPTY_MAP : Collections.unmodifiableMap(replacementIdMap);
+			return (replacementIdMap == null) ? Collections.<String, Object>emptyMap() : Collections.unmodifiableMap(replacementIdMap);
 		}
 
 		if (singleKey != null) {
 			return Collections.singletonMap(singleKey, singleValue);
 		}
 
-		return objectIdKeys != null ? Collections.unmodifiableMap(objectIdKeys) : Collections.EMPTY_MAP;
+		return objectIdKeys != null ? Collections.unmodifiableMap(objectIdKeys) : Collections.<String, Object>emptyMap();
 	}
 
 	@Override
@@ -219,7 +219,7 @@ public class ObjectId implements Serializable {
 		}
 
 		for (Map.Entry<String, ?> entry : objectIdKeys.entrySet()) {
-			Object entryKey = entry.getKey();
+			String entryKey = entry.getKey();
 			Object entryValue = entry.getValue();
 
 			if (entryValue == null) {
@@ -281,7 +281,7 @@ public class ObjectId implements Serializable {
 				// handle multiple keys - must sort the keys to use with
 				// HashCodeBuilder
 
-				Object[] keys = objectIdKeys.keySet().toArray();
+				String[] keys = objectIdKeys.keySet().toArray(new String[0]);
 				Arrays.sort(keys);
 
 				for (int i = 0; i < len; i++) {
@@ -374,7 +374,7 @@ public class ObjectId implements Serializable {
 
 			List<String> keys = new ArrayList<>(objectIdKeys.keySet());
 			Collections.sort(keys);
-			for (Object key : keys) {
+			for (String key : keys) {
 				buffer.append(", ");
 				buffer.append(String.valueOf(key)).append("=").append(objectIdKeys.get(key));
 			}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
index 74161c3..cc0a65e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
@@ -1210,7 +1210,7 @@ public class DataContext extends BaseContext {
 
     /**
      * @since 4.0
-     * @deprecated since 4.0 avoid using thsi directly. Transaction management
+     * @deprecated since 4.0 avoid using this directly. Transaction management
      *             at this level will be eventually removed
      */
     @Deprecated

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java
index 040aa5e..9bc0129 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java
@@ -146,21 +146,21 @@ public class DataDomain implements QueryEngine, DataChannel {
 	 * @deprecated since 4.0 unused
 	 */
 	@Deprecated
-	public DataDomain(String name, Map properties) {
+	public DataDomain(String name, Map<String, String> properties) {
 		init(name);
 		initWithProperties(properties);
 	}
 
 	private void init(String name) {
 
-		this.filters = new CopyOnWriteArrayList<DataChannelFilter>();
+		this.filters = new CopyOnWriteArrayList<>();
 		this.nodesByDataMapName = new ConcurrentHashMap<>();
 		this.nodes = new ConcurrentHashMap<>();
 
 		// properties are read-only, so no need for concurrent map, or any
 		// specific map
 		// for that matter
-		this.properties = Collections.EMPTY_MAP;
+		this.properties = Collections.emptyMap();
 
 		setName(name);
 	}
@@ -196,7 +196,7 @@ public class DataDomain implements QueryEngine, DataChannel {
 	 * @since 1.1
 	 */
 	protected void resetProperties() {
-		properties = Collections.EMPTY_MAP;
+		properties = Collections.emptyMap();
 
 		sharedCacheEnabled = SHARED_CACHE_ENABLED_DEFAULT;
 		validatingObjectsOnCommit = VALIDATING_OBJECTS_ON_COMMIT_DEFAULT;
@@ -212,7 +212,7 @@ public class DataDomain implements QueryEngine, DataChannel {
 	public void initWithProperties(Map<String, String> properties) {
 
 		// clone properties to ensure that it is read-only internally
-		properties = properties != null ? new HashMap<>(properties) : Collections.EMPTY_MAP;
+		properties = properties != null ? new HashMap<>(properties) : Collections.<String, String>emptyMap();
 
 		String sharedCacheEnabled = properties.get(SHARED_CACHE_ENABLED_PROPERTY);
 		String validatingObjectsOnCommit = properties.get(VALIDATING_OBJECTS_ON_COMMIT_PROPERTY);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java
index 761434c..fa3d3c9 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java
@@ -80,11 +80,10 @@ class DataDomainFlattenedBucket {
         }
 
         DataNode node = parent.getDomain().lookupDataNode(flattenedEntity.getDataMap());
-        List flattenedSnapshots = flattenedDeleteInfo.buildJoinSnapshotsForDelete(node);
+        List<Map<String, Object>> flattenedSnapshots = flattenedDeleteInfo.buildJoinSnapshotsForDelete(node);
         if (!flattenedSnapshots.isEmpty()) {
-            Iterator snapsIt = flattenedSnapshots.iterator();
-            while (snapsIt.hasNext()) {
-                relationDeleteQuery.add((Map) snapsIt.next());
+            for (Map<String, Object> flattenedSnapshot : flattenedSnapshots) {
+                relationDeleteQuery.add(flattenedSnapshot);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
index 7436dcc..588a0d2 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
@@ -280,9 +280,9 @@ abstract class DataDomainSyncBucket {
 
         // must do a slow map scan to ensure the object is not mapped under a different
         // key...
-        Iterator<?> it = map.entrySet().iterator();
+        Iterator<Map.Entry<Object, Object>> it = map.entrySet().iterator();
         while (it.hasNext()) {
-            Map.Entry<Object, Object> e = (Map.Entry<Object, Object>) it.next();
+            Map.Entry<Object, Object> e = it.next();
             if (e.getValue() == target) {
                 it.remove();
                 break;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java
index 0f9c038..d128f77 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java
@@ -138,12 +138,10 @@ class DataDomainUpdateBucket extends DataDomainSyncBucket {
      * Creates a list of DbAttributes that are updated in a snapshot
      */
     private List updatedAttributes(DbEntity entity, Map updatedSnapshot) {
-        List attributes = new ArrayList(updatedSnapshot.size());
+        List<Object> attributes = new ArrayList<>(updatedSnapshot.size());
         Map entityAttributes = entity.getAttributeMap();
 
-        Iterator it = updatedSnapshot.keySet().iterator();
-        while (it.hasNext()) {
-            Object name = it.next();
+        for (Object name : updatedSnapshot.keySet()) {
             attributes.add(entityAttributes.get(name));
         }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java
index efaa98f..85c8913 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java
@@ -45,20 +45,18 @@ public class DefaultObjectMapRetainStrategy implements ObjectMapRetainStrategy {
         this.runtimeProperties = runtimeProperties;
     }
 
+    @SuppressWarnings("unchecked")
     public Map<Object, Persistent> createObjectMap() {
         String strategy = runtimeProperties
                 .get(Constants.SERVER_OBJECT_RETAIN_STRATEGY_PROPERTY);
 
         if (strategy == null || WEAK_RETAIN_STRATEGY.equals(strategy)) {
             return new ReferenceMap(AbstractReferenceMap.HARD, AbstractReferenceMap.WEAK);
-        }
-        else if (SOFT_RETAIN_STRATEGY.equals(strategy)) {
+        } else if (SOFT_RETAIN_STRATEGY.equals(strategy)) {
             return new ReferenceMap(AbstractReferenceMap.HARD, AbstractReferenceMap.SOFT);
-        }
-        else if (HARD_RETAIN_STRATEGY.equals(strategy)) {
+        } else if (HARD_RETAIN_STRATEGY.equals(strategy)) {
             return new ReferenceMap(AbstractReferenceMap.HARD, AbstractReferenceMap.HARD);
-        }
-        else {
+        } else {
             throw new CayenneRuntimeException("Unsupported retain strategy " + strategy);
         }
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java
index b9cf3f5..693daf6 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java
@@ -128,7 +128,7 @@ public class ObjectStore implements Serializable, SnapshotEventListener, GraphMa
     Collection<GraphDiff> getLifecycleEventInducedChanges() {
         return lifecycleEventInducedChanges != null
                 ? lifecycleEventInducedChanges
-                : Collections.EMPTY_LIST;
+                : Collections.<GraphDiff>emptyList();
     }
 
     void registerLifecycleEventInducedChange(GraphDiff diff) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
index e45cc9f..be7e1ed 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
@@ -78,7 +78,7 @@ class PrefetchProcessorJointNode extends PrefetchProcessorNode {
             capacity = capacity / 2;
         }
 
-        objects = new ArrayList(capacity);
+        objects = new ArrayList<>(capacity);
         resolved = new HashMap<>(capacity);
         resolvedRows = new ArrayList<>(capacity);
         buildRowMapping();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLTranslationContext.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLTranslationContext.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLTranslationContext.java
index 2f5e58d..09d41fc 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLTranslationContext.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLTranslationContext.java
@@ -112,7 +112,7 @@ public class EJBQLTranslationContext {
         SQLTemplate query = new SQLTemplate(compiledExpression
                 .getRootDescriptor()
                 .getObjectClass(), sql);
-        query.setParameters(boundParameters);
+        query.setParams(boundParameters);
         return query;
     }
     

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationTree.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationTree.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationTree.java
index 7656c5d..4035575 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationTree.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationTree.java
@@ -48,6 +48,6 @@ public class ConfigurationTree<T extends ConfigurationNode> {
     }
 
     public Collection<ValidationFailure> getLoadFailures() {
-        return loadFailures != null ? loadFailures : Collections.EMPTY_LIST;
+        return loadFailures != null ? loadFailures : Collections.<ValidationFailure>emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerRuntime.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerRuntime.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerRuntime.java
index 991fe4a..756cbc7 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerRuntime.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerRuntime.java
@@ -50,6 +50,7 @@ public class ServerRuntime extends CayenneRuntime {
      * @return a builder of ServerRuntime.
      * @since 4.0
      */
+    @SuppressWarnings("deprecation")
     public static ServerRuntimeBuilder builder() {
         return new ServerRuntimeBuilder();
     }
@@ -60,6 +61,7 @@ public class ServerRuntime extends CayenneRuntime {
      * @param name optional symbolic name of the created runtime.
      * @return a named builder of ServerRuntime.
      */
+    @SuppressWarnings("deprecation")
     public static ServerRuntimeBuilder builder(String name) {
         return new ServerRuntimeBuilder(name);
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/configuration/web/CayenneFilter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/web/CayenneFilter.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/web/CayenneFilter.java
index f43fc00..5637146 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/web/CayenneFilter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/web/CayenneFilter.java
@@ -71,16 +71,17 @@ public class CayenneFilter implements Filter {
         String configurationLocation = configAdapter.getConfigurationLocation();
         Collection<Module> modules = configAdapter.createModules(new WebModule());
         modules.addAll(getAdditionalModules());
-        
-        ServerRuntime runtime = new ServerRuntime(
-                configurationLocation,
-                modules.toArray(new Module[modules.size()]));
+
+        ServerRuntime runtime = ServerRuntime.builder()
+                .addConfig(configurationLocation)
+                .addModules(modules).build();
 
         WebUtil.setCayenneRuntime(config.getServletContext(), runtime);
     }
 
     /**
-     * Subclasses may override this to specify additional modules that should be included when creating the CayenneRuntime (in addition to those specified in the web.xml file).
+     * Subclasses may override this to specify additional modules that should be included when creating the CayenneRuntime
+     * (in addition to those specified in the web.xml file).
      * 
      * @since 4.0
      */

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/event/EventSubject.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/event/EventSubject.java b/cayenne-server/src/main/java/org/apache/cayenne/event/EventSubject.java
index a28b36e..4122e12 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/event/EventSubject.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/event/EventSubject.java
@@ -40,6 +40,7 @@ import org.apache.commons.collections.map.ReferenceMap;
 public class EventSubject implements Serializable {
 
     // a Map that will allow the values to be GC'ed
+    @SuppressWarnings("unchecked")
     private static Map<String, EventSubject> _registeredSubjects = new ReferenceMap(
             ReferenceMap.HARD,
             ReferenceMap.WEAK);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTConcat.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTConcat.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTConcat.java
index 0e285c4..1bfb336 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTConcat.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTConcat.java
@@ -32,7 +32,7 @@ public class ASTConcat extends ASTFunctionCall {
     }
 
     public ASTConcat(Expression... expressions) {
-        super(ExpressionParserTreeConstants.JJTCONCAT, "CONCAT", expressions);
+        super(ExpressionParserTreeConstants.JJTCONCAT, "CONCAT", (Object[])expressions);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java b/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
index b9a4dd4..d9d0502 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
@@ -1394,7 +1394,7 @@ public class DataMap implements Serializable, ConfigurationNode, XMLSerializable
     }
 
     public Map<String, ObjEntity> getSubclassesForObjEntity(ObjEntity superEntity) {
-        Map<String, ObjEntity> subObjectEntities = new HashMap(5);
+        Map<String, ObjEntity> subObjectEntities = new HashMap<>(5);
         for (ObjEntity objectEntity : objEntityMap.values()) {
             if (superEntity.getName().equals(objectEntity.getSuperEntityName())) {
                 subObjectEntities.put(objectEntity.getName(), objectEntity);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java b/cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java
index 3a26d15..3989b19 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java
@@ -204,6 +204,7 @@ public class DbEntity extends Entity implements ConfigurationNode, DbEntityListe
      * Returns a Collection of all attributes that either belong to this
      * DbEntity or inherited.
      */
+    @SuppressWarnings("unchecked")
     @Override
     public Collection<DbAttribute> getAttributes() {
         return (Collection<DbAttribute>) super.getAttributes();
@@ -275,11 +276,13 @@ public class DbEntity extends Entity implements ConfigurationNode, DbEntityListe
     /**
      * Returns a Collection of relationships from this entity or inherited.
      */
+    @SuppressWarnings("unchecked")
     @Override
     public Collection<DbRelationship> getRelationships() {
         return (Collection<DbRelationship>) super.getRelationships();
     }
 
+    @SuppressWarnings("unchecked")
     @Override
     public SortedMap<String, DbRelationship> getRelationshipMap() {
         return (SortedMap<String, DbRelationship>) super.getRelationshipMap();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java b/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java
index 8ef313d..d932364 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java
@@ -120,9 +120,10 @@ public class DbRelationship extends Relationship implements ConfigurationNode {
      * 
      * @since 1.1
      */
+    @SuppressWarnings("unchecked")
     public Collection<DbAttribute> getTargetAttributes() {
         if (joins.size() == 0) {
-            return Collections.EMPTY_LIST;
+            return Collections.emptyList();
         }
 
         return CollectionUtils.collect(joins, JoinTransformers.targetExtractor);
@@ -133,9 +134,10 @@ public class DbRelationship extends Relationship implements ConfigurationNode {
      * 
      * @since 1.1
      */
+    @SuppressWarnings("unchecked")
     public Collection<DbAttribute> getSourceAttributes() {
         if (joins.size() == 0) {
-            return Collections.EMPTY_LIST;
+            return Collections.emptyList();
         }
 
         return CollectionUtils.collect(joins, JoinTransformers.sourceExtractor);
@@ -383,7 +385,7 @@ public class DbRelationship extends Relationship implements ConfigurationNode {
             Object val = srcSnapshot.get(join.getSourceName());
             if (val == null) {
                 foundNulls++;
-                idMap = Collections.EMPTY_MAP;
+                idMap = Collections.emptyMap();
             } else {
                 idMap = Collections.singletonMap(join.getTargetName(), val);
             }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/map/EmbeddedAttribute.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/EmbeddedAttribute.java b/cayenne-server/src/main/java/org/apache/cayenne/map/EmbeddedAttribute.java
index 18fc97e..d26113e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/EmbeddedAttribute.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/EmbeddedAttribute.java
@@ -174,7 +174,7 @@ public class EmbeddedAttribute extends ObjAttribute {
     public Collection<ObjAttribute> getAttributes() {
         Embeddable e = getEmbeddable();
         if (e == null) {
-            return Collections.EMPTY_LIST;
+            return Collections.emptyList();
         }
 
         Collection<EmbeddableAttribute> embeddableAttributes = e.getAttributes();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/map/EntityInheritanceTree.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/EntityInheritanceTree.java b/cayenne-server/src/main/java/org/apache/cayenne/map/EntityInheritanceTree.java
index b41f638..18988d7 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/EntityInheritanceTree.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/EntityInheritanceTree.java
@@ -127,7 +127,7 @@ public class EntityInheritanceTree {
     }
 
     public Collection<EntityInheritanceTree> getChildren() {
-        return (subentities != null) ? subentities : Collections.EMPTY_LIST;
+        return (subentities != null) ? subentities : Collections.<EntityInheritanceTree>emptyList();
     }
 
     public ObjEntity getEntity() {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/map/ObjAttribute.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjAttribute.java b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjAttribute.java
index ea5b05e..57bfca3 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjAttribute.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjAttribute.java
@@ -174,13 +174,13 @@ public class ObjAttribute extends Attribute implements ConfigurationNode {
      * Returns a DbAttribute mapped by this ObjAttribute.
      */
     public DbAttribute getDbAttribute() {
-        Iterator<CayenneMapEntry> pathIterator = getDbPathIterator((ObjEntity) getEntity());
+        Iterator<CayenneMapEntry> pathIterator = getDbPathIterator(getEntity());
         CayenneMapEntry o = null;
         while (pathIterator.hasNext()) {
             o = pathIterator.next();
         }
         if (o == null) {
-            return getParentDbAttribute((ObjEntity) getEntity());
+            return getParentDbAttribute(getEntity());
         }
         return (DbAttribute) o;
     }
@@ -210,7 +210,7 @@ public class ObjAttribute extends Attribute implements ConfigurationNode {
      * @since 3.0
      */
     public boolean isInherited() {
-        ObjEntity owningEntity = (ObjEntity) getEntity();
+        ObjEntity owningEntity = getEntity();
         if (owningEntity == null) {
             return false;
         }
@@ -225,9 +225,10 @@ public class ObjAttribute extends Attribute implements ConfigurationNode {
     }
 
     public Iterator<CayenneMapEntry> getDbPathIterator() {
-        return getDbPathIterator((ObjEntity) getEntity());
+        return getDbPathIterator(getEntity());
     }
 
+    @SuppressWarnings("unchecked")
     public Iterator<CayenneMapEntry> getDbPathIterator(ObjEntity entity) {
         if (dbAttributePath == null) {
             return IteratorUtils.EMPTY_ITERATOR;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
index f54ecb9..6ea1f62 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
@@ -35,7 +35,6 @@ import org.apache.cayenne.util.XMLEncoder;
 import org.apache.commons.collections.Transformer;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -59,14 +58,14 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
 
     // do not import CayenneDataObject as it introduces unneeded client
     // dependency
-    static final String CAYENNE_DATA_OBJECT_CLASS = "org.apache.cayenne.CayenneDataObject";
+    private static final String CAYENNE_DATA_OBJECT_CLASS = "org.apache.cayenne.CayenneDataObject";
     /**
      * A collection of default "generic" entity classes excluded from class
      * generation.
      * 
      * @since 1.2
      */
-    protected static final Collection<String> DEFAULT_GENERIC_CLASSES = Arrays.asList(CAYENNE_DATA_OBJECT_CLASS);
+    protected static final Collection<String> DEFAULT_GENERIC_CLASSES = Collections.singletonList(CAYENNE_DATA_OBJECT_CLASS);
 
     protected String superClassName;
     protected String className;
@@ -262,7 +261,7 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
                 continue;
             }
 
-            ObjEntity targetEntity = (ObjEntity) relationship.getTargetEntity();
+            ObjEntity targetEntity = relationship.getTargetEntity();
             // note that 'isClientAllowed' also checks parent DataMap client
             // policy
             // that can be handy in case of cross-map relationships
@@ -743,10 +742,10 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
     @Override
     public SortedMap<String, ObjAttribute> getAttributeMap() {
         if (superEntityName == null) {
-            return (SortedMap<String, ObjAttribute>) super.getAttributeMap();
+            return getAttributeMapInternal();
         }
 
-        SortedMap<String, ObjAttribute> attributeMap = new TreeMap<String, ObjAttribute>();
+        SortedMap<String, ObjAttribute> attributeMap = new TreeMap<>();
         appendAttributes(attributeMap);
         return attributeMap;
     }
@@ -755,11 +754,11 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
      * Recursively appends all attributes in the entity inheritance hierarchy.
      */
     final void appendAttributes(Map<String, ObjAttribute> map) {
-        map.putAll((Map<String, ObjAttribute>) super.getAttributeMap());
+        map.putAll(getAttributeMapInternal());
 
         ObjEntity superEntity = getSuperEntity();
         if (superEntity != null) {
-            SortedMap<String, ObjAttribute> attributeMap = new TreeMap<String, ObjAttribute>();
+            SortedMap<String, ObjAttribute> attributeMap = new TreeMap<>();
             superEntity.appendAttributes(attributeMap);
             for (String attributeName : attributeMap.keySet()) {
 
@@ -775,6 +774,11 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
         }
     }
 
+    @SuppressWarnings("unchecked")
+    final SortedMap<String, ObjAttribute> getAttributeMapInternal() {
+        return (SortedMap<String, ObjAttribute>) super.getAttributeMap();
+    }
+
     /**
      * @since 3.0
      */
@@ -795,10 +799,6 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
      */
     @Override
     public Collection<ObjAttribute> getAttributes() {
-        if (superEntityName == null) {
-            return (Collection<ObjAttribute>) super.getAttributes();
-        }
-
         return getAttributeMap().values();
     }
 
@@ -808,6 +808,7 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
      * 
      * @since 1.1
      */
+    @SuppressWarnings("unchecked")
     public Collection<ObjAttribute> getDeclaredAttributes() {
         return (Collection<ObjAttribute>) super.getAttributes();
     }
@@ -834,10 +835,10 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
     @Override
     public SortedMap<String, ObjRelationship> getRelationshipMap() {
         if (superEntityName == null) {
-            return (SortedMap<String, ObjRelationship>) super.getRelationshipMap();
+            return getRelationshipMapInternal();
         }
 
-        SortedMap<String, ObjRelationship> relationshipMap = new TreeMap<String, ObjRelationship>();
+        SortedMap<String, ObjRelationship> relationshipMap = new TreeMap<>();
         appendRelationships(relationshipMap);
         return relationshipMap;
     }
@@ -847,7 +848,7 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
      * hierarchy.
      */
     final void appendRelationships(Map<String, ObjRelationship> map) {
-        map.putAll((Map<String, ObjRelationship>) super.getRelationshipMap());
+        map.putAll(getRelationshipMapInternal());
 
         ObjEntity superEntity = getSuperEntity();
         if (superEntity != null) {
@@ -857,19 +858,21 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
 
     @Override
     public Collection<ObjRelationship> getRelationships() {
-        if (superEntityName == null) {
-            return (Collection<ObjRelationship>) super.getRelationships();
-        }
-
         return getRelationshipMap().values();
     }
 
+    @SuppressWarnings("unchecked")
+    final SortedMap<String, ObjRelationship> getRelationshipMapInternal() {
+        return (SortedMap<String, ObjRelationship>) super.getRelationshipMap();
+    }
+
     /**
      * Returns a Collection of all relationships that belong to this ObjEntity,
      * excluding inherited attributes.
      * 
      * @since 1.1
      */
+    @SuppressWarnings("unchecked")
     public Collection<ObjRelationship> getDeclaredRelationships() {
         return (Collection<ObjRelationship>) super.getRelationships();
     }
@@ -1117,7 +1120,7 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
      * @since 4.0
      */
     public Set<String> getCallbackMethods() {
-        Set<String> res = new LinkedHashSet<String>();
+        Set<String> res = new LinkedHashSet<>();
         for (CallbackDescriptor descriptor : getCallbackMap().getCallbacks()) {
             res.addAll(descriptor.getCallbackMethods());
         }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/map/PathComponentIterator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/PathComponentIterator.java b/cayenne-server/src/main/java/org/apache/cayenne/map/PathComponentIterator.java
index c7ad56a..d4f7d54 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/PathComponentIterator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/PathComponentIterator.java
@@ -102,7 +102,7 @@ class PathComponentIterator implements Iterator<PathComponent<Attribute, Relatio
             Iterator<PathComponent<Attribute, Relationship>> subpathIt = new PathComponentIterator(
                     currentEntity,
                     aliasedPath,
-                    Collections.EMPTY_MAP);
+                    Collections.<String, String>emptyMap());
 
             Collection<PathComponent<Attribute, Relationship>> parsedSubpath = new ArrayList<>(4);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/query/AbstractMappedQuery.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/AbstractMappedQuery.java b/cayenne-server/src/main/java/org/apache/cayenne/query/AbstractMappedQuery.java
index dbc76a3..da10789 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/AbstractMappedQuery.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/AbstractMappedQuery.java
@@ -43,8 +43,7 @@ public abstract class AbstractMappedQuery extends IndirectQuery {
         if (this.params == null) {
             this.params = new HashMap<>(parameters);
         } else {
-            Map bareMap = parameters;
-            this.params.putAll(bareMap);
+            this.params.putAll(parameters);
         }
 
         this.replacementQuery = null;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/EJBQLQuery.java b/cayenne-server/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
index a25a25f..6e5d708 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
@@ -74,7 +74,7 @@ public class EJBQLQuery implements Query, XMLSerializable {
 
         // must init defaults even if properties are empty
         if (properties == null) {
-            properties = Collections.EMPTY_MAP;
+            properties = Collections.emptyMap();
         }
         metadata.initWithProperties(properties);
     }
@@ -192,12 +192,12 @@ public class EJBQLQuery implements Query, XMLSerializable {
     public Map<String, Object> getNamedParameters() {
         return namedParameters != null
                 ? Collections.unmodifiableMap(namedParameters)
-                : Collections.EMPTY_MAP;
+                : Collections.<String, Object>emptyMap();
     }
 
     public Map<Integer, Object> getPositionalParameters() {
         return positionalParameters != null ? Collections
-                .unmodifiableMap(positionalParameters) : Collections.EMPTY_MAP;
+                .unmodifiableMap(positionalParameters) : Collections.<Integer, Object>emptyMap();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/query/MappedSelect.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/MappedSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/MappedSelect.java
index 40bf4f5..aaf58b6 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/MappedSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/MappedSelect.java
@@ -126,11 +126,13 @@ public class MappedSelect<T> extends AbstractMappedQuery implements Select<T> {
         return this;
     }
 
+    @SuppressWarnings("unchecked")
     @Override
     public MappedSelect<T> params(Map<String, ?> parameters) {
         return (MappedSelect<T>) super.params(parameters);
     }
 
+    @SuppressWarnings("unchecked")
     @Override
     public MappedSelect<T> param(String name, Object value) {
         return (MappedSelect<T>) super.param(name, value);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java b/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
index cb82a2a..e6d2464 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
@@ -60,6 +60,7 @@ public class Ordering implements Comparator<Object>, Serializable, XMLSerializab
 	 * Ordering with lower index is more significant than any other Ordering
 	 * with higher index. List being ordered is modified in place.
 	 */
+	@SuppressWarnings("unchecked")
 	public static void orderList(List<?> objects, List<? extends Ordering> orderings) {
 		Collections.sort(objects, ComparatorUtils.chainedComparator(orderings));
 	}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQuery.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQuery.java b/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQuery.java
index b081c6b..36f1f80 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQuery.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQuery.java
@@ -166,7 +166,7 @@ public class ProcedureQuery extends AbstractQuery implements ParameterizedQuery,
      * @since 1.2
      */
     public List<ColumnDescriptor[]> getResultDescriptors() {
-        return resultDescriptors != null ? resultDescriptors : Collections.EMPTY_LIST;
+        return resultDescriptors != null ? resultDescriptors : Collections.<ColumnDescriptor[]>emptyList();
     }
 
     /**
@@ -214,7 +214,7 @@ public class ProcedureQuery extends AbstractQuery implements ParameterizedQuery,
 
         // must init defaults even if properties are empty
         if (properties == null) {
-            properties = Collections.EMPTY_MAP;
+            properties = Collections.emptyMap();
         }
         Object columnNamesCapitalization = properties
                 .get(COLUMN_NAME_CAPITALIZATION_PROPERTY);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java b/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java
index a937f65..7a2e35a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java
@@ -52,7 +52,7 @@ class ProcedureQueryMetadata extends BaseQueryMetadata {
 
             if (root != null) {
                 if (root instanceof String) {
-                    this.procedure = resolver.lookupProcedure((String) root);
+                    this.procedure = resolver.getProcedure((String) root);
                 }
                 else if (root instanceof Procedure) {
                     this.procedure = (Procedure) root;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/reflect/PersistentDescriptor.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/PersistentDescriptor.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PersistentDescriptor.java
index bcaf65b..548ea90 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/PersistentDescriptor.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PersistentDescriptor.java
@@ -275,7 +275,7 @@ public class PersistentDescriptor implements ClassDescriptor {
 			return mapArcProperties;
 		}
 
-		return Collections.EMPTY_LIST;
+		return Collections.emptyList();
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/reflect/generic/DataObjectBaseProperty.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/generic/DataObjectBaseProperty.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/generic/DataObjectBaseProperty.java
index edbf66c..02d7ec2 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/generic/DataObjectBaseProperty.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/generic/DataObjectBaseProperty.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.reflect.generic;
 import java.io.Serializable;
 
 import org.apache.cayenne.DataObject;
-import org.apache.cayenne.reflect.Property;
+import org.apache.cayenne.reflect.PropertyDescriptor;
 import org.apache.cayenne.reflect.PropertyException;
 import org.apache.cayenne.reflect.PropertyVisitor;
 
@@ -30,7 +30,7 @@ import org.apache.cayenne.reflect.PropertyVisitor;
  * 
  * @since 3.0
  */
-abstract class DataObjectBaseProperty implements Property, Serializable {
+abstract class DataObjectBaseProperty implements PropertyDescriptor, Serializable {
 
     public abstract String getName();
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/resource/FilesystemResourceLocator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/resource/FilesystemResourceLocator.java b/cayenne-server/src/main/java/org/apache/cayenne/resource/FilesystemResourceLocator.java
index fd4a029..8bd3128 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/resource/FilesystemResourceLocator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/resource/FilesystemResourceLocator.java
@@ -99,7 +99,7 @@ public class FilesystemResourceLocator implements ResourceLocator {
             File resourceFile = new File(root, name);
             if (resourceFile.exists()) {
                 try {
-                    resources.add(new URLResource(resourceFile.toURL()));
+                    resources.add(new URLResource(resourceFile.toURI().toURL()));
                 }
                 catch (MalformedURLException e) {
                     throw new CayenneRuntimeException(

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/rop/ROPServlet.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/rop/ROPServlet.java b/cayenne-server/src/main/java/org/apache/cayenne/rop/ROPServlet.java
index db1bb0a..e7a0001 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/rop/ROPServlet.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/rop/ROPServlet.java
@@ -59,8 +59,10 @@ public class ROPServlet extends HttpServlet {
         Collection<Module> modules = configAdapter.createModules(new ROPServerModule(
                 eventBridgeParameters));
 
-        ServerRuntime runtime = new ServerRuntime(configurationLocation, modules
-                .toArray(new Module[modules.size()]));
+        ServerRuntime runtime = ServerRuntime.builder()
+                .addConfig(configurationLocation)
+                .addModules(modules)
+                .build();
 
         this.remoteService = runtime.getInjector().getInstance(RemoteService.class);
         this.serializationService = runtime.getInjector().getInstance(ROPSerializationService.class);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/util/GenericQueryResult.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/GenericQueryResult.java b/cayenne-server/src/main/java/org/apache/cayenne/util/GenericQueryResult.java
index 296dc59..17d8643 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/util/GenericQueryResult.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/util/GenericQueryResult.java
@@ -59,6 +59,7 @@ public class GenericQueryResult<T> implements QueryResult<T> {
         return false;
     }
 
+    @SuppressWarnings("unchecked")
     @Override
     public List<T> firstList() {
         for (QueryResultItem item : resultItems) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java
index 0db049b..3e3e7e8 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java
@@ -139,10 +139,9 @@ public abstract class ObjectContextQueryAction {
                         // TODO: Andrus 1/31/2006 - IncrementalFaultList is not properly
                         // transferred between contexts....
 
-                        List childObjects = new ArrayList(objects.size());
-                        Iterator it = objects.iterator();
-                        while (it.hasNext()) {
-                            Persistent object = (Persistent) it.next();
+                        List<Object> childObjects = new ArrayList<>(objects.size());
+                        for (Object object1 : objects) {
+                            Persistent object = (Persistent) object1;
                             childObjects.add(merger.merge(object));
                         }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/62ef5115/cayenne-server/src/main/java/org/apache/cayenne/util/PersistentObjectMap.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/PersistentObjectMap.java b/cayenne-server/src/main/java/org/apache/cayenne/util/PersistentObjectMap.java
index 4d64f52..8949d76 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/util/PersistentObjectMap.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/util/PersistentObjectMap.java
@@ -156,15 +156,13 @@ public class PersistentObjectMap extends RelationshipFault implements Map, Value
     /**
      * Converts a collection into a map indexed by map key.
      */
-    protected Map indexCollection(Collection collection) {
+    protected Map indexCollection(Collection<Object> collection) {
         // map objects by property
-        Map map = new HashMap((int) (collection.size() * 1.33d) + 1);
+        Map<Object, Object> map = new HashMap<>((int) (collection.size() * 1.33d) + 1);
 
         if (collection.size() > 0) {
 
-            Iterator it = collection.iterator();
-            while (it.hasNext()) {
-                Object next = it.next();
+            for (Object next : collection) {
                 Object key = mapKeyAccessor.getValue(next);
                 Object previous = map.put(key, next);
                 if (previous != null && previous != next) {