From c9d9a83f7384df57fff9651bee250465a222df24 Mon Sep 17 00:00:00 2001
From: dev <dev@welterde.de>
Date: Sun, 9 Nov 2008 10:09:01 +0000
Subject: [PATCH] finished core

---
 .../src/net/i2p/stat/BufferedStatLog.java     |  2 ++
 core/java/src/net/i2p/stat/Rate.java          |  2 ++
 core/java/src/net/i2p/stat/RateStat.java      |  3 ++
 core/java/src/net/i2p/time/NtpMessage.java    |  1 +
 core/java/src/net/i2p/time/Timestamper.java   |  1 +
 .../net/i2p/util/BufferedRandomSource.java    | 11 ++++++-
 core/java/src/net/i2p/util/ByteCache.java     |  1 +
 core/java/src/net/i2p/util/Clock.java         |  3 +-
 .../src/net/i2p/util/DecayingBloomFilter.java |  1 +
 core/java/src/net/i2p/util/EepGet.java        |  7 +++++
 .../src/net/i2p/util/EepGetScheduler.java     | 13 +++++++-
 core/java/src/net/i2p/util/EepPost.java       |  1 +
 .../src/net/i2p/util/EventDispatcherImpl.java | 24 +++++++++-----
 core/java/src/net/i2p/util/Executor.java      |  1 +
 .../src/net/i2p/util/FortunaRandomSource.java | 17 ++++++++--
 core/java/src/net/i2p/util/I2PThread.java     |  5 ++-
 core/java/src/net/i2p/util/Log.java           |  2 ++
 core/java/src/net/i2p/util/LogManager.java    |  1 +
 core/java/src/net/i2p/util/LogWriter.java     |  3 +-
 .../net/i2p/util/LookaheadInputStream.java    |  3 ++
 .../src/net/i2p/util/NativeBigInteger.java    |  3 ++
 .../src/net/i2p/util/OrderedProperties.java   | 31 +++++++++++++++++++
 .../src/net/i2p/util/PooledRandomSource.java  | 10 ++++++
 core/java/src/net/i2p/util/RandomSource.java  | 10 ++++++
 .../i2p/util/ResettableGZIPInputStream.java   |  3 ++
 .../i2p/util/ResettableGZIPOutputStream.java  |  5 +++
 .../i2p/util/ReusableGZIPOutputStream.java    |  1 +
 core/java/src/net/i2p/util/ShellCommand.java  |  4 +++
 core/java/src/net/i2p/util/SocketTimeout.java |  1 +
 29 files changed, 155 insertions(+), 15 deletions(-)

diff --git a/core/java/src/net/i2p/stat/BufferedStatLog.java b/core/java/src/net/i2p/stat/BufferedStatLog.java
index 7fed2d0904..5ad1024a42 100644
--- a/core/java/src/net/i2p/stat/BufferedStatLog.java
+++ b/core/java/src/net/i2p/stat/BufferedStatLog.java
@@ -51,6 +51,7 @@ public class BufferedStatLog implements StatLog {
         writer.start();
     }
     
