Make public fields final where possible

Class fields initialized via the constructor should be final.

Also mark leaking byte[] instances with a FIXME. API users consider them
immutable, but they are vulnerable to System.arrayCopy().

Also fixes constructor arguments so they do not use underscores, which
is prohibited by Java 9.

Change-Id: I393d55ed7234149cb3604bc92b2cb1d1207c55dc
Signed-off-by: Robert Varga <nite@hq.sk>
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppIPv4Address.java b/vpp-japi/japi/org/openvpp/vppjapi/vppIPv4Address.java
index cd60e71..046ceab 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppIPv4Address.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppIPv4Address.java
@@ -15,12 +15,12 @@
 
 package org.openvpp.vppjapi;
 
-public class vppIPv4Address {
-    public int ip;
-    public byte prefixLength;
+public final class vppIPv4Address {
+    public final int ip;
+    public final byte prefixLength;
 
-    public vppIPv4Address(int _ip, byte _prefixLength) {
-        ip = _ip;
-        prefixLength = _prefixLength;
+    public vppIPv4Address(int ip, byte prefixLength) {
+        this.ip = ip;
+        this.prefixLength = prefixLength;
     }
 }
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppIPv6Address.java b/vpp-japi/japi/org/openvpp/vppjapi/vppIPv6Address.java
index efaa89c..7bf10f2 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppIPv6Address.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppIPv6Address.java
@@ -16,8 +16,9 @@
 package org.openvpp.vppjapi;
 
 public class vppIPv6Address {
-    public byte[] ip;
-    public byte prefixLength;
+    // FIXME: this is dangerous
+    public final byte[] ip;
+    public final byte prefixLength;
 
     public vppIPv6Address(byte[] _ip, byte _prefixLength) {
         ip = _ip;
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceCounters.java b/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceCounters.java
index 1777d5d..8a02ad0 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceCounters.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceCounters.java
@@ -17,29 +17,29 @@
 
 public class vppInterfaceCounters {
 
-    public long rxOctets;
-    public long rxIp4;
-    public long rxIp6;
-    public long rxUnicast;
-    public long rxMulticast;
-    public long rxBroadcast;
-    public long rxDiscard;
-    public long rxFifoFull;
-    public long rxError;
-    public long rxUnknownProto;
-    public long rxMiss;
+    public final long rxOctets;
+    public final long rxIp4;
+    public final long rxIp6;
+    public final long rxUnicast;
+    public final long rxMulticast;
+    public final long rxBroadcast;
+    public final long rxDiscard;
+    public final long rxFifoFull;
+    public final long rxError;
+    public final long rxUnknownProto;
+    public final long rxMiss;
 
-    public long txOctets;
-    public long txIp4;
-    public long txIp6;
-    public long txUnicast;
-    public long txMulticast;
-    public long txBroadcast;
-    public long txDiscard;
-    public long txFifoFull;
-    public long txError;
-    public long txUnknownProto;
-    public long txMiss;
+    public final long txOctets;
+    public final long txIp4;
+    public final long txIp6;
+    public final long txUnicast;
+    public final long txMulticast;
+    public final long txBroadcast;
+    public final long txDiscard;
+    public final long txFifoFull;
+    public final long txError;
+    public final long txUnknownProto;
+    public final long txMiss;
 
     public vppInterfaceCounters(
             long rxOctets, long rxIp4, long rxIp6, long rxUni, long rxMulti,
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceDetails.java b/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceDetails.java
index 8bc94d2..b2edae0 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceDetails.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceDetails.java
@@ -15,28 +15,29 @@
 
 package org.openvpp.vppjapi;
 
-public class vppInterfaceDetails {
-    public int ifIndex;
-    public String interfaceName;
-    public int supIfIndex;
-    public byte[] physAddr;
-    public byte adminUp;
-    public byte linkUp;
-    public byte linkDuplex;
-    public byte linkSpeed;
-    public int subId;
-    public byte subDot1ad;
-    public byte subNumberOfTags;
-    public int subOuterVlanId;
-    public int subInnerVlanId;
-    public byte subExactMatch;
-    public byte subDefault;
-    public byte subOuterVlanIdAny;
-    public byte subInnerVlanIdAny;
-    public int vtrOp;
-    public int vtrPushDot1q;
-    public int vtrTag1;
-    public int vtrTag2;
+public final class vppInterfaceDetails {
+    public final int ifIndex;
+    public final String interfaceName;
+    public final int supIfIndex;
+    // FIXME: this is dangerous
+    public final byte[] physAddr;
+    public final byte adminUp;
+    public final byte linkUp;
+    public final byte linkDuplex;
+    public final byte linkSpeed;
+    public final int subId;
+    public final byte subDot1ad;
+    public final byte subNumberOfTags;
+    public final int subOuterVlanId;
+    public final int subInnerVlanId;
+    public final byte subExactMatch;
+    public final byte subDefault;
+    public final byte subOuterVlanIdAny;
+    public final byte subInnerVlanIdAny;
+    public final int vtrOp;
+    public final int vtrPushDot1q;
+    public final int vtrTag1;
+    public final int vtrTag2;
 
     public vppInterfaceDetails(int ifIndex, String interfaceName, int supIfIndex, byte[] physAddr, byte adminUp,
             byte linkUp, byte linkDuplex, byte linkSpeed, int subId, byte subDot1ad, byte subNumberOfTags,
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppL2Fib.java b/vpp-japi/japi/org/openvpp/vppjapi/vppL2Fib.java
index 9f43449..b38d801 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppL2Fib.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppL2Fib.java
@@ -15,20 +15,21 @@
 
 package org.openvpp.vppjapi;
 
-public class vppL2Fib {
-    public byte[] physAddress;
-    public boolean staticConfig;
-    public String outgoingInterface;
-    public boolean filter;
-    public boolean bridgedVirtualInterface;
+public final class vppL2Fib {
+    // FIXME: this is dangerous
+    public final byte[] physAddress;
+    public final boolean staticConfig;
+    public final String outgoingInterface;
+    public final boolean filter;
+    public final boolean bridgedVirtualInterface;
 
-    public vppL2Fib(byte[] _physAddress, boolean _staticConfig,
-            String _outgoingInterface, boolean _filter,
-            boolean _bridgedVirtualInterface) {
-        physAddress = _physAddress;
-        staticConfig = _staticConfig;
-        outgoingInterface = _outgoingInterface;
-        filter = _filter;
-        bridgedVirtualInterface = _bridgedVirtualInterface;
+    public vppL2Fib(byte[] physAddress, boolean staticConfig,
+            String outgoingInterface, boolean filter,
+            boolean bridgedVirtualInterface) {
+        this.physAddress = physAddress;
+        this.staticConfig = staticConfig;
+        this.outgoingInterface = outgoingInterface;
+        this.filter = filter;
+        this.bridgedVirtualInterface = bridgedVirtualInterface;
     }
 }
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppVersion.java b/vpp-japi/japi/org/openvpp/vppjapi/vppVersion.java
index 557ca7b..6408dee 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppVersion.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppVersion.java
@@ -15,18 +15,17 @@
 
 package org.openvpp.vppjapi;
 
-public class vppVersion {
-    public String programName;
-    public String buildDirectory;
-    public String gitBranch;
-    public String buildDate;
+public final class vppVersion {
+    public final String programName;
+    public final String buildDirectory;
+    public final String gitBranch;
+    public final String buildDate;
 
-    public vppVersion(String _progName, String _buildDir, String _gitBranch, String _buildDate)
-    {
-        programName = _progName;
-        buildDirectory = _buildDir;
-        gitBranch = _gitBranch;
-        buildDate = _buildDate;
+    public vppVersion(String progName, String buildDir, String gitBranch, String buildDate) {
+        this.programName = progName;
+        this.buildDirectory = buildDir;
+        this.gitBranch = gitBranch;
+        this.buildDate = buildDate;
     }
 }
 
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java b/vpp-japi/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java
index a90e933..dd81e98 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java
@@ -15,19 +15,19 @@
 
 package org.openvpp.vppjapi;
 
-public class vppVxlanTunnelDetails {
-    public int srcAddress;
-    public int dstAddress;
-    public int encapVrfId;
-    public int vni;
-    public int decap_next_index;
+public final class vppVxlanTunnelDetails {
+    public final int srcAddress;
+    public final int dstAddress;
+    public final int encapVrfId;
+    public final int vni;
+    public final int decapNextIndex;
 
-    public vppVxlanTunnelDetails(int _srcAddress, int _dstAddress,
-            int _encapVrfId, int _vni, int _decap_next_index) {
-        srcAddress = _srcAddress;
-        dstAddress = _dstAddress;
-        encapVrfId = _encapVrfId;
-        vni = _vni;
-        decap_next_index = _decap_next_index;
+    public vppVxlanTunnelDetails(int srcAddress, int dstAddress,
+            int encapVrfId, int vni, int decapNextIndex) {
+        this.srcAddress = srcAddress;
+        this.dstAddress = dstAddress;
+        this.encapVrfId = encapVrfId;
+        this.vni = vni;
+        this.decapNextIndex = decapNextIndex;
     }
 }