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 2022/07/14 08:00:56 UTC

[cayenne] 01/03: Some more warnings cleanup

This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 1debe62f23a29027c9de55c4cdcce4b9b7661dec
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Jul 13 18:10:08 2022 +0300

    Some more warnings cleanup
---
 .../java/org/apache/cayenne/reflect/Converter.java |   4 +-
 .../apache/cayenne/reflect/ConverterFactory.java   | 310 +++++++++------------
 .../org/apache/cayenne/reflect/EnumConverter.java  |   4 +-
 .../org/apache/cayenne/reflect/ToAnyConverter.java |  11 +-
 .../cayenne/access/types/MockExtendedType.java     |   4 +-
 .../server/JNDIDataSourceFactoryIT.java            |   1 +
 .../reflect/LifecycleCallbackEventHandlerTest.java |   2 +-
 .../apache/cayenne/reflect/PropertyUtilsTest.java  |  29 +-
 .../template/directive/BindDirectiveIT.java        |   2 +-
 .../java/org/apache/cayenne/unit/util/TstBean.java |   4 +-
 .../apache/cayenne/velocity/ResultDirective.java   |   5 +-
 .../apache/cayenne/modeler/ProjectTreeView.java    |   4 +-
 .../modeler/action/ImportEOModelAction.java        |   3 +-
 13 files changed, 166 insertions(+), 217 deletions(-)

diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/Converter.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/Converter.java
index 567b5d448..687c8b9e1 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/Converter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/Converter.java
@@ -24,7 +24,7 @@ package org.apache.cayenne.reflect;
  * 
  * @since 1.2
  */
