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 64502858a754b294c8f3b2d2aca31e056639f9f4..932069edda42fe005a408607940f2989ab46ca26 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 {