From 71bc55b470bf66102788c6cb70b29c58da44a1a3 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 17 Oct 2015 16:49:37 +0000
Subject: [PATCH] lint core, i2psnark, jetty, susimail

---
 .../java/src/org/klomp/snark/I2PSnarkUtil.java      |  1 +
 .../java/src/org/klomp/snark/SnarkManager.java      |  2 +-
 .../java/src/org/klomp/snark/dht/DHTTracker.java    |  1 +
 .../i2psnark/java/src/org/klomp/snark/dht/KRPC.java |  4 ++++
 apps/jetty/java/src/net/i2p/jetty/JettyStart.java   |  1 +
 .../net/i2p/servlet/filters/XSSRequestWrapper.java  |  1 +
 .../src/org/mortbay/servlet/MultiPartRequest.java   |  1 +
 .../java/src/org/mortbay/util/ByteArrayPool.java    | 13 +++++++------
 .../src/src/i2p/susi/webmail/MailCache.java         |  2 ++
 apps/susimail/src/src/i2p/susi/webmail/WebMail.java |  6 +++---
 .../net/i2p/client/naming/MetaNamingService.java    |  4 ++--
 .../src/net/i2p/client/naming/NamingService.java    |  2 +-
 core/java/src/net/i2p/crypto/CryptoConstants.java   |  4 ++--
 core/java/src/net/i2p/crypto/ECConstants.java       |  4 ++--
 core/java/src/net/i2p/data/ByteArray.java           |  7 +++----
 core/java/src/net/i2p/util/FileUtil.java            | 10 +++++-----
 16 files changed, 37 insertions(+), 26 deletions(-)

diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
index e75ef301e4..96f3804358 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
@@ -136,6 +136,7 @@ public class I2PSnarkUtil {
     
     public boolean configured() { return _configured; }
     
+    @SuppressWarnings({"unchecked", "rawtypes"})
     public void setI2CPConfig(String i2cpHost, int i2cpPort, Map opts) {
         if (i2cpHost != null)
             _i2cpHost = i2cpHost;
diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
index bb1684e5f5..03d4b8dc05 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
@@ -2191,7 +2191,7 @@ public class SnarkManager implements CompleteListener {
      */
     private void addMagnets() {
         boolean changed = false;
-        for (Iterator iter = _config.keySet().iterator(); iter.hasNext(); ) {
+        for (Iterator<?> iter = _config.keySet().iterator(); iter.hasNext(); ) {
             String k = (String) iter.next();
             if (k.startsWith(PROP_META_MAGNET_PREFIX)) {
                 String b64 = k.substring(PROP_META_MAGNET_PREFIX.length());
diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java b/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java
index 3b7b1d99c1..784d8e6bff 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java
@@ -106,6 +106,7 @@ class DHTTracker {
      *  @param noSeeds true if we do not want seeds in the result
      *  @return list or empty list (never null)
      */
+    @SuppressWarnings({"unchecked", "rawtypes"})
     List<Hash> getPeers(InfoHash ih, int max, boolean noSeeds) {
         Peers peers = _torrents.get(ih);
         if (peers == null || max <= 0)
diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java b/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java
index 58e0f39fca..0e6da1c22b 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java
@@ -243,6 +243,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
      *  @param maxWait how long to wait for each to reply (not total) must be > 0
      *  @param parallel how many outstanding at once (unimplemented, always 1)
      */
+    @SuppressWarnings("unchecked")
     private void explore(NID target, int maxNodes, long maxWait, int parallel) {
         List<NodeInfo> nodes = _knownNodes.findClosest(target, maxNodes);
         if (nodes.isEmpty()) {
@@ -327,6 +328,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
      *  @param noSeeds true if we do not want seeds in the result
      *  @return possibly empty (never null)
      */
+    @SuppressWarnings("unchecked")
     public Collection<Hash> getPeersAndAnnounce(byte[] ih, int max, long maxWait,
                                                 int annMax, long annMaxWait,
                                                 boolean isSeed, boolean noSeeds) {
@@ -858,6 +860,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
      *  @param repliable true for all but announce
      *  @return null on error
      */
+    @SuppressWarnings("unchecked")
     private ReplyWaiter sendQuery(NodeInfo nInfo, Map<String, Object> map, boolean repliable) {
         if (nInfo.equals(_myNodeInfo))
             throw new IllegalArgumentException("wtf don't send to ourselves");
@@ -907,6 +910,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
      * @param toPort the query port, we will increment here
      *  @return success
      */
+    @SuppressWarnings("unchecked")
     private boolean sendResponse(NodeInfo nInfo, MsgID msgID, Map<String, Object> map) {
         if (nInfo.equals(_myNodeInfo))
             throw new IllegalArgumentException("wtf don't send to ourselves");
diff --git a/apps/jetty/java/src/net/i2p/jetty/JettyStart.java b/apps/jetty/java/src/net/i2p/jetty/JettyStart.java
index 6cac1cbae6..c5f9e2aaff 100644
--- a/apps/jetty/java/src/net/i2p/jetty/JettyStart.java
+++ b/apps/jetty/java/src/net/i2p/jetty/JettyStart.java
@@ -72,6 +72,7 @@ public class JettyStart implements ClientApp {
     /**
      *  Modified from XmlConfiguration.main()
      */
+    @SuppressWarnings({"unchecked", "rawtypes"})
     public void parseArgs(String[] args) throws Exception {
         Properties properties=new Properties();
         XmlConfiguration last=null;
diff --git a/apps/jetty/java/src/net/i2p/servlet/filters/XSSRequestWrapper.java b/apps/jetty/java/src/net/i2p/servlet/filters/XSSRequestWrapper.java
index b8b8d39919..54975964b0 100644
--- a/apps/jetty/java/src/net/i2p/servlet/filters/XSSRequestWrapper.java
+++ b/apps/jetty/java/src/net/i2p/servlet/filters/XSSRequestWrapper.java
@@ -84,6 +84,7 @@ public class XSSRequestWrapper extends HttpServletRequestWrapper {
      *  Parameter names starting with "nofilter_" will not be filtered.
      */
     @Override
+    @SuppressWarnings({"unchecked", "rawtypes"})
     public Map getParameterMap() {
         Map rv = new HashMap();
         for (Enumeration keys = getParameterNames(); keys.hasMoreElements(); ) {
diff --git a/apps/jetty/java/src/org/mortbay/servlet/MultiPartRequest.java b/apps/jetty/java/src/org/mortbay/servlet/MultiPartRequest.java
index 1c964b8f19..1cc3973fdb 100644
--- a/apps/jetty/java/src/org/mortbay/servlet/MultiPartRequest.java
+++ b/apps/jetty/java/src/org/mortbay/servlet/MultiPartRequest.java
@@ -219,6 +219,7 @@ public class MultiPartRequest
     }
 
     /* ------------------------------------------------------------ */
+    @SuppressWarnings("rawtypes")
     public Hashtable[] getMultipleParams(String name) 
     {
         List<Object> parts = _partMap.getValues(name);
diff --git a/apps/jetty/java/src/org/mortbay/util/ByteArrayPool.java b/apps/jetty/java/src/org/mortbay/util/ByteArrayPool.java
index 9a3f088fb6..0c98dded19 100644
--- a/apps/jetty/java/src/org/mortbay/util/ByteArrayPool.java
+++ b/apps/jetty/java/src/org/mortbay/util/ByteArrayPool.java
@@ -29,7 +29,7 @@ public class ByteArrayPool
     public static final int __POOL_SIZE=
         Integer.getInteger("org.mortbay.util.ByteArrayPool.pool_size",8).intValue();
     
-    public static final ThreadLocal __pools=new BAThreadLocal();
+    public static final ThreadLocal<byte[][]> __pools = new BAThreadLocal();
     public static final AtomicInteger __slot = new AtomicInteger();
     
     /* ------------------------------------------------------------ */
@@ -39,7 +39,7 @@ public class ByteArrayPool
      */
     public static byte[] getByteArray(int size)
     {
-        byte[][] pool = (byte[][])__pools.get();
+        byte[][] pool = __pools.get();
         boolean full=true;
         for (int i=pool.length;i-->0;)
         {
@@ -63,7 +63,7 @@ public class ByteArrayPool
     /* ------------------------------------------------------------ */
     public static byte[] getByteArrayAtLeast(int minSize)
     {
-        byte[][] pool = (byte[][])__pools.get();
+        byte[][] pool = __pools.get();
         for (int i=pool.length;i-->0;)
         {
             if (pool[i]!=null && pool[i].length>=minSize)
@@ -84,7 +84,7 @@ public class ByteArrayPool
         if (b==null)
             return;
         
-        byte[][] pool = (byte[][])__pools.get();
+        byte[][] pool = __pools.get();
         for (int i=pool.length;i-->0;)
         {
             if (pool[i]==null)
@@ -103,9 +103,10 @@ public class ByteArrayPool
     
     /* ------------------------------------------------------------ */
     /* ------------------------------------------------------------ */
-    private static final class BAThreadLocal extends ThreadLocal
+    private static final class BAThreadLocal extends ThreadLocal<byte[][]>
     {
-        protected Object initialValue()
+        @Override
+        protected byte[][] initialValue()
             {
                 return new byte[__POOL_SIZE][];
             }
diff --git a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java
index 45aa601b83..278a4e1200 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java
@@ -109,6 +109,7 @@ class MailCache {
 	 * @param mode CACHE_ONLY to not pull from pop server
 	 * @return An e-mail or null
 	 */
+        @SuppressWarnings({"unchecked", "rawtypes"})
 	public Mail getMail(String uidl, FetchMode mode) {
 		
 		Mail mail = null, newMail = null;
@@ -163,6 +164,7 @@ class MailCache {
 	 * @return true if any were fetched
 	 * @since 0.9.13
 	 */
+        @SuppressWarnings({"unchecked", "rawtypes"})
 	public boolean getMail(FetchMode mode) {
 		if (mode == FetchMode.CACHE_ONLY)
 			throw new IllegalArgumentException();
diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
index 5f6975bc51..9ff4b933b7 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
@@ -288,7 +288,7 @@ public class WebMail extends HttpServlet
 	 */
 	private static class SenderSorter extends SorterBase {
 
-		private final Comparator collator = Collator.getInstance();
+		private final Comparator<Object> collator = Collator.getInstance();
 
 		public SenderSorter( MailCache mailCache )
 		{
@@ -307,7 +307,7 @@ public class WebMail extends HttpServlet
 	 * @author susi
 	 */
 	private static class SubjectSorter extends SorterBase {
-		private final Comparator collator = Collator.getInstance();
+		private final Comparator<Object> collator = Collator.getInstance();
 
 		public SubjectSorter( MailCache mailCache )
 		{
@@ -2299,7 +2299,7 @@ public class WebMail extends HttpServlet
 	/**
 	 *  first prev next last
 	 */
-	private static void showPageButtons(PrintWriter out, Folder folder) {
+	private static void showPageButtons(PrintWriter out, Folder<?> folder) {
 		out.println(
 			"<br>" +
 			( folder.isFirstPage() ?
diff --git a/core/java/src/net/i2p/client/naming/MetaNamingService.java b/core/java/src/net/i2p/client/naming/MetaNamingService.java
index ffae355a57..5a4ebd275d 100644
--- a/core/java/src/net/i2p/client/naming/MetaNamingService.java
+++ b/core/java/src/net/i2p/client/naming/MetaNamingService.java
@@ -41,8 +41,8 @@ public class MetaNamingService extends DummyNamingService {
         while (tok.hasMoreTokens()) {
             try {
                 Class<?> cls = Class.forName(tok.nextToken());
-                Constructor<?> con = cls.getConstructor(new Class[] { I2PAppContext.class });
-                addNamingService((NamingService)con.newInstance(new Object[] { context }), false);
+                Constructor<?> con = cls.getConstructor(I2PAppContext.class);
+                addNamingService((NamingService)con.newInstance(), false);
             } catch (Exception ex) {
             }
         }
diff --git a/core/java/src/net/i2p/client/naming/NamingService.java b/core/java/src/net/i2p/client/naming/NamingService.java
index be9e598c21..78e04232d4 100644
--- a/core/java/src/net/i2p/client/naming/NamingService.java
+++ b/core/java/src/net/i2p/client/naming/NamingService.java
@@ -537,7 +537,7 @@ public abstract class NamingService {
         try {
             Class<?> cls = Class.forName(impl);
             Constructor<?> con = cls.getConstructor(I2PAppContext.class);
-            instance = (NamingService)con.newInstance(new Object[] { context });
+            instance = (NamingService)con.newInstance(context);
         } catch (Exception ex) {
             Log log = context.logManager().getLog(NamingService.class);
             // Blockfile may throw RuntimeException but HostsTxt won't
diff --git a/core/java/src/net/i2p/crypto/CryptoConstants.java b/core/java/src/net/i2p/crypto/CryptoConstants.java
index 94facd366b..b9e0327dd3 100644
--- a/core/java/src/net/i2p/crypto/CryptoConstants.java
+++ b/core/java/src/net/i2p/crypto/CryptoConstants.java
@@ -92,8 +92,8 @@ public class CryptoConstants {
         if (ECConstants.isBCAvailable()) {
             try {
                 Class<?> cls = Class.forName("org.bouncycastle.jce.spec.ElGamalParameterSpec");
-                Constructor<?> con = cls.getConstructor(new Class[] {BigInteger.class, BigInteger.class});
-                spec = (AlgorithmParameterSpec)con.newInstance(new Object[] {elgp, elgg});
+                Constructor<?> con = cls.getConstructor(BigInteger.class, BigInteger.class);
+                spec = (AlgorithmParameterSpec)con.newInstance(elgp, elgg);
                 //System.out.println("BC ElG spec loaded");
             } catch (Exception e) {
                 //System.out.println("BC ElG spec failed");
diff --git a/core/java/src/net/i2p/crypto/ECConstants.java b/core/java/src/net/i2p/crypto/ECConstants.java
index affe6e4e8b..d9b111e234 100644
--- a/core/java/src/net/i2p/crypto/ECConstants.java
+++ b/core/java/src/net/i2p/crypto/ECConstants.java
@@ -42,8 +42,8 @@ class ECConstants {
         if (Security.getProvider("BC") == null) {
             try {
                 Class<?> cls = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider");
-                Constructor<?> con = cls.getConstructor(new Class[0]);
-                Provider bc = (Provider)con.newInstance(new Object[0]);
+                Constructor<?> con = cls.getConstructor();
+                Provider bc = (Provider)con.newInstance();
                 Security.addProvider(bc);
                 log("Added BC provider");
                 loaded = true;
diff --git a/core/java/src/net/i2p/data/ByteArray.java b/core/java/src/net/i2p/data/ByteArray.java
index 1801b122e7..50670c760d 100644
--- a/core/java/src/net/i2p/data/ByteArray.java
+++ b/core/java/src/net/i2p/data/ByteArray.java
@@ -16,7 +16,7 @@ import java.io.Serializable;
  * maps, and the like.
  *
  */
-public class ByteArray implements Serializable, Comparable {
+public class ByteArray implements Serializable, Comparable<ByteArray> {
     private byte[] _data;
     private int _valid;
     private int _offset;
@@ -85,9 +85,8 @@ public class ByteArray implements Serializable, Comparable {
         return (llen == rlen) && DataHelper.eq(lhs, loff, rhs, roff, llen);
     }
     
-    public final int compareTo(Object obj) {
-        if (obj.getClass() != getClass()) throw new ClassCastException("invalid object: " + obj);
-        return DataHelper.compareTo(_data, ((ByteArray)obj).getData());
+    public final int compareTo(ByteArray ba) {
+        return DataHelper.compareTo(_data, ba.getData());
     }
     
     @Override
diff --git a/core/java/src/net/i2p/util/FileUtil.java b/core/java/src/net/i2p/util/FileUtil.java
index eeca4416fe..296030818d 100644
--- a/core/java/src/net/i2p/util/FileUtil.java
+++ b/core/java/src/net/i2p/util/FileUtil.java
@@ -300,9 +300,9 @@ public class FileUtil {
         if (!_failedOracle) {
             try {
                 Class<?> p200 = Class.forName("java.util.jar.Pack200", true, ClassLoader.getSystemClassLoader());
-                Method newUnpacker = p200.getMethod("newUnpacker", (Class[]) null);
+                Method newUnpacker = p200.getMethod("newUnpacker");
                 Object unpacker = newUnpacker.invoke(null,(Object[])  null);
-                Method unpack = unpacker.getClass().getMethod("unpack", new Class[] {InputStream.class, JarOutputStream.class});
+                Method unpack = unpacker.getClass().getMethod("unpack", InputStream.class, JarOutputStream.class);
                 // throws IOException
                 unpack.invoke(unpacker, new Object[] {in, out});
                 return;
@@ -321,9 +321,9 @@ public class FileUtil {
         if (!_failedApache) {
             try {
                 Class<?> p200 = Class.forName("org.apache.harmony.unpack200.Archive", true, ClassLoader.getSystemClassLoader());
-                Constructor<?> newUnpacker = p200.getConstructor(new Class[] {InputStream.class, JarOutputStream.class});
-                Object unpacker = newUnpacker.newInstance(new Object[] {in, out});
-                Method unpack = unpacker.getClass().getMethod("unpack", (Class[]) null);
+                Constructor<?> newUnpacker = p200.getConstructor(InputStream.class, JarOutputStream.class);
+                Object unpacker = newUnpacker.newInstance(in, out);
+                Method unpack = unpacker.getClass().getMethod("unpack");
                 // throws IOException or Pack200Exception
                 unpack.invoke(unpacker, (Object[]) null);
                 return;
-- 
GitLab