Remove use of Class.newInstance() 03/76803/3
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 9 Oct 2018 15:10:33 +0000 (17:10 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 10 Oct 2018 15:11:16 +0000 (17:11 +0200)
This method is deprecated in JDK9+, migrate to its replacement.
This also means that any exceptions thrown are wrapped in
InvocationTargetException, hence we can (and are forced by FindBugs)
replace catching of Exception with catching of ClassCastException
and ReflectiveOperationException.

Change-Id: Iefd48ecef653fc73f74b2a77ac1ab7891b2575d3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/DefaultConfigParamsImpl.java

index 6450285..932069e 100644 (file)
@@ -216,8 +216,8 @@ public class DefaultConfigParamsImpl implements ConfigParams {
         try {
             String className = DefaultConfigParamsImpl.this.customRaftPolicyImplementationClass;
             LOG.info("Trying to use custom RaftPolicy {}", className);
-            return (RaftPolicy)Class.forName(className).newInstance();
-        } catch (Exception e) {
+            return (RaftPolicy)Class.forName(className).getDeclaredConstructor().newInstance();
+        } catch (ClassCastException | ReflectiveOperationException e) {
             if (LOG.isDebugEnabled()) {
                 LOG.error("Could not create custom raft policy, will stick with default", e);
             } else {

©2013 OpenDaylight, A Linux Foundation Collaborative Project. All Rights Reserved.
OpenDaylight is a registered trademark of The OpenDaylight Project, Inc.
Linux Foundation and OpenDaylight are registered trademarks of the Linux Foundation.
Linux is a registered trademark of Linus Torvalds.