-public abstract class Converter<T> {
+public interface Converter<T> {
 
 	/**
 	 * Converts object to supported class without doing any type checking.
@@ -35,5 +35,5 @@ public abstract class Converter<T> {
 	 * @return
 	 * 		an object of type @code{type}. If the conversion fails an exception will be thrown. If value is null then the result will be null.
 	 */
-    protected abstract T convert(Object value, Class<T> type);
+    T convert(Object value, Class<T> type);
 }
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/ConverterFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/ConverterFactory.java
index 248dcd765..03894217a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/ConverterFactory.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/ConverterFactory.java
@@ -36,222 +36,173 @@ public class ConverterFactory {
 
     static final ConverterFactory factory = new ConverterFactory();
 
-    private Map<Class<?>, Converter<?>> converters;
-    private EnumConverter enumConveter = new EnumConverter();
-    private Converter<Object> toAnyConverter = new ToAnyConverter<Object>();
-    
+    private final Map<Class<?>, Converter<?>> converters;
+    private final EnumConverter<?> enumConverter = new EnumConverter<>();
+    private final Converter<Object> toAnyConverter = new ToAnyConverter<>();
+
+    // TODO: this methods uses deprecated Date.parse method that has no direct replacement,
+    //       we need to determine date formats we should support and update code accordingly
+    @SuppressWarnings("deprecation")
     private ConverterFactory() {
 
-        Converter<String> toStringConverter = new Converter<String>() {
+        Converter<String> toStringConverter = (object, type) -> object != null ? object.toString() : null;
 
-            @Override
-			protected String convert(Object object, Class<String> type) {
-                return object != null ? object.toString() : null;
+        Converter<Boolean> toBooleanConverter = (object, type) -> {
+            if (object == null) {
+                return type.isPrimitive() ? Boolean.FALSE : null;
             }
-        };
-
-        Converter<Boolean> toBooleanConverter = new Converter<Boolean>() {
-
-            @Override
-            protected Boolean convert(Object object, Class<Boolean> type) {
-                if (object == null) {
-                    return type.isPrimitive() ? Boolean.FALSE : null;
-                }
 
-                if (object instanceof Boolean) {
-                    return (Boolean)object;
-                } else if (object instanceof Integer || object instanceof Long || object instanceof Short || object instanceof Byte) {
-                	if (((Number)object).longValue() == 0) {
-                        return Boolean.FALSE;
-                    } else if (((Number)object).longValue() == 1) {
-                        return Boolean.TRUE;
-                    }
+            if (object instanceof Boolean) {
+                return (Boolean) object;
+            } else if (object instanceof Integer || object instanceof Long || object instanceof Short || object instanceof Byte) {
+                if (((Number) object).longValue() == 0) {
+                    return Boolean.FALSE;
+                } else if (((Number) object).longValue() == 1) {
+                    return Boolean.TRUE;
                 }
-
-                return "true".equalsIgnoreCase(object.toString())
-                        ? Boolean.TRUE
-                        : Boolean.FALSE;
             }
-        };
-
-        Converter<Long> toLongConverter = new Converter<Long>() {
-
-            @Override
-            protected Long convert(Object object, Class<Long> type) {
-                if (object == null) {
-                    return type.isPrimitive() ? Long.valueOf(0) : null;
-                }
-
-                if (object instanceof Long) {
-                    return (Long)object;
-                }
 
-                return Long.valueOf(object.toString());
-            }
+            return "true".equalsIgnoreCase(object.toString())
+                    ? Boolean.TRUE
+                    : Boolean.FALSE;
         };
-        
-        Converter<Integer> toIntConverter = new Converter<Integer>() {
-
-            @Override
-            protected Integer convert(Object object, Class<Integer> type) {
-                if (object == null) {
-                    return type.isPrimitive() ? 0 : null;
-                }
-
-                if (object instanceof Integer) {
-                    return (Integer)object;
-                }
 
-                return Integer.valueOf(object.toString());
+        Converter<Long> toLongConverter = (object, type) -> {
+            if (object == null) {
+                return type.isPrimitive() ? 0L : null;
             }
-        };
 
-        Converter<Byte> toByteConverter = new Converter<Byte>() {
+            if (object instanceof Long) {
+                return (Long) object;
+            }
 
-            @Override
-            protected Byte convert(Object object, Class<Byte> type) {
-                if (object == null) {
-                    return type.isPrimitive() ? (byte) 0 : null;
-                }
+            return Long.valueOf(object.toString());
+        };
 
-                if (object instanceof Byte) {
-                    return (Byte)object;
-                }
+        Converter<Integer> toIntConverter = (object, type) -> {
+            if (object == null) {
+                return type.isPrimitive() ? 0 : null;
+            }
 
-                return Byte.valueOf(object.toString());
+            if (object instanceof Integer) {
+                return (Integer) object;
             }
+
+            return Integer.valueOf(object.toString());
         };
 
-        Converter<Short> toShortConverter = new Converter<Short>() {
+        Converter<Byte> toByteConverter = (object, type) -> {
+            if (object == null) {
+                return type.isPrimitive() ? (byte) 0 : null;
+            }
 
-            @Override
-            protected Short convert(Object object, Class<Short> type) {
-                if (object == null) {
-                    return type.isPrimitive() ? (short) 0 : null;
-                }
+            if (object instanceof Byte) {
+                return (Byte) object;
+            }
 
-                if (object instanceof Short) {
-                    return (Short)object;
-                }
+            return Byte.valueOf(object.toString());
+        };
 
-                return Short.valueOf(object.toString());
+        Converter<Short> toShortConverter = (object, type) -> {
+            if (object == null) {
+                return type.isPrimitive() ? (short) 0 : null;
             }
-        };
 
-        Converter<Character> toCharConverter = new Converter<Character>() {
+            if (object instanceof Short) {
+                return (Short) object;
+            }
 
-            @Override
-            protected Character convert(Object object, Class<Character> type) {
-                if (object == null) {
-                    return type.isPrimitive() ? (char) 0 : null;
-                }
+            return Short.valueOf(object.toString());
+        };
 
-                if (object instanceof Character) {
-                    return (Character)object;
-                }
+        Converter<Character> toCharConverter = (object, type) -> {
+            if (object == null) {
+                return type.isPrimitive() ? (char) 0 : null;
+            }
 
-                String string = object.toString();
-                return Character.valueOf(string.length() > 0 ? string.charAt(0) : 0);
+            if (object instanceof Character) {
+                return (Character) object;
             }
+
+            String string = object.toString();
+            return string.length() > 0 ? string.charAt(0) : 0;
         };
 
-        Converter<Double> toDoubleConverter = new Converter<Double>() {
+        Converter<Double> toDoubleConverter = (object, type) -> {
+            if (object == null) {
+                return type.isPrimitive() ? 0.0d : null;
+            }
 
-            @Override
-            protected Double convert(Object object, Class<Double> type) {
-                if (object == null) {
-                    return type.isPrimitive() ? 0.0d : null;
-                }
+            if (object instanceof Double) {
+                return (Double) object;
+            }
 
-                if (object instanceof Double) {
-                    return (Double)object;
-                }
+            return Double.valueOf(object.toString());
+        };
 
-                return Double.valueOf(object.toString());
+        Converter<Float> toFloatConverter = (object, type) -> {
+            if (object == null) {
+                return type.isPrimitive() ? 0.0f : null;
             }
-        };
 
-        Converter<Float> toFloatConverter = new Converter<Float>() {
+            if (object instanceof Float) {
+                return (Float) object;
+            }
 
-            @Override
-            protected Float convert(Object object, Class<Float> type) {
-                if (object == null) {
-                    return type.isPrimitive() ? 0.0f : null;
-                }
+            return Float.valueOf(object.toString());
+        };
 
-                if (object instanceof Float) {
-                    return (Float)object;
-                }
+        Converter<BigDecimal> toBigDecimalConverter = (object, type) -> {
+            if (object == null) {
+                return null;
+            }
 
-                return Float.valueOf(object.toString());
+            if (object instanceof BigDecimal) {
+                return (BigDecimal) object;
             }
+
+            return new BigDecimal(object.toString());
         };
 
-        Converter<BigDecimal> toBigDecimalConverter = new Converter<BigDecimal>() {
+        Converter<BigInteger> toBigIntegerConverter = (object, type) -> {
+            if (object == null) {
+                return null;
+            }
 
-            @Override
-            protected BigDecimal convert(Object object, Class<BigDecimal> type) {
-                if (object == null) {
-                    return null;
-                }
+            if (object instanceof BigInteger) {
+                return (BigInteger) object;
+            }
 
-                if (object instanceof BigDecimal) {
-                    return (BigDecimal)object;
-                }
+            return new BigInteger(object.toString());
+        };
 
-                return new BigDecimal(object.toString());
+        Converter<Date> toDateConverter = (value, type) -> {
+            if (value == null) {
+                return null;
             }
+            if (value instanceof Date) {
+                return (Date) value;
+            }
+            if (value instanceof Number) {
+                return new Date(((Number) value).longValue());
+            }
+            return new Date(value.toString());
         };
 
-        Converter<BigInteger> toBigIntegerConverter = new Converter<BigInteger>() {
-
-            @Override
-            protected BigInteger convert(Object object, Class<BigInteger> type) {
-                if (object == null) {
-                    return null;
-                }
-
-                if (object instanceof BigInteger) {
-                    return (BigInteger)object;
-                }
-
-                return new BigInteger(object.toString());
+        Converter<Timestamp> toTimestampConverter = (value, type) -> {
+            if (value == null) {
+                return null;
+            }
+            if (value instanceof Timestamp) {
+                return (Timestamp) value;
+            }
+            if (value instanceof Number) {
+                return new Timestamp(((Number) value).longValue());
             }
+            return new Timestamp(Date.parse(value.toString()));
         };
 
-		Converter<Date> toDateConverter = new Converter<Date>() {
-			@Override
-			protected Date convert(Object value, Class<Date> type) {
-				if (value == null) {
-                    return null;
-                }
-				if (value instanceof Date) {
-                    return (Date) value;
-                }
-				if (value instanceof Number){
-				    return new Date(((Number)value).longValue());
-                }
-				return new Date(value.toString());
-			}
-		};
-		
-		Converter<Timestamp> toTimestampConverter = new Converter<Timestamp>() {
-			@Override
-			protected Timestamp convert(Object value, Class<Timestamp> type) {
-				if (value == null) {
-                    return null;
-                }
-				if (value instanceof Timestamp) {
-                    return (Timestamp) value;
-                }
-				if (value instanceof Number){
-				    return new Timestamp(((Number)value).longValue());
-                }
-				return new Timestamp(Date.parse(value.toString()));
-			}
-		};
-		
-		// TODO: byte[] converter...
+        // TODO: byte[] converter...
 
         converters = new HashMap<>();
 
@@ -283,28 +234,27 @@ public class ConverterFactory {
         _addConverter(BigInteger.class, toBigIntegerConverter);
         _addConverter(Number.class, toBigDecimalConverter);
         _addConverter(String.class, toStringConverter);
-		_addConverter(Date.class, toDateConverter);
-		_addConverter(Timestamp.class, toTimestampConverter);
+        _addConverter(Date.class, toDateConverter);
+        _addConverter(Timestamp.class, toTimestampConverter);
     }
 
     /**
      * Converters are used by {@link PropertyUtils#setProperty(Object, String, Object)} to coerce
      * generic Object values into the specific type expected by the named setter.
-     * 
-     * @param type
-     * 		the Class to convert a value to; the destination type
-     * @param converter
-     * 		a converter used to convert the value from Object to T
+     *
+     * @param type      the Class to convert a value to; the destination type
+     * @param converter a converter used to convert the value from Object to T
      * @since 4.0
      */
     public static <T> void addConverter(Class<? super T> type, Converter<T> converter) {
-    	factory._addConverter(type, converter);
+        factory._addConverter(type, converter);
     }
-    
+
     private <T> void _addConverter(Class<? super T> type, Converter<T> converter) {
-    	converters.put(type, converter);
+        converters.put(type, converter);
     }
-    
+
+    @SuppressWarnings("unchecked")
     <T> Converter<T> getConverter(Class<T> type) {
         if (type == null) {
             throw new IllegalArgumentException("Null type");
@@ -312,10 +262,10 @@ public class ConverterFactory {
 
         // check for enum BEFORE super call, as it will return a noop converter
         if (type.isEnum()) {
-            return enumConveter;
+            return (Converter<T>) enumConverter;
         }
 
         Converter<T> c = (Converter<T>) converters.get(type);
-        return c != null ? c : (Converter<T>)toAnyConverter;
+        return c != null ? c : (Converter<T>) toAnyConverter;
     }
 }
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/EnumConverter.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/EnumConverter.java
index 1c7536090..ebb419451 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/EnumConverter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/EnumConverter.java
@@ -26,11 +26,11 @@ import org.apache.cayenne.util.Util;
 /**
  * @since 1.2
  */
-class EnumConverter<T extends Enum & ExtendedEnumeration> extends Converter<T> {
+class EnumConverter<T extends Enum<T> & ExtendedEnumeration> implements Converter<T> {
 
     @Override
     @SuppressWarnings("unchecked")
-    protected T convert(Object object, Class<T> type) {
+    public T convert(Object object, Class<T> type) {
 
         if (ExtendedEnumeration.class.isAssignableFrom(type)) {
             ExtendedEnumeration[] values;
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/ToAnyConverter.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/ToAnyConverter.java
index b69a765ba..257e0d9d4 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/ToAnyConverter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/ToAnyConverter.java
@@ -26,9 +26,10 @@ import org.apache.cayenne.CayenneRuntimeException;
  * Can convert to any class that has a constructor that takes a 
  * single Object or a single String parameter.
  */
-public class ToAnyConverter<T> extends Converter<T> {
-	@Override
-	protected T convert(Object value, Class<T> type) {
+public class ToAnyConverter<T> implements Converter<T> {
+	@SuppressWarnings("unchecked")
+    @Override
+	public T convert(Object value, Class<T> type) {
 		if (value == null) {
             return null;
         }
@@ -37,14 +38,14 @@ public class ToAnyConverter<T> extends Converter<T> {
         }
 		
         try {
-            Constructor<?> constructor;
+            Constructor<T> constructor;
             try {
             	constructor = type.getConstructor(Object.class);
             } catch (NoSuchMethodException e) {
                 constructor = type.getConstructor(String.class);
             	value = value.toString();
             }
-            return (T) constructor.newInstance(value);
+            return constructor.newInstance(value);
         } catch (Exception e) {
             throw new CayenneRuntimeException(e);
         }
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/types/MockExtendedType.java b/cayenne-server/src/test/java/org/apache/cayenne/access/types/MockExtendedType.java
index 4fe6f30cb..3152ac104 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/types/MockExtendedType.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/types/MockExtendedType.java
@@ -51,13 +51,13 @@ public class MockExtendedType implements ExtendedType<Object> {
 
     @Override
     public Object materializeObject(ResultSet rs, int index, int type) throws Exception {
-        return objectClass.newInstance();
+        return objectClass.getDeclaredConstructor().newInstance();
     }
 
     @Override
     public Object materializeObject(CallableStatement rs, int index, int type)
             throws Exception {
-        return objectClass.newInstance();
+        return objectClass.getDeclaredConstructor().newInstance();
     }
 
     @Override
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/JNDIDataSourceFactoryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/JNDIDataSourceFactoryIT.java
index 7642926c2..fb03f1634 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/JNDIDataSourceFactoryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/JNDIDataSourceFactoryIT.java
@@ -34,6 +34,7 @@ import javax.naming.NameNotFoundException;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.fail;
 
+@Deprecated
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class JNDIDataSourceFactoryIT extends ServerCase {
     
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackEventHandlerTest.java b/cayenne-server/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackEventHandlerTest.java
index ed0f25e92..39ff19c83 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackEventHandlerTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackEventHandlerTest.java
@@ -158,7 +158,7 @@ public class LifecycleCallbackEventHandlerTest {
         protected List callbackTimes = new ArrayList();
 
         void callback(Object entity) {
-            callbackTimes.add(new Long(System.currentTimeMillis()));
+            callbackTimes.add(System.currentTimeMillis());
             try {
                 Thread.sleep(100);
             }
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/reflect/PropertyUtilsTest.java b/cayenne-server/src/test/java/org/apache/cayenne/reflect/PropertyUtilsTest.java
index 75ee53f87..51a58683a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/reflect/PropertyUtilsTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/reflect/PropertyUtilsTest.java
@@ -281,24 +281,21 @@ public class PropertyUtilsTest {
 		Converter<Date> oldConverter = ConverterFactory.factory.getConverter(Date.class);
 
 		try {
-			ConverterFactory.addConverter(Date.class, new Converter<>() {
-				@Override
-				protected Date convert(Object value, Class<Date> type) {
-					if (value == null)
-						return null;
-					if (value instanceof Date) {
-						return (Date) value;
-					}
-					if (value instanceof String) {
-						SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-						try {
-							return format.parse((String) value);
-						} catch (ParseException e) {
-							throw new CayenneRuntimeException("Unable to convert '" + value + "' to a Date", e);
-						}
+			ConverterFactory.addConverter(Date.class, (value, type) -> {
+				if (value == null)
+					return null;
+				if (value instanceof Date) {
+					return (Date) value;
+				}
+				if (value instanceof String) {
+					SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+					try {
+						return format.parse((String) value);
+					} catch (ParseException e) {
+						throw new CayenneRuntimeException("Unable to convert '" + value + "' to a Date", e);
 					}
-					throw new CayenneRuntimeException("Unable to convert '" + value + "' to a Date");
 				}
+				throw new CayenneRuntimeException("Unable to convert '" + value + "' to a Date");
 			});
 
 			TstJavaBean o1 = new TstJavaBean();
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java b/cayenne-server/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java
index 9e618a035..6d9ef6452 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java
@@ -137,7 +137,7 @@ public class BindDirectiveIT extends ServerCase {
 
 		// insert 3 artists
 		for (int i = 1; i < 4; i++) {
-			tArtist.insert(new Long(i), "Artist" + i);
+			tArtist.insert((long) i, "Artist" + i);
 		}
 
 		// now select only with names: Artist1 and Artist3
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/util/TstBean.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/util/TstBean.java
index 2bb9615e0..da4d07687 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/util/TstBean.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/util/TstBean.java
@@ -56,11 +56,11 @@ public class TstBean {
 
     public TstBean(String string, int intValue) {
         this.string = string;
-        this.integer = new Integer(intValue);
+        this.integer = intValue;
     }
 
     public TstBean(int intValue) {
-        integer = new Integer(intValue);
+        integer = intValue;
     }
 
     public Integer getInteger() {
diff --git a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/ResultDirective.java b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/ResultDirective.java
index 8d80f347b..676459b29 100644
--- a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/ResultDirective.java
+++ b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/ResultDirective.java
@@ -192,8 +192,9 @@ public class ResultDirective extends Directive {
 	 */
 	protected void bindResult(InternalContextAdapter context, ColumnDescriptor columnDescriptor) {
 
-		Collection<Object> resultColumns = (Collection<Object>) context.getInternalUserContext().get(
-				VelocitySQLTemplateProcessor.RESULT_COLUMNS_LIST_KEY);
+		@SuppressWarnings("unchecked")
+		Collection<Object> resultColumns = (Collection<Object>) context
+				.getInternalUserContext().get(VelocitySQLTemplateProcessor.RESULT_COLUMNS_LIST_KEY);
 
 		if (resultColumns != null) {
 			resultColumns.add(columnDescriptor);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
index 00d3fdd05..d17490a98 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
@@ -976,7 +976,7 @@ public class ProjectTreeView extends JTree implements DomainDisplayListener,
         return list.toArray();
     }
 
-    private void positionNode(Object[] path, Comparator comparator) {
+    private void positionNode(Object[] path, Comparator<ConfigurationNode> comparator) {
         if (path == null) {
             return;
         }
@@ -992,7 +992,7 @@ public class ProjectTreeView extends JTree implements DomainDisplayListener,
     private void positionNode(
             MutableTreeNode parent,
             DefaultMutableTreeNode treeNode,
-            Comparator comparator) {
+            Comparator<ConfigurationNode> comparator) {
 
         removeTreeSelectionListener(treeSelectionListener);
         try {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
index 67c04f110..1df3949a0 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
@@ -142,8 +142,7 @@ public class ImportEOModelAction extends CayenneAction {
         Map connection = (Map) eomodelIndex.get("connectionDictionary");
 
         if (adapter != null && connection != null) {
-            CreateNodeAction nodeBuilder = (CreateNodeAction) getApplication().getActionManager().getAction(
-                    CreateNodeAction.class);
+            CreateNodeAction nodeBuilder = getApplication().getActionManager().getAction(CreateNodeAction.class);
 
             // this should make created node current, resulting in the new map being added
             // to the node automatically once it is loaded