Remove unneeded checkstyle supressions 57/85857/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 18 Nov 2019 10:44:11 +0000 (11:44 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 19 Nov 2019 14:36:13 +0000 (15:36 +0100)
Treading carefully and using Class.asSubclass() allows us to
remove raw types/unchecked casts.

Change-Id: Ib7554cc40f0b4f41495405db3b7715e0f4e21cc7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 6087dda3aa2e148c5046fb2d8e7b0f75a5eee844)

binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/reflect/BindingReflections.java

index 546b6a4542858c887251571497242170f0565647..c598ad94aed9ed83a34bdab6df507eb65bf2a539 100644 (file)
@@ -451,7 +451,7 @@ public final class BindingReflections {
         return getChildrenClassToMethod(type, BindingMapping.NONNULL_PREFIX);
     }
 
-    @SuppressWarnings({ "unchecked", "rawtypes", "checkstyle:illegalCatch" })
+    @SuppressWarnings("checkstyle:illegalCatch")
     private static Optional<Class<? extends DataContainer>> getYangModeledReturnType(final Method method,
             final String prefix) {
         final String methodName = method.getName();
@@ -459,18 +459,14 @@ public final class BindingReflections {
             return Optional.empty();
         }
 
-        Class returnType = method.getReturnType();
+        final Class<?> returnType = method.getReturnType();
         if (DataContainer.class.isAssignableFrom(returnType)) {
-            return Optional.of(returnType);
-        }
-        if (List.class.isAssignableFrom(returnType)) {
+            return optionalDataContainer(returnType);
+        } else if (List.class.isAssignableFrom(returnType)) {
             try {
                 return ClassLoaderUtils.callWithClassLoader(method.getDeclaringClass().getClassLoader(), () -> {
-                    Type listResult = ClassLoaderUtils.getFirstGenericParameter(method.getGenericReturnType());
-                    if (listResult instanceof Class && DataContainer.class.isAssignableFrom((Class) listResult)) {
-                        return Optional.of((Class) listResult);
-                    }
-                    return Optional.empty();
+                    final Type listResult = ClassLoaderUtils.getFirstGenericParameter(method.getGenericReturnType());
+                    return listResult instanceof Class ? optionalCast((Class<?>) listResult) : Optional.empty();
                 });
             } catch (Exception e) {
                 /*
@@ -484,6 +480,14 @@ public final class BindingReflections {
         return Optional.empty();
     }
 
+    private static Optional<Class<? extends DataContainer>> optionalCast(final Class<?> type) {
+        return DataContainer.class.isAssignableFrom(type) ? optionalDataContainer(type) : Optional.empty();
+    }
+
+    private static Optional<Class<? extends DataContainer>> optionalDataContainer(final Class<?> type) {
+        return Optional.of(type.asSubclass(DataContainer.class));
+    }
+
     private static class ClassToQNameLoader extends CacheLoader<Class<?>, Optional<QName>> {
 
         @Override