+    @Override
     public void addData(String scope, String stat, long value, long duration) {
         if (DISABLE_LOGGING) return;
         if (!shouldLog(stat)) return;
@@ -122,6 +123,7 @@ public class BufferedStatLog implements StatLog {
     
     private class StatLogWriter implements Runnable {
         private SimpleDateFormat _fmt = new SimpleDateFormat("yyyyMMdd HH:mm:ss.SSS");
+        @Override
         public void run() {
             int writeStart = -1;
             int writeEnd = -1;
diff --git a/core/java/src/net/i2p/stat/Rate.java b/core/java/src/net/i2p/stat/Rate.java
index 6d4fed17a4..d4164c2b56 100644
--- a/core/java/src/net/i2p/stat/Rate.java
+++ b/core/java/src/net/i2p/stat/Rate.java
@@ -436,6 +436,7 @@ public class Rate {
         coalesce();
     }
 
+    @Override
     public boolean equals(Object obj) {
         if ((obj == null) || (obj.getClass() != Rate.class)) return false;
         if (obj == this) return true;
@@ -451,6 +452,7 @@ public class Rate {
                && _lifetimeTotalEventTime == r.getLifetimeTotalEventTime();
     }
 
+    @Override
     public String toString() {
         StringBuffer buf = new StringBuffer(2048);
         buf.append("\n\t total value: ").append(getLastTotalValue());
diff --git a/core/java/src/net/i2p/stat/RateStat.java b/core/java/src/net/i2p/stat/RateStat.java
index 44bf81df6d..329706040c 100644
--- a/core/java/src/net/i2p/stat/RateStat.java
+++ b/core/java/src/net/i2p/stat/RateStat.java
@@ -84,12 +84,14 @@ public class RateStat {
         return null;
     }
 
+    @Override
     public int hashCode() {
         return _statName.hashCode();
     }
 
     private final static String NL = System.getProperty("line.separator");
 
+    @Override
     public String toString() {
         StringBuffer buf = new StringBuffer(4096);
         buf.append(getGroupName()).append('.').append(getName()).append(": ").append(getDescription()).append('\n');
@@ -104,6 +106,7 @@ public class RateStat {
         return buf.toString();
     }
 
+    @Override
     public boolean equals(Object obj) {
         if ((obj == null) || (obj.getClass() != RateStat.class)) return false;
         RateStat rs = (RateStat) obj;
diff --git a/core/java/src/net/i2p/time/NtpMessage.java b/core/java/src/net/i2p/time/NtpMessage.java
index f7626b55b0..5db2d13905 100644
--- a/core/java/src/net/i2p/time/NtpMessage.java
+++ b/core/java/src/net/i2p/time/NtpMessage.java
@@ -328,6 +328,7 @@ public class NtpMessage {
     /**
      * Returns a string representation of a NtpMessage
      */
+    @Override
     public String toString() {
         String precisionStr = new DecimalFormat("0.#E0").format(Math.pow(2, precision));
         
diff --git a/core/java/src/net/i2p/time/Timestamper.java b/core/java/src/net/i2p/time/Timestamper.java
index 6758ab4660..35c5c01e89 100644
--- a/core/java/src/net/i2p/time/Timestamper.java
+++ b/core/java/src/net/i2p/time/Timestamper.java
@@ -110,6 +110,7 @@ public class Timestamper implements Runnable {
         } catch (InterruptedException ie) {}
     }
     
+    @Override
     public void run() {
         try { Thread.sleep(1000); } catch (InterruptedException ie) {}
         _log = _context.logManager().getLog(Timestamper.class);
diff --git a/core/java/src/net/i2p/util/BufferedRandomSource.java b/core/java/src/net/i2p/util/BufferedRandomSource.java
index 3c0082565e..dc975671a5 100644
--- a/core/java/src/net/i2p/util/BufferedRandomSource.java
+++ b/core/java/src/net/i2p/util/BufferedRandomSource.java
@@ -113,6 +113,7 @@ public class BufferedRandomSource extends RandomSource {
         }
     }
     
+    @Override
     public synchronized final void nextBytes(byte buf[]) { 
         int outOffset = 0;
         while (outOffset < buf.length) {
@@ -128,6 +129,7 @@ public class BufferedRandomSource extends RandomSource {
         }
     }
     
+    @Override
     public final int nextInt(int n) {
         if (n <= 0) return 0;
         int val = ((int)nextBits(countBits(n))) % n;
@@ -136,13 +138,15 @@ public class BufferedRandomSource extends RandomSource {
         else
             return val;
     }
-
+    
+    @Override
     public final int nextInt() { return nextInt(Integer.MAX_VALUE); }
         
     /**
      * Like the modified nextInt, nextLong(n) returns a random number from 0 through n,
      * including 0, excluding n.
      */
+    @Override
     public final long nextLong(long n) {
         if (n <= 0) return 0;
         long val = nextBits(countBits(n)) % n;
@@ -152,6 +156,7 @@ public class BufferedRandomSource extends RandomSource {
             return val;
     }
     
+    @Override
     public final long nextLong() { return nextLong(Long.MAX_VALUE); }
     
     static final int countBits(long val) {
@@ -172,22 +177,26 @@ public class BufferedRandomSource extends RandomSource {
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public final boolean nextBoolean() { 
         return nextBits(1) != 0;
     }
     
     private static final double DOUBLE_DENOMENATOR = (double)(1L << 53);
     /** defined per javadoc ( ((nextBits(26)<<27) + nextBits(27)) / (1 << 53)) */
+    @Override
     public final double nextDouble() { 
         long top = (((long)nextBits(26) << 27) + nextBits(27));
         return top / DOUBLE_DENOMENATOR;
     }
     private static final float FLOAT_DENOMENATOR = (float)(1 << 24);
     /** defined per javadoc (nextBits(24) / ((float)(1 << 24)) ) */
+    @Override
     public float nextFloat() { 
         long top = nextBits(24);
         return top / FLOAT_DENOMENATOR;
     }
+    @Override
     public double nextGaussian() { 
         // bah, unbuffered
         return super.nextGaussian(); 
diff --git a/core/java/src/net/i2p/util/ByteCache.java b/core/java/src/net/i2p/util/ByteCache.java
index aadc721aa4..c8b4d51a36 100644
--- a/core/java/src/net/i2p/util/ByteCache.java
+++ b/core/java/src/net/i2p/util/ByteCache.java
@@ -108,6 +108,7 @@ public final class ByteCache {
     }
     
     private class Cleanup implements SimpleTimer.TimedEvent {
+    	@Override
         public void timeReached() {
             if (System.currentTimeMillis() - _lastOverflow > EXPIRE_PERIOD) {
                 // we haven't exceeded the cache size in a few minutes, so lets
diff --git a/core/java/src/net/i2p/util/Clock.java b/core/java/src/net/i2p/util/Clock.java
index 2ac0a0cab2..ba0daa786a 100644
--- a/core/java/src/net/i2p/util/Clock.java
+++ b/core/java/src/net/i2p/util/Clock.java
@@ -109,7 +109,8 @@ public class Clock implements Timestamper.UpdateListener {
     }
     
     public boolean getUpdatedSuccessfully() { return _alreadyChanged; }
-
+    
+    @Override
     public void setNow(long realTime) {
         long diff = realTime - System.currentTimeMillis();
         setOffset(diff);
diff --git a/core/java/src/net/i2p/util/DecayingBloomFilter.java b/core/java/src/net/i2p/util/DecayingBloomFilter.java
index 164c8e4534..0d9275b5cd 100644
--- a/core/java/src/net/i2p/util/DecayingBloomFilter.java
+++ b/core/java/src/net/i2p/util/DecayingBloomFilter.java
@@ -206,6 +206,7 @@ public class DecayingBloomFilter {
     }
     
     private class DecayEvent implements SimpleTimer.TimedEvent {
+    	@Override
         public void timeReached() {
             if (_keepDecaying) {
                 decay();
diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java
index 468fefa79d..bf8acbea37 100644
--- a/core/java/src/net/i2p/util/EepGet.java
+++ b/core/java/src/net/i2p/util/EepGet.java
@@ -262,6 +262,7 @@ public class EepGet {
             _startedOn = _lastComplete;
             _firstTime = true;
         }
+        @Override
         public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) {
             if (_firstTime) {
                 if (alreadyTransferred > 0) {
@@ -318,6 +319,7 @@ public class EepGet {
                 }
             }
         }
+        @Override
         public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified) {
             long transferred;
             if (_firstTime)
@@ -356,6 +358,7 @@ public class EepGet {
                 System.out.println(buf.toString());
             }
         }
+        @Override
         public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) {
             System.out.println();
             System.out.println("** " + new Date());
@@ -366,6 +369,7 @@ public class EepGet {
             _previousWritten += _written;
             _written = 0;
         }
+        @Override
         public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) {
             System.out.println("== " + new Date());
             System.out.println("== Transfer of " + url + " failed after " + currentAttempt + " attempts");
@@ -382,7 +386,9 @@ public class EepGet {
             buf.append("KBps");
             System.out.println(buf.toString());
         }
+        @Override
         public void attempting(String url) {}
+        @Override
         public void headerReceived(String url, int currentAttempt, String key, String val) {}
     }
     
@@ -418,6 +424,7 @@ public class EepGet {
                 timeout = new SocketTimeout(_fetchHeaderTimeout);
             final SocketTimeout stimeout = timeout; // ugly
             timeout.setTimeoutCommand(new Runnable() {
+            	@Override
                 public void run() {
                     if (_log.shouldLog(Log.DEBUG))
                         _log.debug("timeout reached on " + _url + ": " + stimeout);
diff --git a/core/java/src/net/i2p/util/EepGetScheduler.java b/core/java/src/net/i2p/util/EepGetScheduler.java
index c295196b3d..2b28677839 100644
--- a/core/java/src/net/i2p/util/EepGetScheduler.java
+++ b/core/java/src/net/i2p/util/EepGetScheduler.java
@@ -29,7 +29,12 @@ public class EepGetScheduler implements EepGet.StatusListener {
     }
     
     public void fetch() {
-        I2PThread t = new I2PThread(new Runnable() { public void run() { fetchNext(); } }, "EepGetScheduler");
+        I2PThread t = new I2PThread(new Runnable() {
+        	@Override
+        	public void run() {
+        		fetchNext();
+        	}
+        }, "EepGetScheduler");
         t.setDaemon(true);
         t.start();
     }
@@ -62,24 +67,30 @@ public class EepGetScheduler implements EepGet.StatusListener {
         get.fetch();
     }
     
+    @Override
     public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) {
         _listener.attemptFailed(url, bytesTransferred, bytesRemaining, currentAttempt, numRetries, cause);
     }
     
+    @Override
     public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) {
         _listener.bytesTransferred(alreadyTransferred, currentWrite, bytesTransferred, bytesRemaining, url);
     }
     
+    @Override
     public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified) {
         _listener.transferComplete(alreadyTransferred, bytesTransferred, bytesRemaining, url, outputFile, notModified);
         fetchNext();
     }
     
+    @Override
     public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) {
         _listener.transferFailed(url, bytesTransferred, bytesRemaining, currentAttempt);
         fetchNext();
     }
+    @Override
     public void attempting(String url) { _listener.attempting(url); }
     
+    @Override
     public void headerReceived(String url, int attemptNum, String key, String val) {}
 }
diff --git a/core/java/src/net/i2p/util/EepPost.java b/core/java/src/net/i2p/util/EepPost.java
index 50929f3cf5..a72e979245 100644
--- a/core/java/src/net/i2p/util/EepPost.java
+++ b/core/java/src/net/i2p/util/EepPost.java
@@ -73,6 +73,7 @@ public class EepPost {
             _fields = fields;
             _onCompletion = onCompletion;
         }
+        @Override
         public void run() {
             if (_log.shouldLog(Log.DEBUG)) _log.debug("Running the post task");
             Socket s = null;
diff --git a/core/java/src/net/i2p/util/EventDispatcherImpl.java b/core/java/src/net/i2p/util/EventDispatcherImpl.java
index b82682b885..9a82d6a1df 100644
--- a/core/java/src/net/i2p/util/EventDispatcherImpl.java
+++ b/core/java/src/net/i2p/util/EventDispatcherImpl.java
@@ -37,11 +37,13 @@ public class EventDispatcherImpl implements EventDispatcher {
     private boolean _ignore = false;
     private HashMap _events = new HashMap(4);
     private ArrayList _attached = new ArrayList();
-
+    
+    @Override
     public EventDispatcher getEventDispatcher() {
         return this;
     }
-
+    
+    @Override
     public void attachEventDispatcher(EventDispatcher ev) {
         if (ev == null) return;
         synchronized (_attached) {
@@ -49,7 +51,8 @@ public class EventDispatcherImpl implements EventDispatcher {
             _attached.add(ev);
         }
     }
-
+    
+    @Override
     public void detachEventDispatcher(EventDispatcher ev) {
         if (ev == null) return;
         synchronized (_attached) {
@@ -62,7 +65,8 @@ public class EventDispatcherImpl implements EventDispatcher {
             }
         }
     }
-
+    
+    @Override
     public void notifyEvent(String eventName, Object args) {
         if (_ignore) return;
         if (args == null) {
@@ -84,7 +88,8 @@ public class EventDispatcherImpl implements EventDispatcher {
             }
         }
     }
-
+    
+    @Override
     public Object getEventValue(String name) {
         if (_ignore) return null;
         Object val;
@@ -106,7 +111,8 @@ public class EventDispatcherImpl implements EventDispatcher {
 
         return set;
     }
-
+    
+    @Override
     public void ignoreEvents() {
         _ignore = true;
         synchronized (_events) {
@@ -114,11 +120,13 @@ public class EventDispatcherImpl implements EventDispatcher {
         }
         _events = null;
     }
-
+    
+    @Override
     public void unIgnoreEvents() {
         _ignore = false;
     }
-
+    
+    @Override
     public Object waitEventValue(String name) {
         if (_ignore) return null;
         Object val;
diff --git a/core/java/src/net/i2p/util/Executor.java b/core/java/src/net/i2p/util/Executor.java
index fb8757f4fe..1b8fa17bb0 100644
--- a/core/java/src/net/i2p/util/Executor.java
+++ b/core/java/src/net/i2p/util/Executor.java
@@ -16,6 +16,7 @@ class Executor implements Runnable {
         runn = x;
     }
 
+    @Override
     public void run() {
         while(runn.getAnswer()) {
             SimpleTimer.TimedEvent evt = null;
diff --git a/core/java/src/net/i2p/util/FortunaRandomSource.java b/core/java/src/net/i2p/util/FortunaRandomSource.java
index 04d4305a35..8f499935b9 100644
--- a/core/java/src/net/i2p/util/FortunaRandomSource.java
+++ b/core/java/src/net/i2p/util/FortunaRandomSource.java
@@ -44,6 +44,7 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
         _haveNextGaussian = false;
     }
     
+    @Override
     public synchronized void setSeed(byte buf[]) {
       _fortuna.addRandomBytes(buf);
     }
@@ -56,6 +57,7 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
      * thats what it has been used for.
      *
      */
+    @Override
     public int nextInt(int n) {
         if (n == 0) return 0;
         int rv = signedNextInt(n);
@@ -64,7 +66,8 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
         rv %= n;
         return rv;
     }
-
+    
+    @Override
     public int nextInt() { return signedNextInt(Integer.MAX_VALUE); }
 
     /**
@@ -107,6 +110,7 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
      * Like the modified nextInt, nextLong(n) returns a random number from 0 through n,
      * including 0, excluding n.
      */
+    @Override
     public long nextLong(long n) {
         if (n == 0) return 0;
         long rv = signedNextLong(n);
@@ -116,6 +120,7 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
         return rv;
     }
     
+    @Override
     public long nextLong() { return signedNextLong(Long.MAX_VALUE); }
 
     /**
@@ -125,12 +130,14 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
         return ((long)nextBits(32) << 32) + nextBits(32);
     }
 
+    @Override
     public synchronized boolean nextBoolean() { 
         // wasteful, might be worth caching the boolean byte later
         byte val = _fortuna.nextByte();
         return ((val & 0x01) == 1);
     }
 
+    @Override
     public synchronized void nextBytes(byte buf[]) { 
         _fortuna.nextBytes(buf);
     }
@@ -138,18 +145,21 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
     /**
      * Implementation from sun's java.util.Random javadocs 
      */
+    @Override
     public double nextDouble() { 
         return (((long)nextBits(26) << 27) + nextBits(27)) / (double)(1L << 53);
     }
     /**
      * Implementation from sun's java.util.Random javadocs 
      */
+    @Override
     public float nextFloat() { 
         return nextBits(24) / ((float)(1 << 24));
     }
     /**
      * Implementation from sun's java.util.Random javadocs 
      */
+    @Override
     public synchronized double nextGaussian() { 
         if (_haveNextGaussian) {
             _haveNextGaussian = false;
@@ -185,14 +195,17 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
         return (int)rv;
     }
     
+    @Override
     public EntropyHarvester harvester() { return this; }
  
     /** reseed the fortuna */
+    @Override
     public synchronized void feedEntropy(String source, long data, int bitoffset, int bits) {
         _fortuna.addRandomByte((byte)(data & 0xFF));
     }
  
-    /** reseed the fortuna */   
+    /** reseed the fortuna */
+    @Override
     public synchronized void feedEntropy(String source, byte[] data, int offset, int len) {
         _fortuna.addRandomBytes(data, offset, len);
     }
diff --git a/core/java/src/net/i2p/util/I2PThread.java b/core/java/src/net/i2p/util/I2PThread.java
index f33d6f08d5..ac7208c103 100644
--- a/core/java/src/net/i2p/util/I2PThread.java
+++ b/core/java/src/net/i2p/util/I2PThread.java
@@ -62,7 +62,8 @@ public class I2PThread extends Thread {
         if (_log.shouldLog(level))
             _log.log(level, msg, t);
     }
-
+    
+    @Override
     public void run() {
         _name = Thread.currentThread().getName();
         log(Log.DEBUG, "New thread started: " + _name, _createdBy);
@@ -81,6 +82,7 @@ public class I2PThread extends Thread {
         log(Log.DEBUG, "Thread finished gracefully: " + _name);
     }
     
+    @Override
     protected void finalize() throws Throwable {
         log(Log.DEBUG, "Thread finalized: " + _name);
         super.finalize();
@@ -109,6 +111,7 @@ public class I2PThread extends Thread {
 
     public static void main(String args[]) {
         I2PThread t = new I2PThread(new Runnable() {
+        	@Override
             public void run() {
                 throw new NullPointerException("blah");
             }
diff --git a/core/java/src/net/i2p/util/Log.java b/core/java/src/net/i2p/util/Log.java
index 7293c5174b..54330a7593 100644
--- a/core/java/src/net/i2p/util/Log.java
+++ b/core/java/src/net/i2p/util/Log.java
@@ -183,9 +183,11 @@ public class Log {
             _scopeClass = cls;
             _scopeCache = getScope(name, cls);
         }
+        @Override
         public int hashCode() {
             return _scopeCache.hashCode();
         }
+        @Override
         public boolean equals(Object obj) {
             if (obj == null) throw new NullPointerException("Null object scope?");
             if (obj instanceof LogScope) {
diff --git a/core/java/src/net/i2p/util/LogManager.java b/core/java/src/net/i2p/util/LogManager.java
index 0d2280b41d..1f957515ca 100644
--- a/core/java/src/net/i2p/util/LogManager.java
+++ b/core/java/src/net/i2p/util/LogManager.java
@@ -655,6 +655,7 @@ public class LogManager {
         public ShutdownHook() {
             _id = ++__id;
         }
+        @Override
         public void run() {
             setName("Log " + _id + " shutdown ");
             shutdown();
diff --git a/core/java/src/net/i2p/util/LogWriter.java b/core/java/src/net/i2p/util/LogWriter.java
index 9a4598fcf3..a2612d1c4d 100644
--- a/core/java/src/net/i2p/util/LogWriter.java
+++ b/core/java/src/net/i2p/util/LogWriter.java
@@ -43,7 +43,8 @@ class LogWriter implements Runnable {
     public void stopWriting() {
         _write = false;
     }
-
+    
+    @Override
     public void run() {
         _write = true;
         try {
diff --git a/core/java/src/net/i2p/util/LookaheadInputStream.java b/core/java/src/net/i2p/util/LookaheadInputStream.java
index cdce06df27..7b23d26aee 100644
--- a/core/java/src/net/i2p/util/LookaheadInputStream.java
+++ b/core/java/src/net/i2p/util/LookaheadInputStream.java
@@ -38,6 +38,7 @@ public class LookaheadInputStream extends FilterInputStream {
         boolean f = true;
     }
     
+    @Override
     public int read() throws IOException {
         if (_eofReached) 
             return -1; //throw new IOException("Already past the EOF");
@@ -52,9 +53,11 @@ public class LookaheadInputStream extends FilterInputStream {
         if (rv < 0) rv += 256;
         return rv;
     }
+    @Override
     public int read(byte buf[]) throws IOException {
         return read(buf, 0, buf.length);
     }
+    @Override
     public int read(byte buf[], int off, int len) throws IOException {
         if (_eofReached) 
             return -1;
diff --git a/core/java/src/net/i2p/util/NativeBigInteger.java b/core/java/src/net/i2p/util/NativeBigInteger.java
index 7132086955..7a64e24e42 100644
--- a/core/java/src/net/i2p/util/NativeBigInteger.java
+++ b/core/java/src/net/i2p/util/NativeBigInteger.java
@@ -221,18 +221,21 @@ public class NativeBigInteger extends BigInteger {
         this(integer.toByteArray());
     }
 
+    @Override
     public BigInteger modPow(BigInteger exponent, BigInteger m) {
         if (_nativeOk)
             return new NativeBigInteger(nativeModPow(toByteArray(), exponent.toByteArray(), m.toByteArray()));
         else
             return super.modPow(exponent, m);
     }
+    @Override
     public byte[] toByteArray(){
         if(cachedBa == null) //Since we are immutable it is safe to never update the cached ba after it has initially been generated
             cachedBa = super.toByteArray();
         return cachedBa;
     }
     
+    @Override
     public double doubleValue() {
         if (_nativeOk)
             return nativeDoubleValue(toByteArray());
diff --git a/core/java/src/net/i2p/util/OrderedProperties.java b/core/java/src/net/i2p/util/OrderedProperties.java
index 98c58a3f2e..88528e8bfc 100644
--- a/core/java/src/net/i2p/util/OrderedProperties.java
+++ b/core/java/src/net/i2p/util/OrderedProperties.java
@@ -48,22 +48,26 @@ public class OrderedProperties extends Properties {
         _data = new HashMap();
     }
 
+    @Override
     public boolean contains(Object value) {
         return containsValue(value);
     }
 
+    @Override
     public boolean containsKey(Object key) {
         synchronized (_lock) {
             return _data.containsKey(key);
         }
     }
 
+    @Override
     public boolean containsValue(Object value) {
         synchronized (_lock) {
             return _data.containsValue(value);
         }
     }
 
+    @Override
     public boolean equals(Object obj) {
         if ((obj != null) && (obj instanceof OrderedProperties)) {
             synchronized (_lock) {
@@ -74,20 +78,24 @@ public class OrderedProperties extends Properties {
         return false;
     }
 
+    @Override
     public int hashCode() {
         synchronized (_lock) {
             return _data.hashCode();
         }
     }
 
+    @Override
     public boolean isEmpty() {
         return size() == 0;
     }
 
+    @Override
     public String getProperty(String key) {
         return getProperty((Object) key);
     }
 
+    @Override
     public Object get(Object key) {
         return getProperty(key);
     }
@@ -102,6 +110,7 @@ public class OrderedProperties extends Properties {
         }
     }
 
+    @Override
     public Object setProperty(String key, String val) {
         if ((key == null) || (val == null)) throw new IllegalArgumentException("Null values are not supported");
         synchronized (_lock) {
@@ -111,6 +120,7 @@ public class OrderedProperties extends Properties {
         }
     }
 
+    @Override
     public Object put(Object key, Object val) {
         if ((key == null) || (val == null)) throw new NullPointerException("Null values or keys are not allowed");
         if (!(key instanceof String) || !(val instanceof String))
@@ -118,6 +128,7 @@ public class OrderedProperties extends Properties {
         return setProperty((String) key, (String) val);
     }
 
+    @Override
     public void putAll(Map data) {
         if (data == null) return;
         for (Iterator iter = data.entrySet().iterator(); iter.hasNext();) {
@@ -128,6 +139,7 @@ public class OrderedProperties extends Properties {
         }
     }
 
+    @Override
     public Object clone() {
         synchronized (_lock) {
             OrderedProperties rv = new OrderedProperties();
@@ -136,6 +148,7 @@ public class OrderedProperties extends Properties {
         }
     }
 
+    @Override
     public void clear() {
         synchronized (_lock) {
             _order.clear();
@@ -143,12 +156,14 @@ public class OrderedProperties extends Properties {
         }
     }
 
+    @Override
     public int size() {
         synchronized (_lock) {
             return _order.size();
         }
     }
 
+    @Override
     public Object remove(Object key) {
         synchronized (_lock) {
             _order.remove(key);
@@ -157,18 +172,21 @@ public class OrderedProperties extends Properties {
         }
     }
 
+    @Override
     public Set keySet() {
         synchronized (_lock) {
             return Collections.unmodifiableSortedSet((TreeSet) _order.clone());
         }
     }
 
+    @Override
     public Set entrySet() {
         synchronized (_lock) {
             return Collections.unmodifiableSet(buildEntrySet((TreeSet) _order.clone()));
         }
     }
 
+    @Override
     public Collection values() {
         synchronized (_lock) {
             Collection values = new ArrayList(_data.size());
@@ -179,28 +197,35 @@ public class OrderedProperties extends Properties {
         }
     }
 
+    @Override
     public Enumeration elements() {
         return Collections.enumeration(values());
     }
 
+    @Override
     public Enumeration keys() {
         return Collections.enumeration(keySet());
     }
 
+    @Override
     public Enumeration propertyNames() {
         return Collections.enumeration(keySet());
     }
 
+    @Override
     public void list(PrintStream out) { // nop
     }
 
+    @Override
     public void list(PrintWriter out) { // nop
     }
 
+    @Override
     public void load(InputStream in) { // nop
     }
 
     //public void save(OutputStream out, String header) {}
+    @Override
     public void store(OutputStream out, String header) { // nop
     }
 
@@ -223,20 +248,24 @@ public class OrderedProperties extends Properties {
             _value = val;
         }
 
+        @Override
         public Object getKey() {
             return _key;
         }
 
+        @Override
         public Object getValue() {
             return _value;
         }
 
+        @Override
         public Object setValue(Object value) {
             Object old = _value;
             _value = value;
             return old;
         }
 
+        @Override
         public int compareTo(Object o) {
             if (o == null) return -1;
             if (o instanceof StringMapEntry) return ((String) getKey()).compareTo((String)((StringMapEntry) o).getKey());
@@ -244,6 +273,7 @@ public class OrderedProperties extends Properties {
             return -2;
         }
 
+        @Override
         public boolean equals(Object o) {
             if (o == null) return false;
             if (!(o instanceof StringMapEntry)) return false;
@@ -329,6 +359,7 @@ public class OrderedProperties extends Properties {
             _props = props;
         }
 
+        @Override
         public void run() {
             int numRuns = 1000;
             _log.debug("Begin thrashing " + numRuns + " times");
diff --git a/core/java/src/net/i2p/util/PooledRandomSource.java b/core/java/src/net/i2p/util/PooledRandomSource.java
index 5a6bb7bddf..29ee8ba053 100644
--- a/core/java/src/net/i2p/util/PooledRandomSource.java
+++ b/core/java/src/net/i2p/util/PooledRandomSource.java
@@ -89,6 +89,7 @@ public class PooledRandomSource extends RandomSource {
      * thats what it has been used for.
      *
      */
+    @Override
     public int nextInt(int n) {
         RandomSource prng = pickPRNG();
         synchronized (prng) {
@@ -100,6 +101,7 @@ public class PooledRandomSource extends RandomSource {
      * Like the modified nextInt, nextLong(n) returns a random number from 0 through n,
      * including 0, excluding n.
      */
+    @Override
     public long nextLong(long n) {
         RandomSource prng = pickPRNG();
         synchronized (prng) {
@@ -111,6 +113,7 @@ public class PooledRandomSource extends RandomSource {
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public boolean nextBoolean() { 
         RandomSource prng = pickPRNG();
         synchronized (prng) {
@@ -121,6 +124,7 @@ public class PooledRandomSource extends RandomSource {
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public void nextBytes(byte buf[]) { 
         RandomSource prng = pickPRNG();
         synchronized (prng) {
@@ -131,6 +135,7 @@ public class PooledRandomSource extends RandomSource {
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public double nextDouble() { 
         RandomSource prng = pickPRNG();
         synchronized (prng) {
@@ -141,6 +146,7 @@ public class PooledRandomSource extends RandomSource {
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public float nextFloat() { 
         RandomSource prng = pickPRNG();
         synchronized (prng) {
@@ -151,6 +157,7 @@ public class PooledRandomSource extends RandomSource {
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public double nextGaussian() { 
         RandomSource prng = pickPRNG();
         synchronized (prng) {
@@ -161,6 +168,7 @@ public class PooledRandomSource extends RandomSource {
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public int nextInt() { 
         RandomSource prng = pickPRNG();
         synchronized (prng) {
@@ -171,6 +179,7 @@ public class PooledRandomSource extends RandomSource {
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public long nextLong() { 
         RandomSource prng = pickPRNG();
         synchronized (prng) {
@@ -178,6 +187,7 @@ public class PooledRandomSource extends RandomSource {
         }
     }
     
+    @Override
     public EntropyHarvester harvester() { 
         RandomSource prng = pickPRNG();
         return prng.harvester();
diff --git a/core/java/src/net/i2p/util/RandomSource.java b/core/java/src/net/i2p/util/RandomSource.java
index e8a0a31e71..81a5baef40 100644
--- a/core/java/src/net/i2p/util/RandomSource.java
+++ b/core/java/src/net/i2p/util/RandomSource.java
@@ -49,6 +49,7 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
      * thats what it has been used for.
      *
      */
+    @Override
     public int nextInt(int n) {
         if (n == 0) return 0;
         int val = super.nextInt(n);
@@ -72,45 +73,54 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public boolean nextBoolean() { return super.nextBoolean(); }
     /**
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public void nextBytes(byte buf[]) { super.nextBytes(buf); }
     /**
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public double nextDouble() { return super.nextDouble(); }
     /**
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public float nextFloat() { return super.nextFloat(); }
     /**
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public double nextGaussian() { return super.nextGaussian(); }
     /**
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public int nextInt() { return super.nextInt(); }
     /**
      * override as synchronized, for those JVMs that don't always pull via
      * nextBytes (cough ibm)
      */
+    @Override
     public long nextLong() { return super.nextLong(); }
     
     public EntropyHarvester harvester() { return _entropyHarvester; }
  
+    @Override
     public void feedEntropy(String source, long data, int bitoffset, int bits) {
         if (bitoffset == 0)
             setSeed(data);
     }
     
+    @Override
     public void feedEntropy(String source, byte[] data, int offset, int len) {
         if ( (offset == 0) && (len == data.length) ) {
             setSeed(data);
diff --git a/core/java/src/net/i2p/util/ResettableGZIPInputStream.java b/core/java/src/net/i2p/util/ResettableGZIPInputStream.java
index 5832a81741..41e43407e7 100644
--- a/core/java/src/net/i2p/util/ResettableGZIPInputStream.java
+++ b/core/java/src/net/i2p/util/ResettableGZIPInputStream.java
@@ -60,6 +60,7 @@ public class ResettableGZIPInputStream extends InflaterInputStream {
         verifyHeader();
     }
     
+    @Override
     public int read() throws IOException {
         if (_complete) {
             // shortcircuit so the inflater doesn't try to refill 
@@ -73,9 +74,11 @@ public class ResettableGZIPInputStream extends InflaterInputStream {
             return _buf1[0];
     }
     
+    @Override
     public int read(byte buf[]) throws IOException {
         return read(buf, 0, buf.length);
     }
+    @Override
     public int read(byte buf[], int off, int len) throws IOException {
         if (_complete) {
             // shortcircuit so the inflater doesn't try to refill 
diff --git a/core/java/src/net/i2p/util/ResettableGZIPOutputStream.java b/core/java/src/net/i2p/util/ResettableGZIPOutputStream.java
index d7f578da79..a9aa9cc3ce 100644
--- a/core/java/src/net/i2p/util/ResettableGZIPOutputStream.java
+++ b/core/java/src/net/i2p/util/ResettableGZIPOutputStream.java
@@ -91,25 +91,30 @@ public class ResettableGZIPOutputStream extends DeflaterOutputStream {
         }
     }
     
+    @Override
     public void close() throws IOException {
         finish();
         super.close();
     }
+    @Override
     public void finish() throws IOException {
         ensureHeaderIsWritten();
         super.finish();
         writeFooter();
     }
     
+    @Override
     public void write(int b) throws IOException {
         ensureHeaderIsWritten();
         _crc32.update(b);
         _writtenSize++;
         super.write(b);
     }
+    @Override
     public void write(byte buf[]) throws IOException {
         write(buf, 0, buf.length);
     }
+    @Override
     public void write(byte buf[], int off, int len) throws IOException {
         ensureHeaderIsWritten();
         _crc32.update(buf, off, len);
diff --git a/core/java/src/net/i2p/util/ReusableGZIPOutputStream.java b/core/java/src/net/i2p/util/ReusableGZIPOutputStream.java
index 49cf34084a..544c85ed27 100644
--- a/core/java/src/net/i2p/util/ReusableGZIPOutputStream.java
+++ b/core/java/src/net/i2p/util/ReusableGZIPOutputStream.java
@@ -47,6 +47,7 @@ public class ReusableGZIPOutputStream extends ResettableGZIPOutputStream {
         _buffer = (ByteArrayOutputStream)out;
     }
     /** clear the data so we can start again afresh */
+    @Override
     public void reset() { 
         super.reset();
         _buffer.reset();
diff --git a/core/java/src/net/i2p/util/ShellCommand.java b/core/java/src/net/i2p/util/ShellCommand.java
index 3866dbd2b0..36f0dfd210 100644
--- a/core/java/src/net/i2p/util/ShellCommand.java
+++ b/core/java/src/net/i2p/util/ShellCommand.java
@@ -59,6 +59,7 @@ public class ShellCommand {
             this.consumeOutput = consumeOutput;
         }
 
+        @Override
         public void run() {
             _commandSuccessful = execute(shellCommand, consumeOutput, WAIT_FOR_EXIT_STATUS);
             if (_isTimerRunning) {
@@ -90,6 +91,7 @@ public class ShellCommand {
             this.bufferedReader = new BufferedReader(inputStreamReader);
         }
 
+        @Override
         public void run() {
 
             String streamData;
@@ -123,6 +125,7 @@ public class ShellCommand {
             this.bufferedReader = new BufferedReader(inputStreamReader);
         }
 
+        @Override
         public void run() {
 
             char[] buffer    = new char[BUFFER_SIZE];
@@ -159,6 +162,7 @@ public class ShellCommand {
             this.bufferedWriter = new BufferedWriter(outputStreamWriter);
         }
 
+        @Override
         public void run() {
 
             String input;
diff --git a/core/java/src/net/i2p/util/SocketTimeout.java b/core/java/src/net/i2p/util/SocketTimeout.java
index 18a5db3ded..65238dd0dc 100644
--- a/core/java/src/net/i2p/util/SocketTimeout.java
+++ b/core/java/src/net/i2p/util/SocketTimeout.java
@@ -56,6 +56,7 @@ public class SocketTimeout implements SimpleTimer.TimedEvent {
     
     private static final SimpleDateFormat _fmt = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss.SSS");
     private static String ts(long when) { synchronized (_fmt) { return _fmt.format(new Date(when)); } }
+    @Override
     public String toString() {
         StringBuffer buf = new StringBuffer();
         buf.append("started on ");
-- 
GitLab