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/06/30 13:17:28 UTC

[1/2] cayenne git commit: Code cleanup: generics, formatting, docs, etc

Repository: cayenne
Updated Branches:
  refs/heads/master fed246bbb -> bb70d83a0


http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/util/CircularArrayTest.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/util/CircularArrayTest.java b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/util/CircularArrayTest.java
index 11fce3d..3328658 100644
--- a/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/util/CircularArrayTest.java
+++ b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/util/CircularArrayTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.cayenne.modeler.util;
 
+import java.util.Objects;
+
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -28,18 +30,10 @@ public class CircularArrayTest {
     @Test
     public void testArray() {
 
-        String a = "A";
-        String b = "B";
-        String c = "C";
-        String d = "D";
-        String e = "E";
-        String f = "F";
-        String g = "G";
-        String h = "H";
-
-        String s = null;
+        String a = "A", b = "B", c = "C", d = "D", e = "E", f = "F", g = "G", h = "H";
+        String s;
 
-        CircularArray q = new CircularArray(5);
+        CircularArray<String> q = new CircularArray<>(5);
 
         assertAdd(q, a, "[A, null, null, null, null]");
         assertRemove(q, a, "[null, null, null, null, null]");
@@ -66,103 +60,81 @@ public class CircularArrayTest {
         assertAdd(q, f, "[B, C, D, E, F]");
 
         assertAdd(q, g, "[C, D, E, F, G]");
-
         assertRemove(q, e, "[C, D, F, G, null]");
-
         assertAdd(q, h, "[C, D, F, G, H]");
 
         assertRemove(q, c, "[D, F, G, H, null]");
-
         assertRemove(q, h, "[D, F, G, null, null]");
-
         assertRemove(q, f, "[D, G, null, null, null]");
-
         assertRemove(q, g, "[D, null, null, null, null]");
-
         assertRemove(q, d, "[null, null, null, null, null]");
 
-        q = new CircularArray(3);
+        q = new CircularArray<>(3);
         q.add(a);
         int i = q.indexOf(a);
         if (i != 0) {
-            System.out.println("indexOf(a) should be zero instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("indexOf(a) should be zero instead got [" + String.valueOf(i) + "]");
         }
-        s = (String) q.get(0);
-        if (s != a) {
+        s = q.get(0);
+        if (!Objects.equals(s, a)) {
             System.out.println("get(0) should be 'a' instead got [" + s + "]");
         }
         i = q.size();
         if (i != 1) {
-            System.out.println("size() should be 1 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("size() should be 1 instead got [" + String.valueOf(i) + "]");
         }
 
         q.add(b);
         i = q.indexOf(b);
         if (i != 1) {
-            System.out.println("indexOf(b) should be 1 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("indexOf(b) should be 1 instead got [" + String.valueOf(i) + "]");
         }
-        s = (String) q.get(0);
-        if (s != a) {
+        s = q.get(0);
+        if (!Objects.equals(s, a)) {
             System.out.println("get(0) should be 'a' instead got [" + s + "]");
         }
-        s = (String) q.get(1);
-        if (s != b) {
+        s = q.get(1);
+        if (!Objects.equals(s, b)) {
             System.out.println("get(1) should be 'b' instead got [" + s + "]");
         }
 
         i = q.size();
         if (i != 2) {
-            System.out.println("size() should be 2 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("size() should be 2 instead got [" + String.valueOf(i) + "]");
         }
 
         q.add(c);
         i = q.indexOf(c);
         if (i != 2) {
-            System.out.println("indexOf(c) should be 2 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("indexOf(c) should be 2 instead got [" + String.valueOf(i) + "]");
         }
-        s = (String) q.get(0);
-        if (s != a) {
+        s = q.get(0);
+        if (!Objects.equals(s, a)) {
             System.out.println("get(0) should be 'a' instead got [" + s + "]");
         }
-        s = (String) q.get(1);
-        if (s != b) {
+        s = q.get(1);
+        if (!Objects.equals(s, b)) {
             System.out.println("get(1) should be 'b' instead got [" + s + "]");
         }
-        s = (String) q.get(2);
-        if (s != c) {
+        s = q.get(2);
+        if (!Objects.equals(s, c)) {
             System.out.println("get(1) should be 'c' instead got [" + s + "]");
         }
         i = q.size();
         if (i != 3) {
-            System.out.println("size() should be 3 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("size() should be 3 instead got [" + String.valueOf(i) + "]");
         }
 
         q.add(d);
         i = q.size();
         if (i != 3) {
-            System.out.println("size() should be 3 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("size() should be 3 instead got [" + String.valueOf(i) + "]");
         }
 
         q.add(e);
         i = q.size();
         if (i != 3) {
-            System.out.println("size() should be 3 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("size() should be 3 instead got [" + String.valueOf(i) + "]");
         }
 
         if (q.contains(a)) {
@@ -171,23 +143,19 @@ public class CircularArrayTest {
 
         i = q.indexOf(c);
         if (i != 0) {
-            System.out.println("indexOf(c) should be zero instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("indexOf(c) should be zero instead got [" + String.valueOf(i) + "]");
         }
-        s = (String) q.get(0);
-        if (s != c) {
+        s = q.get(0);
+        if (!Objects.equals(s, c)) {
             System.out.println("get(0) should be 'c' instead got [" + s + "]");
         }
 
         i = q.indexOf(d);
         if (i != 1) {
-            System.out.println("indexOf(d) should be 1 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("indexOf(d) should be 1 instead got [" + String.valueOf(i) + "]");
         }
-        s = (String) q.get(1);
-        if (s != d) {
+        s = q.get(1);
+        if (!Objects.equals(s, d)) {
             System.out.println("get(1) should be 'd' instead got [" + s + "]");
         }
 
@@ -197,61 +165,52 @@ public class CircularArrayTest {
                     + String.valueOf(i)
                     + "]");
         }
-        s = (String) q.get(2);
-        if (s != e) {
+        s = q.get(2);
+        if (!Objects.equals(s, e)) {
             System.out.println("get(2) should be 'e' instead got [" + s + "]");
         }
 
         q.resize(5);
         i = q.capacity();
         if (i != 5) {
-            System.out.println("size() should be 5 after resizing to 5 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("size() should be 5 after resizing to 5 instead got [" + String.valueOf(i) + "]");
         }
 
         // should be the same after resizing
         i = q.size();
         if (i != 3) {
-            System.out.println("size() should be 3 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("size() should be 3 instead got [" + String.valueOf(i) + "]");
         }
 
         i = q.indexOf(e);
         if (i != 2) {
-            System.out.println("indexOf(e) should be 2 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("indexOf(e) should be 2 instead got [" + String.valueOf(i) + "]");
         }
-        s = (String) q.get(2);
-        if (s != e) {
+        s = q.get(2);
+        if (!Objects.equals(s, e)) {
             System.out.println("get(2) should be 'e' instead got [" + s + "]");
         }
 
         q.resize(2);
         i = q.capacity();
         if (i != 2) {
-            System.out.println("size() should be 2 after resizing to 2 instead got ["
-                    + String.valueOf(i)
-                    + "]");
+            System.out.println("size() should be 2 after resizing to 2 instead got [" + String.valueOf(i) + "]");
         }
     }
 
     @Test
     public void testToString() {
-        CircularArray a = new CircularArray(5);
+        CircularArray<String> a = new CircularArray<>(5);
         assertEquals("[null, null, null, null, null]", a.toString());
     }
 
-    public void assertAdd(CircularArray a, Object obj, String expected) {
+    public void assertAdd(CircularArray<String> a, String obj, String expected) {
         a.add(obj);
         assertEquals(expected, a.toString());
     }
 
-    public void assertRemove(CircularArray a, Object obj, String expected) {
-        int i = a.indexOf(obj);
-        i = a.convert(i);
+    public void assertRemove(CircularArray<String> a, String obj, String expected) {
+        a.indexOf(obj);
         a.remove(obj);
         assertEquals(expected, a.toString());
     }


[2/2] cayenne git commit: Code cleanup: generics, formatting, docs, etc

Posted by nt...@apache.org.
Code cleanup: generics, formatting, docs, etc


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

Branch: refs/heads/master
Commit: bb70d83a096cbf929a3088d3e02908f05ec78564
Parents: fed246b
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Jun 30 16:17:22 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Jun 30 16:17:22 2017 +0300

----------------------------------------------------------------------
 .../apache/cayenne/util/CayenneMapEntry.java    |   6 +-
 .../cayenne/modeler/ProjectController.java      | 111 ++++---
 .../cayenne/modeler/action/RemoveAction.java    | 287 ++++++-------------
 .../cayenne/modeler/editor/DataMapView.java     |  14 +-
 .../cayenne/modeler/editor/ObjEntityTab.java    | 138 +++------
 .../modeler/editor/ProcedureQueryView.java      |  23 +-
 .../cayenne/modeler/util/CircularArray.java     |  34 ++-
 .../cayenne/modeler/util/Comparators.java       |  81 +++---
 .../cayenne/modeler/util/EntityTreeModel.java   |  23 +-
 .../modeler/util/state/DisplayEventType.java    |   3 +-
 .../state/MultipleObjectsDisplayEventType.java  |  10 +-
 .../modeler/util/state/ProjectStateUtil.java    |   3 +-
 .../cayenne/modeler/util/CircularArrayTest.java | 129 +++------
 13 files changed, 319 insertions(+), 543 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/cayenne-server/src/main/java/org/apache/cayenne/util/CayenneMapEntry.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/CayenneMapEntry.java b/cayenne-server/src/main/java/org/apache/cayenne/util/CayenneMapEntry.java
index adc5b96..676f391 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/util/CayenneMapEntry.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/util/CayenneMapEntry.java
@@ -30,15 +30,15 @@ public interface CayenneMapEntry {
      * 
      * @return name of this entry.
      */
-    public String getName();
+    String getName();
 
     /**
      * Returns the parent map.
      */
-    public Object getParent();
+    Object getParent();
 
     /**
      * Stores the parent map.
      */
-    public void setParent(Object parent);
+    void setParent(Object parent);
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
index 881733e..3335ccf 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
@@ -130,12 +130,12 @@ public class ProjectController extends CayenneController {
         /**
          * Paths of multiple selection
          */
-        private Object[] paths;
+        private ConfigurationNode[] paths;
 
         /**
          * Parent path of multiple selection
          */
-        private Object parentPath;
+        private ConfigurationNode parentPath;
 
         /**
          * currently selecte entity listener class
@@ -207,7 +207,7 @@ public class ProjectController extends CayenneController {
     protected Preferences projectControllerPreferences;
 
     protected ControllerState currentState;
-    protected CircularArray controllerStateHistory;
+    protected CircularArray<ControllerState> controllerStateHistory;
     protected int maxHistorySize = 20;
 
     private EntityResolver entityResolver;
@@ -221,7 +221,7 @@ public class ProjectController extends CayenneController {
     public ProjectController(CayenneModelerController parent) {
         super(parent);
         this.listenerList = new EventListenerList();
-        controllerStateHistory = new CircularArray(maxHistorySize);
+        controllerStateHistory = new CircularArray<>(maxHistorySize);
         currentState = new ControllerState();
     }
 
@@ -401,8 +401,9 @@ public class ProjectController extends CayenneController {
     /** Resets all current models to null. */
     private void clearState() {
         // don't clear if we are refiring events for history navigation
-        if (currentState.isRefiring)
+        if (currentState.isRefiring) {
             return;
+        }
 
         currentState = new ControllerState();
     }
@@ -417,16 +418,14 @@ public class ProjectController extends CayenneController {
     private void removeFromHistory(EventObject e) {
 
         int count = controllerStateHistory.size();
-        List<Object> removeList = new ArrayList<>();
+        List<ControllerState> removeList = new ArrayList<>();
 
         for (int i = 0; i < count; i++) {
-            ControllerState cs = (ControllerState) controllerStateHistory.get(i);
-
-            EventObject csEvent = cs.event;
-
-            if (csEvent == null) {
+            ControllerState cs = controllerStateHistory.get(i);
+            if (cs == null || cs.event == null) {
                 continue;
             }
+            EventObject csEvent = cs.event;
 
             if (e instanceof EntityEvent && csEvent instanceof EntityDisplayEvent) {
                 if (((EntityEvent) e).getEntity() == ((EntityDisplayEvent) csEvent).getEntity()) {
@@ -459,7 +458,7 @@ public class ProjectController extends CayenneController {
             }
         }
 
-        for (Object o : removeList) {
+        for (ControllerState o : removeList) {
             controllerStateHistory.remove(o);
         }
     }
@@ -535,11 +534,11 @@ public class ProjectController extends CayenneController {
         return currentState.procedureParameters;
     }
 
-    public Object[] getCurrentPaths() {
+    public ConfigurationNode[] getCurrentPaths() {
         return currentState.paths;
     }
 
-    public Object getCurrentParentPath() {
+    public ConfigurationNode getCurrentParentPath() {
         return currentState.parentPath;
     }
 
@@ -1019,30 +1018,31 @@ public class ProjectController extends CayenneController {
 
     public void fireNavigationEvent(EventObject e) {
         Object source = e.getSource();
-        if (source == null)
+        if (source == null) {
             return;
+        }
 
         int size = controllerStateHistory.size();
         if (size == 0)
             return;
 
         int i = controllerStateHistory.indexOf(currentState);
-        ControllerState cs = null;
+        ControllerState cs;
         if (size == 1) {
-            cs = (ControllerState) controllerStateHistory.get(0);
+            cs = controllerStateHistory.get(0);
         } else if (source instanceof NavigateForwardAction) {
             int counter = 0;
             while (true) {
                 if (i < 0) {
                     // a new state got created without it being saved.
                     // just move to the beginning of the list
-                    cs = (ControllerState) controllerStateHistory.get(0);
+                    cs = controllerStateHistory.get(0);
                 } else if (i + 1 < size) {
                     // move forward
-                    cs = (ControllerState) controllerStateHistory.get(i + 1);
+                    cs = controllerStateHistory.get(i + 1);
                 } else {
                     // wrap around
-                    cs = (ControllerState) controllerStateHistory.get(0);
+                    cs = controllerStateHistory.get(0);
                 }
                 if (!cs.isEquivalent(currentState)) {
                     break;
@@ -1061,34 +1061,36 @@ public class ProjectController extends CayenneController {
                 if (i < 0) {
                     // a new state got created without it being saved.
                     try {
-                        cs = (ControllerState) controllerStateHistory.get(size - 2);
+                        cs = controllerStateHistory.get(size - 2);
                     } catch (ArrayIndexOutOfBoundsException ex) {
-                        cs = (ControllerState) controllerStateHistory.get(size - 1);
+                        cs = controllerStateHistory.get(size - 1);
                     }
                 } else if (i - 1 >= 0) {
                     // move to the previous one
-                    cs = (ControllerState) controllerStateHistory.get(i - 1);
+                    cs = controllerStateHistory.get(i - 1);
                 } else {
                     // wrap around
-                    cs = (ControllerState) controllerStateHistory.get(size - 1);
+                    cs = controllerStateHistory.get(size - 1);
                 }
                 if (!cs.isEquivalent(currentState)) {
                     break;
                 }
-                // if it doesn't find it within 5 tries it is probably stuck in
-                // a loop
+                // if it doesn't find it within 5 tries it is probably stuck in a loop
                 if (++counter > 5) {
                     break;
                 }
                 i--;
             }
+        } else {
+            throw new IllegalStateException("Unknown source for navigation event: " + e.getSource());
         }
 
         // reset the current state to the one we just navigated to
         currentState = cs;
         DisplayEvent de = cs.event;
-        if (de == null)
+        if (de == null) {
             return;
+        }
 
         // make sure that isRefiring is turned off prior to exiting this routine
         // this flag is used to tell the controller to not create new states
@@ -1096,8 +1098,7 @@ public class ProjectController extends CayenneController {
         currentState.isRefiring = true;
 
         // the order of the following is checked in most specific to generic
-        // because
-        // of the inheritance heirarchy
+        // because of the inheritance hierarchy
         de.setRefired(true);
         if (de instanceof EntityDisplayEvent) {
             EntityDisplayEvent ede = (EntityDisplayEvent) de;
@@ -1543,21 +1544,21 @@ public class ProjectController extends CayenneController {
     }
 
     /**
-     * @return currently selecte entity listener class
+     * set current entity listener class
      */
     public void setCurrentListenerClass(String listenerClass) {
         currentState.listenerClass = listenerClass;
     }
 
     /**
-     * @return currently selected callback type
+     * set current callback type
      */
     public void setCurrentCallbackType(CallbackType callbackType) {
         currentState.callbackType = callbackType;
     }
 
     /**
-     * @return currently selected callback methods
+     * set current callback methods
      */
     public void setCurrentCallbackMethods(ObjCallbackMethod[] callbackMethods) {
         currentState.callbackMethods = callbackMethods;
@@ -1645,7 +1646,6 @@ public class ProjectController extends CayenneController {
      * Returns currently selected object, null if there are none, List if there
      * are several
      */
-    @SuppressWarnings("unchecked")
     public Object getCurrentObject() {
         if (getCurrentObjEntity() != null) {
             return getCurrentObjEntity();
@@ -1664,24 +1664,23 @@ public class ProjectController extends CayenneController {
         } else if (getCurrentDataChanel() != null) {
             return getCurrentDataChanel();
         } else if (getCurrentPaths() != null) { // multiple objects
-            Object[] paths = getCurrentPaths();
-            List<Object> result = new Vector<Object>();
+            ConfigurationNode[] paths = getCurrentPaths();
 
-            ConfigurationNodeParentGetter parentGetter = getApplication().getInjector().getInstance(
-                    ConfigurationNodeParentGetter.class);
-            Object parent = parentGetter.getParent((ConfigurationNode) paths[0]);
+            ConfigurationNodeParentGetter parentGetter = getApplication().getInjector()
+                    .getInstance(ConfigurationNodeParentGetter.class);
+            Object parent = parentGetter.getParent(paths[0]);
 
-            for (Object path : paths) {
-                result.add(path);
-            }
+            List<ConfigurationNode> result = new ArrayList<>();
+            result.addAll(Arrays.asList(paths));
 
-            /**
+            /*
              * Here we sort the list of objects to minimize the risk that
              * objects will be pasted incorrectly. For instance, ObjEntity
              * should go before Query, to increase chances that Query's root
              * would be set.
              */
-            Collections.sort(result, parent instanceof DataMap ? Comparators.getDataMapChildrenComparator()
+            Collections.sort(result, parent instanceof DataMap
+                    ? Comparators.getDataMapChildrenComparator()
                     : Comparators.getDataDomainChildrenComparator());
 
             return result;
@@ -1829,7 +1828,7 @@ public class ProjectController extends CayenneController {
     
     /**
      * If true, all save buttons become available.
-     * @param enable
+     * @param enable or not save button
      */
     public void enableSave(boolean enable) {
         application.getActionManager().getAction(SaveAction.class).setEnabled(enable);
@@ -1837,29 +1836,29 @@ public class ProjectController extends CayenneController {
     }
 
     /**
-    * Set currently selected ObjAttributes
-    */
+     * Set currently selected ObjAttributes
+     */
     public void setCurrentObjAttributes(ObjAttribute[] attrs) {
-currentState.objAttrs = attrs;
-}
+        currentState.objAttrs = attrs;
+    }
 
     /**
-    * Set currently selected ObjRelationships
-    */
+     * Set currently selected ObjRelationships
+     */
     public void setCurrentObjRelationships(ObjRelationship[] rels) {
-currentState.objRels = rels;
-}
+        currentState.objRels = rels;
+    }
 
     /**
-    * Set currently selected DbAttributes
-    */
+     * Set currently selected DbAttributes
+     */
     public void setCurrentDbAttributes(DbAttribute[] attrs) {
         currentState.dbAttrs = attrs;
     }
 
     /**
-    * Set currently selected DbRelationships
-    */
+     * Set currently selected DbRelationships
+     */
     public void setCurrentDbRelationships(DbRelationship[] rels) {
         currentState.dbRels = rels;
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
index 7c36701..5c162b5 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
@@ -100,9 +100,7 @@ public class RemoveAction extends CayenneAction {
 
     @Override
     public KeyStroke getAcceleratorKey() {
-        return KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit
-                .getDefaultToolkit()
-                .getMenuShortcutKeyMask());
+        return KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
     }
 
     /**
@@ -127,172 +125,122 @@ public class RemoveAction extends CayenneAction {
     public void performAction(ActionEvent e, boolean allowAsking) {
 
         ProjectController mediator = getProjectController();
-
         ConfirmRemoveDialog dialog = getConfirmDeleteDialog(allowAsking);
         
         if (mediator.getCurrentObjEntity() != null) {
-            if (dialog
-                    .shouldDelete("ObjEntity", mediator.getCurrentObjEntity().getName())) {
-                application.getUndoManager().addEdit(
-                        new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
-                                .getCurrentObjEntity()));
-                removeObjEntity(mediator.getCurrentDataMap(), mediator
-                        .getCurrentObjEntity());
+            if (dialog.shouldDelete("ObjEntity", mediator.getCurrentObjEntity().getName())) {
+
+                application.getUndoManager()
+                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentObjEntity()));
+                removeObjEntity(mediator.getCurrentDataMap(), mediator.getCurrentObjEntity());
             }
-        }
-        else if (mediator.getCurrentDbEntity() != null) {
+        } else if (mediator.getCurrentDbEntity() != null) {
             if (dialog.shouldDelete("DbEntity", mediator.getCurrentDbEntity().getName())) {
-                application.getUndoManager().addEdit(
-                        new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
-                                .getCurrentDbEntity()));
-                removeDbEntity(mediator.getCurrentDataMap(), mediator
-                        .getCurrentDbEntity());
+
+                application.getUndoManager()
+                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentDbEntity()));
+                removeDbEntity(mediator.getCurrentDataMap(), mediator.getCurrentDbEntity());
             }
-        }
-        else if (mediator.getCurrentQuery() != null) {
+        } else if (mediator.getCurrentQuery() != null) {
             if (dialog.shouldDelete("query", mediator.getCurrentQuery().getName())) {
-                application.getUndoManager().addEdit(
-                        new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
-                                .getCurrentQuery()));
+
+                application.getUndoManager()
+                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentQuery()));
                 removeQuery(mediator.getCurrentDataMap(), mediator.getCurrentQuery());
             }
-        }
-        else if (mediator.getCurrentProcedure() != null) {
-            if (dialog
-                    .shouldDelete("procedure", mediator.getCurrentProcedure().getName())) {
-
-                application.getUndoManager().addEdit(
-                        new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
-                                .getCurrentProcedure()));
-
-                removeProcedure(mediator.getCurrentDataMap(), mediator
-                        .getCurrentProcedure());
+        } else if (mediator.getCurrentProcedure() != null) {
+            if (dialog.shouldDelete("procedure", mediator.getCurrentProcedure().getName())) {
 
+                application.getUndoManager()
+                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentProcedure()));
+                removeProcedure(mediator.getCurrentDataMap(), mediator.getCurrentProcedure());
             }
-        }
-        else if (mediator.getCurrentEmbeddable() != null) {
-            if (dialog.shouldDelete("embeddable", mediator
-                    .getCurrentEmbeddable()
-                    .getClassName())) {
-
-                application.getUndoManager().addEdit(
-                        new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
-                                .getCurrentEmbeddable()));
+        } else if (mediator.getCurrentEmbeddable() != null) {
+            if (dialog.shouldDelete("embeddable", mediator.getCurrentEmbeddable().getClassName())) {
 
-                removeEmbeddable(mediator.getCurrentDataMap(), mediator
-                        .getCurrentEmbeddable());
+                application.getUndoManager()
+                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentEmbeddable()));
+                removeEmbeddable(mediator.getCurrentDataMap(), mediator.getCurrentEmbeddable());
             }
-        }
-        else if (mediator.getCurrentDataMap() != null) {
+        } else if (mediator.getCurrentDataMap() != null) {
             if (dialog.shouldDelete("data map", mediator.getCurrentDataMap().getName())) {
 
                 // In context of Data node just remove from Data Node
                 if (mediator.getCurrentDataNode() != null) {
-                    application.getUndoManager().addEdit(
-                            new RemoveUndoableEdit(application, mediator
-                                    .getCurrentDataNode(), mediator.getCurrentDataMap()));
-
-                    removeDataMapFromDataNode(mediator.getCurrentDataNode(), mediator
-                            .getCurrentDataMap());
-
-                }
-                else {
+                    application.getUndoManager()
+                            .addEdit(new RemoveUndoableEdit(application, mediator.getCurrentDataNode(),
+                                    mediator.getCurrentDataMap()));
+                    removeDataMapFromDataNode(mediator.getCurrentDataNode(), mediator.getCurrentDataMap());
+                } else {
                     // Not under Data Node, remove completely
-                    application.getUndoManager().addEdit(
-                            new RemoveUndoableEdit(application, mediator
-                                    .getCurrentDataMap()));
-
+                    application.getUndoManager()
+                            .addEdit(new RemoveUndoableEdit(application, mediator.getCurrentDataMap()));
                     removeDataMap(mediator.getCurrentDataMap());
-
                 }
             }
-        }
-        else if (mediator.getCurrentDataNode() != null) {
+        } else if (mediator.getCurrentDataNode() != null) {
             if (dialog.shouldDelete("data node", mediator.getCurrentDataNode().getName())) {
-                application
-                        .getUndoManager()
-                        .addEdit(
-                                new RemoveUndoableEdit(application, mediator
-                                        .getCurrentDataNode()));
 
+                application.getUndoManager()
+                        .addEdit(new RemoveUndoableEdit(application, mediator.getCurrentDataNode()));
                 removeDataNode(mediator.getCurrentDataNode());
             }
-        }
-
-        else if (mediator.getCurrentPaths() != null) { // multiple deletion
+        } else if (mediator.getCurrentPaths() != null) { // multiple deletion
             if (dialog.shouldDelete("selected objects")) {
-                Object[] paths = mediator.getCurrentPaths();
-                Object parentPath = mediator.getCurrentParentPath();
 
-                CompoundEdit compoundEdit = new RemoveCompoundUndoableEdit();
+                ConfigurationNode[] paths = mediator.getCurrentPaths();
+                ConfigurationNode parentPath = mediator.getCurrentParentPath();
 
-                for (Object path : paths) {
+                CompoundEdit compoundEdit = new RemoveCompoundUndoableEdit();
+                for (ConfigurationNode path : paths) {
                     compoundEdit.addEdit(removeLastPathComponent(path, parentPath));
                 }
                 compoundEdit.end();
 
                 application.getUndoManager().addEdit(compoundEdit);
-
             }
         } else if(mediator.getCurrentCallbackMethods().length > 0) {
             removeMethods(mediator, dialog, getProjectController().getCurrentCallbackMethods());
-        }
-        else if(mediator.getCurrentObjRelationships().length > 0) {
+        } else if(mediator.getCurrentObjRelationships().length > 0) {
       		removeObjRelationships(mediator, dialog, getProjectController().getCurrentObjRelationships());
-        }
-        else if(mediator.getCurrentDbRelationships().length > 0) {
+        } else if(mediator.getCurrentDbRelationships().length > 0) {
       		removeDBRelationships(mediator, dialog, getProjectController().getCurrentDbRelationships());
-        }
-        else if(mediator.getCurrentObjAttributes().length > 0) {
+        } else if(mediator.getCurrentObjAttributes().length > 0) {
       		removeObjAttributes(mediator, dialog, getProjectController().getCurrentObjAttributes());
-        }
-        else if(mediator.getCurrentEmbAttributes().length > 0) {
+        } else if(mediator.getCurrentEmbAttributes().length > 0) {
       		removeEmbAttributes(mediator, dialog, getProjectController().getCurrentEmbAttributes());
-        }
-        else if(mediator.getCurrentDbAttributes().length > 0) {
+        } else if(mediator.getCurrentDbAttributes().length > 0) {
         	removeDbAttributes(mediator, dialog, getProjectController().getCurrentDbAttributes());
-        }
-        else if(mediator.getCurrentProcedureParameters().length > 0) {
+        } else if(mediator.getCurrentProcedureParameters().length > 0) {
         	removeProcedureParameters(mediator.getCurrentProcedure(), mediator.getCurrentProcedureParameters());
         }
 
     }
 
-    private void removeProcedureParameters(
-            Procedure procedure,
-            ProcedureParameter[] parameters) {
+    private void removeProcedureParameters(Procedure procedure, ProcedureParameter[] parameters) {
         ProjectController mediator = getProjectController();
-
         for (ProcedureParameter parameter : parameters) {
-
             procedure.removeCallParameter(parameter.getName());
-
-            ProcedureParameterEvent e = new ProcedureParameterEvent(Application
-                    .getFrame(), parameter, MapEvent.REMOVE);
-
+            ProcedureParameterEvent e = new ProcedureParameterEvent(Application.getFrame(), parameter, MapEvent.REMOVE);
             mediator.fireProcedureParameterEvent(e);
         }
     }
     
-    private void removeEmbAttributes(ProjectController mediator,
-			ConfirmRemoveDialog dialog,
-			EmbeddableAttribute[] embAttrs) {
+    private void removeEmbAttributes(ProjectController mediator, ConfirmRemoveDialog dialog,
+                                     EmbeddableAttribute[] embAttrs) {
     	if (embAttrs != null && embAttrs.length > 0) {
-        	if ((embAttrs.length == 1 && dialog.shouldDelete("DbAttribute", embAttrs[0]
-        			.getName()))
+        	if ((embAttrs.length == 1 && dialog.shouldDelete("DbAttribute", embAttrs[0].getName()))
                     || (embAttrs.length > 1 && dialog.shouldDelete("selected DbAttributes"))) {
 
         		Embeddable embeddable = mediator.getCurrentEmbeddable();
 
-                application.getUndoManager().addEdit(
-                		new RemoveAttributeUndoableEdit(
-                                embeddable,
-                                embAttrs));
+                application.getUndoManager()
+                        .addEdit(new RemoveAttributeUndoableEdit(embeddable, embAttrs));
 
                 for (EmbeddableAttribute attrib : embAttrs) {
                     embeddable.removeAttribute(attrib.getName());
-                    EmbeddableAttributeEvent e = new EmbeddableAttributeEvent(Application
-                            .getFrame(), attrib, embeddable, MapEvent.REMOVE);
+                    EmbeddableAttributeEvent e = new EmbeddableAttributeEvent(Application.getFrame(),
+                            attrib, embeddable, MapEvent.REMOVE);
                     mediator.fireEmbeddableAttributeEvent(e);
                 }
 
@@ -304,28 +252,19 @@ public class RemoveAction extends CayenneAction {
 	private void removeObjAttributes(ProjectController mediator,
 			ConfirmRemoveDialog dialog, ObjAttribute[] objAttrs) {
     	if (objAttrs != null && objAttrs.length > 0) {
-        	if ((objAttrs.length == 1 && dialog.shouldDelete("DbAttribute", objAttrs[0]
-        			.getName()))
+        	if ((objAttrs.length == 1 && dialog.shouldDelete("DbAttribute", objAttrs[0].getName()))
                     || (objAttrs.length > 1 && dialog.shouldDelete("selected DbAttributes"))) {
 
         		ObjEntity entity = mediator.getCurrentObjEntity();
 
-                application.getUndoManager().addEdit(
-                        new RemoveAttributeUndoableEdit(
+                application.getUndoManager()
+                        .addEdit(new RemoveAttributeUndoableEdit(
                                 (DataChannelDescriptor)mediator.getProject().getRootNode(),
-                                mediator.getCurrentDataMap(),
-                                entity,
-                                objAttrs));
+                                mediator.getCurrentDataMap(), entity, objAttrs));
 
                 for (ObjAttribute attrib : objAttrs) {
                     entity.removeAttribute(attrib.getName());
-
-                    AttributeEvent e = new AttributeEvent(
-                            Application.getFrame(),
-                            attrib,
-                            entity,
-                            MapEvent.REMOVE);
-
+                    AttributeEvent e = new AttributeEvent(Application.getFrame(), attrib, entity, MapEvent.REMOVE);
                     mediator.fireObjAttributeEvent(e);
                 }
 
@@ -334,32 +273,21 @@ public class RemoveAction extends CayenneAction {
     	}
 	}
 
-	private void removeDbAttributes(ProjectController mediator,
-			ConfirmRemoveDialog dialog,
-			DbAttribute[] dbAttrs) {
+	private void removeDbAttributes(ProjectController mediator, ConfirmRemoveDialog dialog, DbAttribute[] dbAttrs) {
     	if (dbAttrs != null && dbAttrs.length > 0) {
-        	if ((dbAttrs.length == 1 && dialog.shouldDelete("DbAttribute", dbAttrs[0]
-        			.getName()))
+        	if ((dbAttrs.length == 1 && dialog.shouldDelete("DbAttribute", dbAttrs[0].getName()))
                     || (dbAttrs.length > 1 && dialog.shouldDelete("selected DbAttributes"))) {
 
         		DbEntity entity = mediator.getCurrentDbEntity();
 
-                application.getUndoManager().addEdit(
-                		new RemoveAttributeUndoableEdit(
-                				(DataChannelDescriptor)mediator.getProject().getRootNode(),
-                                mediator.getCurrentDataMap(),
-                                entity,
-                                dbAttrs));
+                application.getUndoManager()
+                        .addEdit(new RemoveAttributeUndoableEdit(
+                                (DataChannelDescriptor)mediator.getProject().getRootNode(),
+                                mediator.getCurrentDataMap(), entity, dbAttrs));
 
                 for (DbAttribute attrib : dbAttrs) {
                     entity.removeAttribute(attrib.getName());
-
-                    AttributeEvent e = new AttributeEvent(
-                            Application.getFrame(),
-                            attrib,
-                            entity,
-                            MapEvent.REMOVE);
-
+                    AttributeEvent e = new AttributeEvent(Application.getFrame(), attrib, entity, MapEvent.REMOVE);
                     mediator.fireDbAttributeEvent(e);
                 }
 
@@ -368,53 +296,40 @@ public class RemoveAction extends CayenneAction {
     	}
     }
     
-    private void removeDBRelationships(ProjectController mediator,
-			ConfirmRemoveDialog dialog,
-			DbRelationship[] dbRels) {
+    private void removeDBRelationships(ProjectController mediator, ConfirmRemoveDialog dialog,
+                                       DbRelationship[] dbRels) {
 		if (dbRels != null && dbRels.length > 0) {
-			if ((dbRels.length == 1 && dialog.shouldDelete(
-					"DbRelationship", dbRels[0].getName()))
-					|| (dbRels.length > 1 && dialog
-							.shouldDelete("selected DbRelationships"))) {
+			if ((dbRels.length == 1 && dialog.shouldDelete("DbRelationship", dbRels[0].getName()))
+					|| (dbRels.length > 1 && dialog.shouldDelete("selected DbRelationships"))) {
 				DbEntity entity = mediator.getCurrentDbEntity();
 				
 				for (DbRelationship rel : dbRels) {
 					entity.removeRelationship(rel.getName());
-
-					RelationshipEvent e = new RelationshipEvent(Application.getFrame(),
-							rel, entity, MapEvent.REMOVE);
+					RelationshipEvent e = new RelationshipEvent(Application.getFrame(), rel, entity, MapEvent.REMOVE);
 					mediator.fireDbRelationshipEvent(e);
 				}
 
 				ProjectUtil.cleanObjMappings(mediator.getCurrentDataMap());
-				
-				Application.getInstance().getUndoManager().addEdit(
-						new RemoveRelationshipUndoableEdit(entity, dbRels));
+				Application.getInstance().getUndoManager().addEdit(new RemoveRelationshipUndoableEdit(entity, dbRels));
 			}
 		}
 	}
 
-	private void removeObjRelationships(ProjectController mediator,
-			ConfirmRemoveDialog dialog,
-			ObjRelationship[] rels) {
-		if ((rels.length == 1 && dialog.shouldDelete("ObjRelationship",
-				rels[0].getName()))
-				|| (rels.length > 1 && dialog
-						.shouldDelete("selected ObjRelationships"))) {
+	private void removeObjRelationships(ProjectController mediator, ConfirmRemoveDialog dialog,
+                                        ObjRelationship[] rels) {
+		if ((rels.length == 1 && dialog.shouldDelete("ObjRelationship", rels[0].getName()))
+				|| (rels.length > 1 && dialog.shouldDelete("selected ObjRelationships"))) {
 			ObjEntity entity = mediator.getCurrentObjEntity();
 			for (ObjRelationship rel : rels) {
 				entity.removeRelationship(rel.getName());
-				RelationshipEvent e = new RelationshipEvent(Application.getFrame(),
-						rel, entity, MapEvent.REMOVE);
+				RelationshipEvent e = new RelationshipEvent(Application.getFrame(), rel, entity, MapEvent.REMOVE);
 				mediator.fireObjRelationshipEvent(e);
 			}
-			Application.getInstance().getUndoManager().addEdit(
-					new RemoveRelationshipUndoableEdit(entity, rels));
+			Application.getInstance().getUndoManager().addEdit(new RemoveRelationshipUndoableEdit(entity, rels));
 		}		
 	}
 
-	private void removeMethods(ProjectController mediator,
-			ConfirmRemoveDialog dialog, ObjCallbackMethod[] methods) {
+	private void removeMethods(ProjectController mediator, ConfirmRemoveDialog dialog, ObjCallbackMethod[] methods) {
     	CallbackMap callbackMap = mediator.getCurrentObjEntity().getCallbackMap();
     	CallbackType callbackType = mediator.getCurrentCallbackType();
 
@@ -423,25 +338,21 @@ public class RemoveAction extends CayenneAction {
             for (ObjCallbackMethod callbackMethod : methods) {
             	callbackMap.getCallbackDescriptor(callbackType.getType()).removeCallbackMethod(callbackMethod.getName());
                     
-                CallbackMethodEvent ce = new CallbackMethodEvent(
-                        this,
-                        null,
+                CallbackMethodEvent ce = new CallbackMethodEvent(this, null,
                         callbackMethod.getName(),
                         MapEvent.REMOVE);
                     
                 mediator.fireCallbackMethodEvent(ce);
             }
             
-            Application.getInstance().getUndoManager().addEdit( 
-            		new RemoveCallbackMethodUndoableEdit(callbackType, methods));
+            Application.getInstance().getUndoManager()
+                    .addEdit(new RemoveCallbackMethodUndoableEdit(callbackType, methods));
         }		
 	}
 
 	public void removeDataMap(DataMap map) {
         ProjectController mediator = getProjectController();
-        DataChannelDescriptor domain = (DataChannelDescriptor) mediator
-                .getProject()
-                .getRootNode();
+        DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
         DataMapEvent e = new DataMapEvent(Application.getFrame(), map, MapEvent.REMOVE);
         e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
 
@@ -451,11 +362,9 @@ public class RemoveAction extends CayenneAction {
             Collection<URL> unusedResources = getCurrentProject().getUnusedResources();
             unusedResources.add(mapURL);
         }
-        
-        Iterator<DataNodeDescriptor> iterator = domain.getNodeDescriptors().iterator();
-        while(iterator.hasNext()){
-            DataNodeDescriptor node = iterator.next();
-            if(node.getDataMapNames().contains(map.getName())){
+
+        for (DataNodeDescriptor node : domain.getNodeDescriptors()) {
+            if (node.getDataMapNames().contains(map.getName())) {
                 removeDataMapFromDataNode(node, map);
             }
         }
@@ -465,9 +374,7 @@ public class RemoveAction extends CayenneAction {
 
     public void removeDataNode(DataNodeDescriptor node) {
         ProjectController mediator = getProjectController();
-        DataChannelDescriptor domain = (DataChannelDescriptor) mediator
-                .getProject()
-                .getRootNode();
+        DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
         DataNodeEvent e = new DataNodeEvent(Application.getFrame(), node, MapEvent.REMOVE);
         e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
 
@@ -507,10 +414,7 @@ public class RemoveAction extends CayenneAction {
     public void removeProcedure(DataMap map, Procedure procedure) {
         ProjectController mediator = getProjectController();
 
-        ProcedureEvent e = new ProcedureEvent(
-                Application.getFrame(),
-                procedure,
-                MapEvent.REMOVE);
+        ProcedureEvent e = new ProcedureEvent(Application.getFrame(), procedure, MapEvent.REMOVE);
         e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
 
         map.removeProcedure(procedure.getName());
@@ -537,9 +441,7 @@ public class RemoveAction extends CayenneAction {
             if (!QueryDescriptor.EJBQL_QUERY.equals(query.getType())) {
                 Object root = query.getRoot();
 
-                if (root == entity
-                        || (root instanceof String && root.toString().equals(
-                                entity.getName()))) {
+                if (root == entity || (root instanceof String && root.toString().equals(entity.getName()))) {
                     removeQuery(map, query);
                 }
             }
@@ -549,10 +451,7 @@ public class RemoveAction extends CayenneAction {
     public void removeEmbeddable(DataMap map, Embeddable embeddable) {
         ProjectController mediator = getProjectController();
 
-        EmbeddableEvent e = new EmbeddableEvent(
-                Application.getFrame(),
-                embeddable,
-                MapEvent.REMOVE);
+        EmbeddableEvent e = new EmbeddableEvent(Application.getFrame(), embeddable, MapEvent.REMOVE);
         e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
 
         map.removeEmbeddable(embeddable.getClassName());
@@ -592,7 +491,7 @@ public class RemoveAction extends CayenneAction {
     /**
      * Removes an object, depending on its type
      */
-    private UndoableEdit removeLastPathComponent(Object object, Object parentObject) {
+    private UndoableEdit removeLastPathComponent(ConfigurationNode object, ConfigurationNode parentObject) {
 
         UndoableEdit undo = null;
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.java
index 40521f7..3fcc78f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.java
@@ -65,7 +65,7 @@ public class DataMapView extends JPanel {
 
     protected TextAdapter name;
     protected JLabel location;
-    protected JComboBox nodeSelector;
+    protected JComboBox<DataNodeDescriptor> nodeSelector;
     protected JCheckBox defaultLockType;
     protected TextAdapter defaultCatalog;
     protected TextAdapter defaultSchema;
@@ -307,12 +307,11 @@ public class DataMapView extends JPanel {
         quoteSQLIdentifiers.setSelected(map.isQuotingSQLIdentifiers());
         // rebuild data node list
 
-        Object nodes[] = ((DataChannelDescriptor) eventController
-                .getProject()
-                .getRootNode()).getNodeDescriptors().toArray();
+        DataNodeDescriptor nodes[] = ((DataChannelDescriptor) eventController.getProject().getRootNode())
+                .getNodeDescriptors().toArray(new DataNodeDescriptor[0]);
 
         // add an empty item to the front
-        Object[] objects = new Object[nodes.length + 1];
+        DataNodeDescriptor[] objects = new DataNodeDescriptor[nodes.length + 1];
         // objects[0] = null;
 
         // now add the entities
@@ -321,11 +320,10 @@ public class DataMapView extends JPanel {
             System.arraycopy(nodes, 0, objects, 1, nodes.length);
         }
 
-        DefaultComboBoxModel model = new DefaultComboBoxModel(objects);
+        DefaultComboBoxModel<DataNodeDescriptor> model = new DefaultComboBoxModel<>(objects);
 
         // find selected node
-        for (int i = 0; i < nodes.length; i++) {
-            DataNodeDescriptor node = (DataNodeDescriptor) nodes[i];
+        for (DataNodeDescriptor node : nodes) {
             if (node.getDataMapNames().contains(map.getName())) {
                 model.setSelectedItem(node);
                 break;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityTab.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityTab.java
index e720bd8..796d9bb 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityTab.java
@@ -25,6 +25,7 @@ import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.EventObject;
 import java.util.LinkedList;
 import java.util.List;
@@ -66,7 +67,6 @@ import org.apache.cayenne.modeler.util.Comparators;
 import org.apache.cayenne.modeler.util.ExpressionConvertor;
 import org.apache.cayenne.modeler.util.TextAdapter;
 import org.apache.cayenne.modeler.util.combo.AutoCompletion;
-import org.apache.cayenne.util.CayenneMapEntry;
 import org.apache.cayenne.util.Util;
 import org.apache.cayenne.validation.ValidationException;
 import org.apache.commons.collections.CollectionUtils;
@@ -78,22 +78,9 @@ import com.jgoodies.forms.layout.FormLayout;
 /**
  * Detail view of the ObjEntity properties.
  */
-public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
-        ExistingSelectionProcessor {
+public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener, ExistingSelectionProcessor {
 
-    private static final Object noInheritance = new CayenneMapEntry() {
-
-        public String getName() {
-            return "Direct Mapping to Table/View";
-        }
-
-        public Object getParent() {
-            return null;
-        }
-
-        public void setParent(Object parent) {
-        }
-    };
+    private static final ObjEntity NO_INHERITANCE = new ObjEntity("Direct Mapping to Table/View");
 
     protected ProjectController mediator;
     protected TextAdapter name;
@@ -102,8 +89,8 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
     protected JLabel superclassLabel;
     protected TextAdapter superClassName;
     protected TextAdapter qualifier;
-    protected JComboBox dbEntityCombo;
-    protected JComboBox superEntityCombo;
+    protected JComboBox<DbEntity> dbEntityCombo;
+    protected JComboBox<ObjEntity> superEntityCombo;
     protected JButton tableLabel;
     protected JCheckBox readOnly;
     protected JCheckBox optimisticLocking;
@@ -147,28 +134,24 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
 
         // create widgets
         name = new TextAdapter(new JTextField()) {
-
             @Override
             protected void updateModel(String text) {
                 setEntityName(text);
             }
         };
         superClassName = new TextAdapter(new JTextField()) {
-
             @Override
             protected void updateModel(String text) {
                 setSuperClassName(text);
             }
         };
         className = new TextAdapter(new JTextField()) {
-
             @Override
             protected void updateModel(String text) {
                 setClassName(text);
             }
         };
         qualifier = new TextAdapter(new JTextField()) {
-
             @Override
             protected void updateModel(String text) {
                 setQualifier(text);
@@ -198,14 +181,12 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
         isAbstract = new JCheckBox();
         serverOnly = new JCheckBox();
         clientClassName = new TextAdapter(new JTextField()) {
-
             @Override
             protected void updateModel(String text) {
                 setClientClassName(text);
             }
         };
         clientSuperClassName = new TextAdapter(new JTextField()) {
-
             @Override
             protected void updateModel(String text) {
                 setClientSuperClassName(text);
@@ -266,9 +247,8 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
 
             public void actionPerformed(ActionEvent e) {
                 // Change super-entity
-                CayenneMapEntry superEntity = (CayenneMapEntry) superEntityCombo
-                        .getSelectedItem();
-                String name = (superEntity == null || superEntity == noInheritance)
+                ObjEntity superEntity = (ObjEntity) superEntityCombo.getSelectedItem();
+                String name = (superEntity == null || superEntity == NO_INHERITANCE)
                         ? null
                         : superEntity.getName();
 
@@ -277,22 +257,17 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
                 if (!Util.nullSafeEquals(name, entity.getSuperEntityName())) {
                     List<ObjAttribute> duplicateAttributes = null;
                     if (name != null) {
-                        duplicateAttributes = getDuplicatedAttributes((ObjEntity) superEntity);
+                        duplicateAttributes = getDuplicatedAttributes(superEntity);
                     }
 
                     if (duplicateAttributes != null && duplicateAttributes.size() > 0) {
                         DuplicatedAttributesDialog.showDialog(
-                                Application.getFrame(),
-                                duplicateAttributes,
-                                (ObjEntity) superEntity,
-                                entity);
-                        if (DuplicatedAttributesDialog.getResult().equals(
-                                DuplicatedAttributesDialog.CANCEL_RESULT)) {
+                                Application.getFrame(), duplicateAttributes, superEntity, entity);
+                        if (DuplicatedAttributesDialog.getResult().equals(DuplicatedAttributesDialog.CANCEL_RESULT)) {
                             superEntityCombo.setSelectedItem(entity.getSuperEntity());
                             superClassName.setText(entity.getSuperClassName());
                             return;
                         }
-
                     }
                     entity.setSuperEntityName(name);
 
@@ -307,8 +282,7 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
                     
                     if (name == null) {
                         dbEntityCombo.setEnabled(true);
-                    }
-                    else {
+                    } else {
                         dbEntityCombo.setEnabled(false);
                         dbEntityCombo.getModel().setSelectedItem(null);
                     }
@@ -322,17 +296,11 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
                     // fire both EntityEvent and EntityDisplayEvent;
                     // the later is to update attribute and relationship display
 
-                    DataChannelDescriptor domain = (DataChannelDescriptor) mediator
-                            .getProject()
-                            .getRootNode();
+                    DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
                     DataMap map = mediator.getCurrentDataMap();
 
                     mediator.fireObjEntityEvent(new EntityEvent(this, entity));
-                    mediator.fireObjEntityDisplayEvent(new EntityDisplayEvent(
-                            this,
-                            entity,
-                            map,
-                            domain));
+                    mediator.fireObjEntityDisplayEvent(new EntityDisplayEvent(this, entity, map, domain));
                 }
             }
         });
@@ -343,14 +311,8 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
                 // Jump to DbEntity of the current ObjEntity
                 DbEntity entity = mediator.getCurrentObjEntity().getDbEntity();
                 if (entity != null) {
-                    DataChannelDescriptor dom = (DataChannelDescriptor) mediator
-                            .getProject()
-                            .getRootNode();
-                    mediator.fireDbEntityDisplayEvent(new EntityDisplayEvent(
-                            this,
-                            entity,
-                            entity.getDataMap(),
-                            dom));
+                    DataChannelDescriptor dom = (DataChannelDescriptor) mediator.getProject().getRootNode();
+                    mediator.fireDbEntityDisplayEvent(new EntityDisplayEvent(this, entity, entity.getDataMap(), dom));
                 }
             }
         });
@@ -386,8 +348,7 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
             public void actionPerformed(ActionEvent e) {
                 ObjEntity entity = mediator.getCurrentObjEntity();
                 if (entity != null) {
-                    entity.setExcludingSuperclassListeners(excludeSuperclassListeners
-                            .isSelected());
+                    entity.setExcludingSuperclassListeners(excludeSuperclassListeners.isSelected());
                     mediator.fireObjEntityEvent(new EntityEvent(this, entity));
                 }
             }
@@ -398,8 +359,7 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
             public void actionPerformed(ActionEvent e) {
                 ObjEntity entity = mediator.getCurrentObjEntity();
                 if (entity != null) {
-                    entity.setExcludingDefaultListeners(excludeDefaultListeners
-                            .isSelected());
+                    entity.setExcludingDefaultListeners(excludeDefaultListeners.isSelected());
                     mediator.fireObjEntityEvent(new EntityEvent(this, entity));
                 }
             }
@@ -449,24 +409,22 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
         clientClassName.setText(entity.getClientClassName());
         clientSuperClassName.setText(entity.getClientSuperClassName());
 
-        qualifier.setText(new ExpressionConvertor().valueAsString(entity
-                .getDeclaredQualifier()));
+        qualifier.setText(new ExpressionConvertor().valueAsString(entity.getDeclaredQualifier()));
 
         // TODO: fix inheritance - we should allow to select optimistic
         // lock if superclass is not already locked,
         // otherwise we must keep this checked in but not editable.
-        optimisticLocking
-                .setSelected(entity.getDeclaredLockType() == ObjEntity.LOCK_TYPE_OPTIMISTIC);
+        optimisticLocking.setSelected(entity.getDeclaredLockType() == ObjEntity.LOCK_TYPE_OPTIMISTIC);
         excludeSuperclassListeners.setSelected(entity.isExcludingSuperclassListeners());
         excludeDefaultListeners.setSelected(entity.isExcludingDefaultListeners());
 
         // init DbEntities
         EntityResolver resolver = mediator.getEntityResolver();
         DataMap map = mediator.getCurrentDataMap();
-        Object[] dbEntities = resolver.getDbEntities().toArray();
+        DbEntity[] dbEntities = resolver.getDbEntities().toArray(new DbEntity[0]);
         Arrays.sort(dbEntities, Comparators.getDataMapChildrenComparator());
 
-        DefaultComboBoxModel dbModel = new DefaultComboBoxModel(dbEntities);
+        DefaultComboBoxModel<DbEntity> dbModel = new DefaultComboBoxModel<>(dbEntities);
         dbModel.setSelectedItem(entity.getDbEntity());
         dbEntityCombo.setRenderer(CellRenderers.entityListRendererWithIcons(map));
         dbEntityCombo.setModel(dbModel);
@@ -474,36 +432,27 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
         boolean isUsedInheritance = entity.getSuperEntity() != null;
         dbEntityCombo.setEnabled(!isUsedInheritance);
 
-        // toggle visibilty and editability rules
+        // toggle visibility and editability rules
         toggleClientFieldsVisible(map.isClientSupported());
         toggleEnabled(entity.getSuperEntityName() == null, !entity.isServerOnly());
 
         // init ObjEntities for inheritance
         Predicate inheritanceFilter = new Predicate() {
-
             public boolean evaluate(Object object) {
                 // do not show this entity or any of the subentities
-                if (entity == object) {
-                    return false;
-                }
-
-                if (object instanceof ObjEntity) {
-                    return !((ObjEntity) object).isSubentityOf(entity);
-                }
-
-                return false;
+                return entity != object && !((ObjEntity) object).isSubentityOf(entity);
             }
         };
 
-        Object[] objEntities = CollectionUtils.select(
-                map.getObjEntities(),
-                inheritanceFilter).toArray();
+        @SuppressWarnings("unchecked")
+        ObjEntity[] objEntities = ((Collection<ObjEntity>)CollectionUtils.select(map.getObjEntities(), inheritanceFilter))
+                .toArray(new ObjEntity[0]);
         Arrays.sort(objEntities, Comparators.getDataMapChildrenComparator());
-        Object[] finalObjEntities = new Object[objEntities.length + 1];
-        finalObjEntities[0] = noInheritance;
+        ObjEntity[] finalObjEntities = new ObjEntity[objEntities.length + 1];
+        finalObjEntities[0] = NO_INHERITANCE;
         System.arraycopy(objEntities, 0, finalObjEntities, 1, objEntities.length);
 
-        DefaultComboBoxModel superEntityModel = new DefaultComboBoxModel(finalObjEntities);
+        DefaultComboBoxModel<ObjEntity> superEntityModel = new DefaultComboBoxModel<>(finalObjEntities);
         superEntityModel.setSelectedItem(entity.getSuperEntity());
         superEntityCombo.setRenderer(CellRenderers.entityListRendererWithIcons(map));
         superEntityCombo.setModel(superEntityModel);
@@ -545,8 +494,7 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
         ObjEntity entity = mediator.getCurrentObjEntity();
 
         // "ent" may be null if we quit editing by changing tree selection
-        if (entity != null
-                && !Util.nullSafeEquals(entity.getClientClassName(), className)) {
+        if (entity != null && !Util.nullSafeEquals(entity.getClientClassName(), className)) {
             entity.setClientClassName(className);
             mediator.fireObjEntityEvent(new EntityEvent(this, entity));
         }
@@ -573,18 +521,15 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
 
         ObjEntity entity = mediator.getCurrentObjEntity();
         if (entity != null) {
-
             ExpressionConvertor convertor = new ExpressionConvertor();
             try {
-                String oldQualifier = convertor.valueAsString(entity
-                        .getDeclaredQualifier());
+                String oldQualifier = convertor.valueAsString(entity.getDeclaredQualifier());
                 if (!Util.nullSafeEquals(oldQualifier, text)) {
                     Expression exp = (Expression) convertor.stringAsValue(text);
                     entity.setDeclaredQualifier(exp);
                     mediator.fireObjEntityEvent(new EntityEvent(this, entity));
                 }
-            }
-            catch (IllegalArgumentException ex) {
+            } catch (IllegalArgumentException ex) {
                 // unparsable qualifier
                 throw new ValidationException(ex.getMessage());
             }
@@ -607,8 +552,7 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
 
         if (newName == null) {
             throw new ValidationException("Entity name is required.");
-        }
-        else if (entity.getDataMap().getObjEntity(newName) == null) {
+        } else if (entity.getDataMap().getObjEntity(newName) == null) {
             // completely new name, set new name for entity
             EntityEvent e = new EntityEvent(this, entity, entity.getName());
             entity.setName(newName);
@@ -616,20 +560,15 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
             mediator.fireObjEntityEvent(e);
 
             // suggest to update class name
-            ClassNameUpdater nameUpdater = new ClassNameUpdater(Application
-                    .getInstance()
-                    .getFrameController(), entity);
+            ClassNameUpdater nameUpdater = new ClassNameUpdater(Application.getInstance().getFrameController(), entity);
 
             if (nameUpdater.doNameUpdate()) {
                 className.setText(entity.getClassName());
                 clientClassName.setText(entity.getClientClassName());
             }
-        }
-        else {
+        } else {
             // there is an entity with the same name
-            throw new ValidationException("There is another entity with name '"
-                    + newName
-                    + "'.");
+            throw new ValidationException("There is another entity with name '" + newName + "'.");
         }
     }
 
@@ -649,8 +588,7 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
         superClassName.getComponent().setEnabled(directTableMapping);
         superclassLabel.setEnabled(directTableMapping);
 
-        clientSuperClassName.getComponent().setEnabled(
-                directTableMapping && clientFieldsEnabled);
+        clientSuperClassName.getComponent().setEnabled(directTableMapping && clientFieldsEnabled);
         clientSuperClassNameLabel.setEnabled(directTableMapping && clientFieldsEnabled);
 
         clientClassNameLabel.setEnabled(clientFieldsEnabled);
@@ -677,7 +615,7 @@ public class ObjEntityTab extends JPanel implements ObjEntityDisplayListener,
     }
 
     private List<ObjAttribute> getDuplicatedAttributes(ObjEntity superEntity) {
-        List<ObjAttribute> result = new LinkedList<ObjAttribute>();
+        List<ObjAttribute> result = new LinkedList<>();
 
         ObjEntity entity = mediator.getCurrentObjEntity();
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java
index 7717873..819583d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java
@@ -23,6 +23,7 @@ import com.jgoodies.forms.builder.PanelBuilder;
 import com.jgoodies.forms.layout.CellConstraints;
 import com.jgoodies.forms.layout.FormLayout;
 import com.jgoodies.forms.layout.RowSpec;
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.event.QueryEvent;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.ObjEntity;
@@ -38,7 +39,6 @@ import org.apache.cayenne.modeler.util.ProjectUtil;
 import org.apache.cayenne.modeler.util.TextAdapter;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.ProcedureQuery;
-import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.util.Util;
 import org.apache.cayenne.validation.ValidationException;
 
@@ -72,7 +72,7 @@ public class ProcedureQueryView extends JPanel {
 
     protected ProjectController mediator;
     protected TextAdapter name;
-    protected JComboBox queryRoot;
+    protected JComboBox<ConfigurationNode> queryRoot;
     protected SelectPropertiesPanel properties;
 
     public ProcedureQueryView(ProjectController mediator) {
@@ -160,13 +160,13 @@ public class ProcedureQueryView extends JPanel {
         // making it impossible to reference other DataMaps.
 
         DataMap map = mediator.getCurrentDataMap();
-        Object[] roots = map.getProcedures().toArray();
+        ConfigurationNode[] roots = map.getProcedures().toArray(new ConfigurationNode[0]);
 
         if (roots.length > 1) {
             Arrays.sort(roots, Comparators.getDataMapChildrenComparator());
         }
 
-        DefaultComboBoxModel model = new DefaultComboBoxModel(roots);
+        DefaultComboBoxModel<ConfigurationNode> model = new DefaultComboBoxModel<>(roots);
         model.setSelectedItem(query.getRoot());
         queryRoot.setModel(model);
 
@@ -251,7 +251,7 @@ public class ProcedureQueryView extends JPanel {
 
     final class ProcedureQueryPropertiesPanel extends RawQueryPropertiesPanel {
 
-        private JComboBox labelCase;
+        private JComboBox<CapsStrategy> labelCase;
 
         ProcedureQueryPropertiesPanel(ProjectController mediator) {
             super(mediator);
@@ -260,12 +260,11 @@ public class ProcedureQueryView extends JPanel {
         protected PanelBuilder createPanelBuilder() {
             labelCase = Application.getWidgetFactory().createUndoableComboBox();
             labelCase.setRenderer(new LabelCapsRenderer());
-
             labelCase.addActionListener(new ActionListener() {
-
+                @Override
                 public void actionPerformed(ActionEvent event) {
-                    Object value = labelCase.getModel().getSelectedItem();
-                    setQueryProperty(ProcedureQuery.COLUMN_NAME_CAPITALIZATION_PROPERTY, (String) value);
+                    String value = labelCase.getModel().getSelectedItem().toString();
+                    setQueryProperty(ProcedureQuery.COLUMN_NAME_CAPITALIZATION_PROPERTY, value);
                 }
             });
 
@@ -287,10 +286,8 @@ public class ProcedureQueryView extends JPanel {
             super.initFromModel(query);
 
             if (query != null && QueryDescriptor.PROCEDURE_QUERY.equals(query.getType())) {
-                DefaultComboBoxModel labelCaseModel = new DefaultComboBoxModel(LABEL_CAPITALIZATION);
-
-                String columnNameCapitalization = query.getProperty(SQLTemplate.COLUMN_NAME_CAPITALIZATION_PROPERTY);
-
+                DefaultComboBoxModel<CapsStrategy> labelCaseModel = new DefaultComboBoxModel<>(LABEL_CAPITALIZATION);
+                String columnNameCapitalization = query.getProperty(ProcedureQuery.COLUMN_NAME_CAPITALIZATION_PROPERTY);
                 labelCaseModel.setSelectedItem(columnNameCapitalization != null ?
                         CapsStrategy.valueOf(columnNameCapitalization) : CapsStrategy.DEFAULT);
                 labelCase.setModel(labelCaseModel);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CircularArray.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CircularArray.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CircularArray.java
index 0c4d848..b9d6533 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CircularArray.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CircularArray.java
@@ -26,9 +26,9 @@ package org.apache.cayenne.modeler.util;
  * 
  * @since 1.2
  */
-public class CircularArray extends Object {
+public class CircularArray<T>  {
 
-    private Object array[] = null;
+    private Object[] array = null;
     private int head = 0;
     private int tail = 0;
     private int count = 0;
@@ -116,7 +116,7 @@ public class CircularArray extends Object {
      * @param obj
      *            the object to be checked
      */
-    public boolean contains(Object obj) {
+    public boolean contains(T obj) {
         return indexOf(obj) >= 0;
     }
 
@@ -126,12 +126,13 @@ public class CircularArray extends Object {
      * @param index
      *            the index of the object to be retrieved
      */
-    public Object get(int index) {
+    @SuppressWarnings("unchecked")
+    public T get(int index) {
         rangeCheck(index);
         if (count == 0) {
             return null;
         }
-        return array[convert(index)];
+        return (T)array[convert(index)];
     }
 
     /**
@@ -140,7 +141,7 @@ public class CircularArray extends Object {
      * @param obj
      *            the object that is being searched for
      */
-    public int indexOf(Object obj) {
+    public int indexOf(T obj) {
         for (int i = 0; i < capacity; i++) {
             int index = convert(i);
             if (array[index] == obj) {
@@ -153,11 +154,10 @@ public class CircularArray extends Object {
 
     /**
      * Removes the specified object from the array
-     * 
-     * @param i
-     *            the index of the object to be removed
+     *
+     * @param obj object to be removed
      */
-    public void remove(Object obj) {
+    public void remove(T obj) {
         if (count == 0) {
             return;
         }
@@ -330,18 +330,17 @@ public class CircularArray extends Object {
     /**
      * Converts the array to an Object array.
      */
-    public Object[] toArray() {
+    public T[] toArray() {
         Object[] o = new Object[capacity];
         for (int i = 0; i < capacity; i++) {
             o[i] = array[convert(i)];
         }
-        return o;
+        return (T[])o;
     }
 
     public String internalRep() {
-        Object o = null;
-
-        StringBuffer sb = new StringBuffer();
+        Object o;
+        StringBuilder sb = new StringBuilder();
         sb.append("\n");
         for (int i = 0; i < array.length; i++) {
             sb.append('(').append(i).append(")  ");
@@ -379,9 +378,8 @@ public class CircularArray extends Object {
 
     public String toString() {
         Object[] oa = toArray();
-        Object o = null;
-
-        StringBuffer sb = new StringBuffer();
+        Object o;
+        StringBuilder sb = new StringBuilder();
         sb.append("[");
         for (int i = 0; i < oa.length; i++) {
             o = oa[i];

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/Comparators.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/Comparators.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/Comparators.java
index 9777675..26763d1 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/Comparators.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/Comparators.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.modeler.util;
 
 import java.util.Comparator;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.Attribute;
 import org.apache.cayenne.map.DataMap;
@@ -39,20 +40,20 @@ import org.apache.cayenne.query.Query;
  */
 public class Comparators {
 
-    private static final Comparator dataDomainChildrenComparator = new DataDomainChildrenComparator();
+    private static final Comparator<ConfigurationNode> dataDomainChildrenComparator = new DataDomainChildrenComparator();
 
-    private static final Comparator dataMapChildrenComparator = new DataMapChildrenComparator();
+    private static final Comparator<ConfigurationNode> dataMapChildrenComparator = new DataMapChildrenComparator();
 
-    private static final Comparator entityChildrenComparator = new EntityChildrenComparator();
+    private static final Comparator<ConfigurationNode> entityChildrenComparator = new EntityChildrenComparator();
 
-    private static final Comparator namedObjectComparator = new NamedObjectComparator();
+    private static final Comparator<ConfigurationNode> namedObjectComparator = new NamedObjectComparator();
 
     /**
      * Returns a comparator to order DataMap objects of mixed types. Objects of the same
      * type are ordered based on "name" property. Objects of different types are ordered
      * based on the following precedence: DataMap, DataNode.
      */
-    public static Comparator getDataDomainChildrenComparator() {
+    public static Comparator<ConfigurationNode> getDataDomainChildrenComparator() {
         return dataDomainChildrenComparator;
     }
 
@@ -62,7 +63,7 @@ public class Comparators {
      * based on the following precedence: DataMap, ObjEntity, DbEntity, Procedure and
      * Query.
      */
-    public static Comparator getDataMapChildrenComparator() {
+    public static Comparator<ConfigurationNode> getDataMapChildrenComparator() {
         return dataMapChildrenComparator;
     }
 
@@ -72,31 +73,29 @@ public class Comparators {
      * Objects of different types are ordered based on the following precedence:
      * Attribute, Relationship.
      */
-    public static Comparator getEntityChildrenComparator() {
+    public static Comparator<ConfigurationNode> getEntityChildrenComparator() {
         return entityChildrenComparator;
     }
 
     /**
      * Returns a comparator to order java beans according to their "name" property.
      */
-    public static Comparator getNamedObjectComparator() {
+    public static Comparator<ConfigurationNode> getNamedObjectComparator() {
         return namedObjectComparator;
     }
 
-    static class NamedObjectComparator implements Comparator {
+    static class NamedObjectComparator implements Comparator<ConfigurationNode> {
 
-        public int compare(Object o1, Object o2) {
+        public int compare(ConfigurationNode o1, ConfigurationNode o2) {
 
             String name1 = ModelerUtil.getObjectName(o1);
             String name2 = ModelerUtil.getObjectName(o2);
 
             if (name1 == null) {
                 return (name2 != null) ? -1 : 0;
-            }
-            else if (name2 == null) {
+            } else if (name2 == null) {
                 return 1;
-            }
-            else {
+            } else {
                 return name1.compareTo(name2);
             }
         }
@@ -104,24 +103,21 @@ public class Comparators {
 
     final static class DataDomainChildrenComparator extends NamedObjectComparator {
 
-        public int compare(Object o1, Object o2) {
+        public int compare(ConfigurationNode o1, ConfigurationNode o2) {
             int delta = getClassWeight(o1) - getClassWeight(o2);
             if (delta != 0) {
                 return delta;
-            }
-            else {
+            } else {
                 return super.compare(o1, o2);
             }
         }
 
-        private static int getClassWeight(Object o) {
+        private static int getClassWeight(ConfigurationNode o) {
             if (o instanceof DataMap) {
                 return 1;
-            }
-            else if (o instanceof DataNodeDescriptor) {
+            } else if (o instanceof DataNodeDescriptor) {
                 return 2;
-            }
-            else {
+            } else {
                 // this should trap nulls among other things
                 return Integer.MAX_VALUE;
             }
@@ -130,36 +126,29 @@ public class Comparators {
 
     final static class DataMapChildrenComparator extends NamedObjectComparator {
 
-        public int compare(Object o1, Object o2) {
+        public int compare(ConfigurationNode o1, ConfigurationNode o2) {
             int delta = getClassWeight(o1) - getClassWeight(o2);
             if (delta != 0) {
                 return delta;
-            }
-            else {
+            } else {
                 return super.compare(o1, o2);
             }
         }
 
-        private static int getClassWeight(Object o) {
+        private static int getClassWeight(ConfigurationNode o) {
             if (o instanceof DataMap) {
                 return 1;
-            }
-            else if (o instanceof ObjEntity) {
+            } else if (o instanceof ObjEntity) {
                 return 2;
-            }
-            else if (o instanceof Embeddable) {
+            } else if (o instanceof Embeddable) {
                 return 3;
-            }
-            else if (o instanceof DbEntity) {
+            } else if (o instanceof DbEntity) {
                 return 4;
-            }
-            else if (o instanceof Procedure) {
+            } else if (o instanceof Procedure) {
                 return 5;
-            }
-            else if (o instanceof Query) {
+            } else if (o instanceof Query) {
                 return 6;
-            }
-            else {
+            } else {
                 // this should trap nulls among other things
                 return Integer.MAX_VALUE;
             }
@@ -168,27 +157,23 @@ public class Comparators {
 
     final static class EntityChildrenComparator extends NamedObjectComparator {
 
-        public int compare(Object o1, Object o2) {
+        public int compare(ConfigurationNode o1, ConfigurationNode o2) {
             int delta = getClassWeight(o1) - getClassWeight(o2);
             if (delta != 0) {
                 return delta;
-            }
-            else {
+            } else {
                 return super.compare(o1, o2);
             }
         }
 
-        private static int getClassWeight(Object o) {
+        private static int getClassWeight(ConfigurationNode o) {
             if (o instanceof Entity) {
                 return 1;
-            }
-            else if (o instanceof Attribute) {
+            } else if (o instanceof Attribute) {
                 return 2;
-            }
-            else if (o instanceof Relationship) {
+            } else if (o instanceof Relationship) {
                 return 3;
-            }
-            else {
+            } else {
                 // this should trap nulls among other things
                 return Integer.MAX_VALUE;
             }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/EntityTreeModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/EntityTreeModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/EntityTreeModel.java
index 59fdd28..841d445 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/EntityTreeModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/EntityTreeModel.java
@@ -19,6 +19,7 @@
 
 package org.apache.cayenne.modeler.util;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.Attribute;
 import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.Relationship;
@@ -26,6 +27,7 @@ import org.apache.cayenne.map.Relationship;
 import javax.swing.event.TreeModelListener;
 import javax.swing.tree.TreeModel;
 import javax.swing.tree.TreePath;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
@@ -40,7 +42,7 @@ import java.util.Vector;
  */
 public class EntityTreeModel implements TreeModel {
     protected Entity root;
-    protected Map<Object, Object[]> sortedChildren;
+    protected Map<Object, ConfigurationNode[]> sortedChildren;
 
     /**
      * Filter for checking attributes and relationships
@@ -79,7 +81,7 @@ public class EntityTreeModel implements TreeModel {
 
         // wonder if linear search will be faster, considering that
         // this comparator uses reflection?
-        return Arrays.binarySearch(sortedChildren(node), child, Comparators.getNamedObjectComparator());
+        return Arrays.binarySearch(sortedChildren(node), (ConfigurationNode)child, Comparators.getNamedObjectComparator());
     }
 
     public void addTreeModelListener(TreeModelListener listener) {
@@ -90,40 +92,39 @@ public class EntityTreeModel implements TreeModel {
         // do nothing...
     }
 
-    private Object[] sortedChildren(Object node) {
+    private ConfigurationNode[] sortedChildren(Object node) {
         Entity entity = entityForNonLeafNode(node);
 
         // may happen in incomplete relationships
         if (entity == null) {
-            return new Object[0];
+            return new ConfigurationNode[0];
         }
 
-        Object key = node;
-        Object[] sortedForNode = sortedChildren.get(key);
+        ConfigurationNode[] sortedForNode = sortedChildren.get(node);
 
         if (sortedForNode == null) {
             Collection<? extends Attribute> attributes = entity.getAttributes();
             Collection<? extends Relationship> relationships = entity.getRelationships();
 
-            List<Object> nodes = new Vector<Object>();
+            List<ConfigurationNode> nodes = new ArrayList<>();
 
             // combine two collections in an array
             for (Attribute attr : attributes) {
                 if (filter == null || filter.attributeMatch(node, attr)) {
-                    nodes.add(attr);
+                    nodes.add((ConfigurationNode)attr);
                 }
             }
 
             for (Relationship rel : relationships) {
                 if (filter == null || filter.relationshipMatch(node, rel)) {
-                    nodes.add(rel);
+                    nodes.add((ConfigurationNode)rel);
                 }
             }
 
-            sortedForNode = nodes.toArray();
+            sortedForNode = nodes.toArray(new ConfigurationNode[0]);
 
             Arrays.sort(sortedForNode, Comparators.getEntityChildrenComparator());
-            sortedChildren.put(key, sortedForNode);
+            sortedChildren.put(node, sortedForNode);
         }
 
         return sortedForNode;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/DisplayEventType.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/DisplayEventType.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/DisplayEventType.java
index 27e4789..24afff3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/DisplayEventType.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/DisplayEventType.java
@@ -19,6 +19,7 @@
 
 package org.apache.cayenne.modeler.util.state;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.DataMap;
@@ -42,7 +43,7 @@ public abstract class DisplayEventType {
 
     public abstract void saveLastDisplayEvent();
 
-    protected String getObjectName(Object object) {
+    protected String getObjectName(ConfigurationNode object) {
         if (object instanceof CayenneMapEntry) {
             return ((CayenneMapEntry) object).getName();
         } else if (object instanceof DataChannelDescriptor) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/MultipleObjectsDisplayEventType.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/MultipleObjectsDisplayEventType.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/MultipleObjectsDisplayEventType.java
index 9aa5b2b..df1df39 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/MultipleObjectsDisplayEventType.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/MultipleObjectsDisplayEventType.java
@@ -65,12 +65,12 @@ class MultipleObjectsDisplayEventType extends DisplayEventType {
         preferences.setEvent(MultipleObjectsDisplayEvent.class.getSimpleName());
         preferences.setParentObject(getObjectName(controller.getCurrentParentPath()));
 
-        Object[] multipleObjects = controller.getCurrentPaths();
+        ConfigurationNode[] multipleObjects = controller.getCurrentPaths();
         if (multipleObjects == null) {
             preferences.setMultipleObjects("");
         } else {
             StringBuilder sb = new StringBuilder();
-            for (Object object : multipleObjects) {
+            for (ConfigurationNode object : multipleObjects) {
                 String objectName = getObjectName(object);
                 if (!objectName.isEmpty()) {
                     sb.append(objectName).append(",");
@@ -81,7 +81,7 @@ class MultipleObjectsDisplayEventType extends DisplayEventType {
     }
 
     protected ConfigurationNode[] getLastMultipleObjects(DataChannelDescriptor dataChannel) {
-        List<ConfigurationNode> configurationNodeList = new ArrayList<ConfigurationNode>();
+        List<ConfigurationNode> configurationNodeList = new ArrayList<>();
         ConfigurationNode[] nodes = new ConfigurationNode[0];
 
         String multipleObjects = preferences.getMultipleObjects();
@@ -100,7 +100,7 @@ class MultipleObjectsDisplayEventType extends DisplayEventType {
     }
 
     protected ConfigurationNode[] getLastMultipleObjects(DataNodeDescriptor dataNode) {
-        List<ConfigurationNode> configurationNodeList = new ArrayList<ConfigurationNode>();
+        List<ConfigurationNode> configurationNodeList = new ArrayList<>();
         ConfigurationNode[] nodes = new ConfigurationNode[0];
 
         String multipleObjects = preferences.getMultipleObjects();
@@ -118,7 +118,7 @@ class MultipleObjectsDisplayEventType extends DisplayEventType {
     }
 
     protected ConfigurationNode[] getLastMultipleObjects(DataMap dataMap) {
-        List<ConfigurationNode> configurationNodeList = new ArrayList<ConfigurationNode>();
+        List<ConfigurationNode> configurationNodeList = new ArrayList<>();
         ConfigurationNode[] nodes = new ConfigurationNode[0];
 
         String multipleObjects = preferences.getMultipleObjects();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bb70d83a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/ProjectStateUtil.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/ProjectStateUtil.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/ProjectStateUtil.java
index c077863..fe908d0 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/ProjectStateUtil.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/state/ProjectStateUtil.java
@@ -19,6 +19,7 @@
 
 package org.apache.cayenne.modeler.util.state;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.pref.ProjectStatePreferences;
 
@@ -32,7 +33,7 @@ public final class ProjectStateUtil {
 
     public void saveLastState(ProjectController controller) {
         EventObject displayEvent = controller.getLastDisplayEvent();
-        Object[] multiplyObjects = controller.getCurrentPaths();
+        ConfigurationNode[] multiplyObjects = controller.getCurrentPaths();
 
         if (displayEvent == null && multiplyObjects == null) {
             return;