Remove unneeded checkstyle supressions 45/85845/1
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 13:07:01 +0000 (14:07 +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 f82d8aa401d58f7a39f4c7549d4b0bccfdce1165..8b6b6c42114094a3e8df7a435ac4c0930ee6a093 100644 (file)
@@ -454,7 +454,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();
@@ -462,16 +462,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(), () -> {
                     return ClassLoaderUtils.getFirstGenericParameter(method.getGenericReturnType()).flatMap(
-                        result -> result instanceof Class && DataContainer.class.isAssignableFrom((Class) result)
-                            ? Optional.of((Class<? extends DataContainer>) result) : Optional.empty());
+                        result -> result instanceof Class ? optionalCast((Class<?>) result) : Optional.empty());
                 });
             } catch (Exception e) {
                 /*
@@ -485,6 +483,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