From bacce17990b7b50f5e7690b4640dd8dc1146b12c Mon Sep 17 00:00:00 2001 From: str4d <str4d@mail.i2p> Date: Wed, 20 Nov 2013 02:46:24 +0000 Subject: [PATCH] Router: type arguments, unused imports --- .../i2p/data/i2np/DatabaseLookupMessage.java | 10 ++-- .../data/i2np/DatabaseSearchReplyMessage.java | 2 +- .../i2p/data/i2np/I2NPMessageException.java | 1 - .../net/i2p/data/i2np/I2NPMessageImpl.java | 2 +- router/java/src/net/i2p/router/Banlist.java | 10 ++-- router/java/src/net/i2p/router/Blocklist.java | 18 +++---- .../net/i2p/router/ClientManagerFacade.java | 2 +- .../src/net/i2p/router/CommSystemFacade.java | 6 +-- .../src/net/i2p/router/InNetMessagePool.java | 14 ++--- .../java/src/net/i2p/router/KeyManager.java | 4 +- .../src/net/i2p/router/MessageHistory.java | 2 +- .../java/src/net/i2p/router/MultiRouter.java | 2 - .../net/i2p/router/NetworkDatabaseFacade.java | 4 +- .../src/net/i2p/router/OutNetMessage.java | 8 +-- router/java/src/net/i2p/router/Router.java | 9 +--- .../java/src/net/i2p/router/RouterClock.java | 2 +- .../src/net/i2p/router/RouterContext.java | 5 +- .../router/client/ClientConnectionRunner.java | 8 ++- .../net/i2p/router/client/ClientManager.java | 15 +++--- .../client/ClientManagerFacadeImpl.java | 3 +- .../i2p/router/client/ClientWriterRunner.java | 2 +- .../client/QueuedClientConnectionRunner.java | 1 - .../i2p/router/client/RequestLeaseSetJob.java | 1 - .../client/SSLClientListenerRunner.java | 8 +-- .../dummy/DummyNetworkDatabaseFacade.java | 6 +-- .../net/i2p/router/dummy/VMCommSystem.java | 2 +- .../src/net/i2p/router/message/CloveSet.java | 2 +- .../net/i2p/router/message/GarlicConfig.java | 2 +- .../router/message/GarlicMessageBuilder.java | 2 +- .../net/i2p/router/message/OutboundCache.java | 11 ++-- .../OutboundClientMessageOneShotJob.java | 5 +- .../HandleDatabaseLookupMessageJob.java | 1 - .../networkdb/kademlia/ExpireLeasesJob.java | 2 +- .../networkdb/kademlia/ExpireRoutersJob.java | 1 - .../router/networkdb/kademlia/ExploreJob.java | 2 +- .../kademlia/ExploreKeySelectorJob.java | 12 ++--- .../kademlia/FloodOnlySearchJob.java | 6 +-- .../networkdb/kademlia/FloodSearchJob.java | 4 +- .../networkdb/kademlia/FloodThrottler.java | 2 +- .../FloodfillNetworkDatabaseFacade.java | 9 ++-- .../kademlia/FloodfillPeerSelector.java | 30 +++++------ .../kademlia/FloodfillVerifyStoreJob.java | 4 +- .../networkdb/kademlia/HarvesterJob.java | 20 +++---- .../kademlia/IterativeSearchJob.java | 15 +++--- .../networkdb/kademlia/KBucketImpl.java | 6 +-- .../router/networkdb/kademlia/KBucketSet.java | 6 +-- .../KademliaNetworkDatabaseFacade.java | 26 ++++----- .../router/networkdb/kademlia/LocalHash.java | 8 +-- .../networkdb/kademlia/LookupThrottler.java | 2 +- .../networkdb/kademlia/MessageWrapper.java | 4 +- .../kademlia/NegativeLookupCache.java | 2 +- .../networkdb/kademlia/PeerSelector.java | 8 +-- .../kademlia/PersistentDataStore.java | 2 +- .../router/networkdb/kademlia/SearchJob.java | 26 ++++----- .../networkdb/kademlia/SearchState.java | 28 +++++----- .../networkdb/kademlia/StartExplorersJob.java | 2 +- .../router/networkdb/kademlia/StoreJob.java | 2 +- .../router/networkdb/kademlia/StoreState.java | 13 ++--- .../kademlia/TransientDataStore.java | 2 +- .../i2p/router/networkdb/reseed/Reseeder.java | 8 +-- .../i2p/router/peermanager/PeerManager.java | 16 +++--- .../peermanager/PeerManagerFacadeImpl.java | 2 +- .../i2p/router/peermanager/PeerProfile.java | 2 +- .../i2p/router/peermanager/PeerTestJob.java | 16 +++--- .../router/peermanager/ProfileOrganizer.java | 53 +++++++++---------- .../peermanager/ProfilePersistenceHelper.java | 4 +- .../i2p/router/startup/ClientAppConfig.java | 4 +- .../router/startup/CreateRouterInfoJob.java | 1 - .../i2p/router/startup/LoadClientAppsJob.java | 4 +- .../i2p/router/startup/LoadRouterInfoJob.java | 1 - .../i2p/router/startup/RouterAppManager.java | 10 ++-- .../net/i2p/router/tasks/RouterWatchdog.java | 3 -- .../src/net/i2p/router/time/NtpClient.java | 4 +- .../i2p/router/time/RouterTimestamper.java | 8 +-- .../i2p/router/transport/BadCountries.java | 2 +- .../transport/CommSystemFacadeImpl.java | 6 +-- .../transport/FIFOBandwidthLimiter.java | 6 +-- .../transport/FIFOBandwidthRefiller.java | 3 +- .../src/net/i2p/router/transport/GeoIP.java | 14 +++-- .../src/net/i2p/router/transport/GeoIPv6.java | 6 +-- .../transport/OutboundMessageRegistry.java | 24 ++++----- .../i2p/router/transport/TransportImpl.java | 18 +++---- .../router/transport/TransportManager.java | 17 +++--- .../src/net/i2p/router/transport/UPnP.java | 12 ++--- .../net/i2p/router/transport/UPnPManager.java | 3 +- .../transport/crypto/DHSessionKeyBuilder.java | 3 +- .../router/transport/ntcp/NTCPConnection.java | 29 +++++----- .../router/transport/ntcp/NTCPTransport.java | 19 +++---- .../net/i2p/router/transport/ntcp/Reader.java | 8 +-- .../net/i2p/router/transport/ntcp/Writer.java | 8 +-- .../i2p/router/transport/udp/ACKSender.java | 4 +- .../transport/udp/EstablishmentManager.java | 18 +++---- .../i2p/router/transport/udp/IPThrottler.java | 2 +- .../transport/udp/InboundEstablishState.java | 2 +- .../transport/udp/IntroductionManager.java | 10 ++-- .../router/transport/udp/MessageReceiver.java | 2 +- .../transport/udp/OutboundEstablishState.java | 3 +- .../udp/OutboundMessageFragments.java | 7 ++- .../router/transport/udp/PacketBuilder.java | 7 ++- .../router/transport/udp/PacketHandler.java | 4 +- .../i2p/router/transport/udp/PeerState.java | 34 ++++++------ .../router/transport/udp/PeerTestManager.java | 5 +- .../router/transport/udp/RemoteHostId.java | 1 - .../TimedWeightedPriorityMessageQueue.java | 10 ++-- .../i2p/router/transport/udp/UDPAddress.java | 2 +- .../i2p/router/transport/udp/UDPPacket.java | 2 +- .../i2p/router/transport/udp/UDPReceiver.java | 1 - .../i2p/router/transport/udp/UDPSender.java | 2 +- .../router/transport/udp/UDPTransport.java | 34 ++++++------ .../router/tunnel/BloomFilterIVValidator.java | 1 - .../router/tunnel/BuildMessageGenerator.java | 2 +- .../i2p/router/tunnel/FragmentHandler.java | 2 +- .../i2p/router/tunnel/HashSetIVValidator.java | 2 +- .../tunnel/InboundEndpointProcessor.java | 1 - .../tunnel/InboundMessageDistributor.java | 2 - .../tunnel/OutboundGatewayProcessor.java | 1 - .../router/tunnel/PendingGatewayMessage.java | 7 ++- .../router/tunnel/PumpedTunnelGateway.java | 2 +- .../router/tunnel/TrivialPreprocessor.java | 1 - .../i2p/router/tunnel/TunnelDispatcher.java | 15 +++--- .../net/i2p/router/tunnel/TunnelGateway.java | 3 +- .../router/tunnel/TunnelGatewayPumper.java | 10 ++-- .../i2p/router/tunnel/pool/BuildExecutor.java | 12 ++--- .../i2p/router/tunnel/pool/BuildHandler.java | 2 +- .../router/tunnel/pool/BuildRequestor.java | 8 +-- .../tunnel/pool/ClientPeerSelector.java | 10 ++-- .../tunnel/pool/ExploratoryPeerSelector.java | 4 +- .../tunnel/pool/ParticipatingThrottler.java | 3 +- .../router/tunnel/pool/RequestThrottler.java | 3 +- .../net/i2p/router/tunnel/pool/TestJob.java | 4 +- .../tunnel/pool/TunnelPeerSelector.java | 6 +-- .../i2p/router/tunnel/pool/TunnelPool.java | 13 +++-- .../router/tunnel/pool/TunnelPoolManager.java | 17 +++--- .../util/CoDelPriorityBlockingQueue.java | 3 -- .../i2p/router/util/DecayingBloomFilter.java | 1 - .../net/i2p/router/util/DecayingHashSet.java | 7 +-- .../src/net/i2p/router/util/EventLog.java | 6 +-- .../net/i2p/router/util/RandomIterator.java | 4 +- .../router/util/RemovableSingletonSet.java | 2 - .../router/util/RouterPasswordManager.java | 13 +++-- 140 files changed, 477 insertions(+), 568 deletions(-) diff --git a/router/java/src/net/i2p/data/i2np/DatabaseLookupMessage.java b/router/java/src/net/i2p/data/i2np/DatabaseLookupMessage.java index 6a33174853..06d9968574 100644 --- a/router/java/src/net/i2p/data/i2np/DatabaseLookupMessage.java +++ b/router/java/src/net/i2p/data/i2np/DatabaseLookupMessage.java @@ -212,7 +212,7 @@ public class DatabaseLookupMessage extends FastI2NPMessageImpl { public Set<Hash> getDontIncludePeers() { if (_dontIncludePeers == null) return null; - return new HashSet(_dontIncludePeers); + return new HashSet<Hash>(_dontIncludePeers); } /** @@ -225,7 +225,7 @@ public class DatabaseLookupMessage extends FastI2NPMessageImpl { public void setDontIncludePeers(Collection<Hash> peers) { _hasChecksum = false; if (peers != null) - _dontIncludePeers = new ArrayList(peers); + _dontIncludePeers = new ArrayList<Hash>(peers); else _dontIncludePeers = null; } @@ -239,7 +239,7 @@ public class DatabaseLookupMessage extends FastI2NPMessageImpl { */ public void addDontIncludePeer(Hash peer) { if (_dontIncludePeers == null) - _dontIncludePeers = new ArrayList(); + _dontIncludePeers = new ArrayList<Hash>(); else if (_dontIncludePeers.contains(peer)) return; _hasChecksum = false; @@ -256,7 +256,7 @@ public class DatabaseLookupMessage extends FastI2NPMessageImpl { public void addDontIncludePeers(Collection<Hash> peers) { _hasChecksum = false; if (_dontIncludePeers == null) { - _dontIncludePeers = new ArrayList(peers); + _dontIncludePeers = new ArrayList<Hash>(peers); } else { for (Hash peer : peers) { if (!_dontIncludePeers.contains(peer)) @@ -297,7 +297,7 @@ public class DatabaseLookupMessage extends FastI2NPMessageImpl { if ( (numPeers < 0) || (numPeers > MAX_NUM_PEERS) ) throw new I2NPMessageException("Invalid number of peers - " + numPeers); - List<Hash> peers = new ArrayList(numPeers); + List<Hash> peers = new ArrayList<Hash>(numPeers); for (int i = 0; i < numPeers; i++) { //byte peer[] = new byte[Hash.HASH_LENGTH]; //System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH); diff --git a/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java b/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java index 1c4838000c..b2da84295a 100644 --- a/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java +++ b/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java @@ -33,7 +33,7 @@ public class DatabaseSearchReplyMessage extends FastI2NPMessageImpl { // do this in netdb if we need it //_context.statManager().createRateStat("netDb.searchReplyMessageSend", "How many search reply messages we send", "NetworkDatabase", new long[] { 60*1000, 5*60*1000, 10*60*1000, 60*60*1000 }); //_context.statManager().createRateStat("netDb.searchReplyMessageReceive", "How many search reply messages we receive", "NetworkDatabase", new long[] { 60*1000, 5*60*1000, 10*60*1000, 60*60*1000 }); - _peerHashes = new ArrayList(3); + _peerHashes = new ArrayList<Hash>(3); } /** diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageException.java b/router/java/src/net/i2p/data/i2np/I2NPMessageException.java index 4b64a7370d..6ecba8ce60 100644 --- a/router/java/src/net/i2p/data/i2np/I2NPMessageException.java +++ b/router/java/src/net/i2p/data/i2np/I2NPMessageException.java @@ -9,7 +9,6 @@ package net.i2p.data.i2np; */ import net.i2p.I2PException; -import net.i2p.util.Log; /** * Represent an error serializing or deserializing an APIMessage diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java index 97635e0a90..f3add3c2a1 100644 --- a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java +++ b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java @@ -48,7 +48,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM //private static final boolean RAW_FULL_SIZE = false; /** unused */ - private static final Map<Integer, Builder> _builders = new ConcurrentHashMap(1); + private static final Map<Integer, Builder> _builders = new ConcurrentHashMap<Integer, Builder>(1); /** @deprecated unused */ public static final void registerBuilder(Builder builder, int type) { _builders.put(Integer.valueOf(type), builder); } diff --git a/router/java/src/net/i2p/router/Banlist.java b/router/java/src/net/i2p/router/Banlist.java index c167108e01..d10186d5d1 100644 --- a/router/java/src/net/i2p/router/Banlist.java +++ b/router/java/src/net/i2p/router/Banlist.java @@ -58,7 +58,7 @@ public class Banlist { public Banlist(RouterContext context) { _context = context; _log = context.logManager().getLog(Banlist.class); - _entries = new ConcurrentHashMap(16); + _entries = new ConcurrentHashMap<Hash, Entry>(16); _context.jobQueue().addJob(new Cleanup(_context)); } @@ -66,7 +66,7 @@ public class Banlist { private List<Hash> _toUnbanlist; public Cleanup(RouterContext ctx) { super(ctx); - _toUnbanlist = new ArrayList(4); + _toUnbanlist = new ArrayList<Hash>(4); getTiming().setStartAfter(ctx.clock().now() + BANLIST_CLEANER_START_DELAY); } public String getName() { return "Expire banned peers"; } @@ -74,8 +74,8 @@ public class Banlist { _toUnbanlist.clear(); long now = getContext().clock().now(); try { - for (Iterator iter = _entries.entrySet().iterator(); iter.hasNext(); ) { - Map.Entry<Hash, Entry> e = (Map.Entry) iter.next(); + for (Iterator<Map.Entry<Hash, Entry>> iter = _entries.entrySet().iterator(); iter.hasNext(); ) { + Map.Entry<Hash, Entry> e = iter.next(); if (e.getValue().expireOn <= now) { iter.remove(); _toUnbanlist.add(e.getKey()); @@ -169,7 +169,7 @@ public class Banlist { e.causeCode = reasonCode; e.transports = null; if (transport != null) { - e.transports = new ConcurrentHashSet(2); + e.transports = new ConcurrentHashSet<String>(2); e.transports.add(transport); } diff --git a/router/java/src/net/i2p/router/Blocklist.java b/router/java/src/net/i2p/router/Blocklist.java index 11a4cc5c42..4c3b8407b4 100644 --- a/router/java/src/net/i2p/router/Blocklist.java +++ b/router/java/src/net/i2p/router/Blocklist.java @@ -75,8 +75,8 @@ public class Blocklist { private int _blocklistSize; private final Object _lock = new Object(); private Entry _wrapSave; - private final Set<Hash> _inProcess = new HashSet(4); - private Map<Hash, String> _peerBlocklist = new HashMap(4); + private final Set<Hash> _inProcess = new HashSet<Hash>(4); + private Map<Hash, String> _peerBlocklist = new HashMap<Hash, String>(4); /** * Limits of transient (in-memory) blocklists. @@ -86,8 +86,8 @@ public class Blocklist { private static final int MAX_IPV4_SINGLES = 256; private static final int MAX_IPV6_SINGLES = 512; - private final Set<Integer> _singleIPBlocklist = new ConcurrentHashSet(4); - private final Map<BigInteger, Object> _singleIPv6Blocklist = new LHMCache(MAX_IPV6_SINGLES); + private final Set<Integer> _singleIPBlocklist = new ConcurrentHashSet<Integer>(4); + private final Map<BigInteger, Object> _singleIPv6Blocklist = new LHMCache<BigInteger, Object>(MAX_IPV6_SINGLES); private static final Object DUMMY = Integer.valueOf(0); @@ -518,8 +518,8 @@ public class Blocklist { private List<byte[]> getAddresses(Hash peer) { RouterInfo pinfo = _context.netDb().lookupRouterInfoLocally(peer); if (pinfo == null) - return Collections.EMPTY_LIST; - List<byte[]> rv = new ArrayList(4); + return Collections.emptyList(); + List<byte[]> rv = new ArrayList<byte[]>(4); // for each peer address for (RouterAddress pa : pinfo.getAddresses()) { byte[] pib = pa.getIP(); @@ -753,7 +753,7 @@ public class Blocklist { * Additional jobs can wait. * Although could this clog up the job queue runners? Yes. * So we also stagger these jobs. - * + *(Map.Entry) */ private synchronized void banlistForever(Hash peer, List<byte[]> ips) { String file = _context.getProperty(PROP_BLOCKLIST_FILE, BLOCKLIST_FILE_DEFAULT); @@ -818,7 +818,7 @@ public class Blocklist { public void renderStatusHTML(Writer out) throws IOException { // move to the jsp //out.write("<h2>Banned IPs</h2>"); - Set<Integer> singles = new TreeSet(); + Set<Integer> singles = new TreeSet<Integer>(); singles.addAll(_singleIPBlocklist); if (!(singles.isEmpty() && _singleIPv6Blocklist.isEmpty())) { out.write("<table><tr><th align=\"center\" colspan=\"2\"><b>"); @@ -846,7 +846,7 @@ public class Blocklist { if (!_singleIPv6Blocklist.isEmpty()) { List<BigInteger> s6; synchronized(_singleIPv6Blocklist) { - s6 = new ArrayList(_singleIPv6Blocklist.keySet()); + s6 = new ArrayList<BigInteger>(_singleIPv6Blocklist.keySet()); } Collections.sort(s6); for (BigInteger bi : s6) { diff --git a/router/java/src/net/i2p/router/ClientManagerFacade.java b/router/java/src/net/i2p/router/ClientManagerFacade.java index 204a3f591d..a5e403973f 100644 --- a/router/java/src/net/i2p/router/ClientManagerFacade.java +++ b/router/java/src/net/i2p/router/ClientManagerFacade.java @@ -89,7 +89,7 @@ public abstract class ClientManagerFacade implements Service { * * @return set of Destination objects */ - public Set<Destination> listClients() { return Collections.EMPTY_SET; } + public Set<Destination> listClients() { return Collections.emptySet(); } /** * Return the client's current config, or null if not connected diff --git a/router/java/src/net/i2p/router/CommSystemFacade.java b/router/java/src/net/i2p/router/CommSystemFacade.java index 1386b87277..591fd81793 100644 --- a/router/java/src/net/i2p/router/CommSystemFacade.java +++ b/router/java/src/net/i2p/router/CommSystemFacade.java @@ -12,8 +12,6 @@ import java.io.IOException; import java.io.Writer; import java.util.Collections; import java.util.List; -import java.util.Set; - import net.i2p.data.Hash; import net.i2p.data.RouterAddress; @@ -29,14 +27,14 @@ public abstract class CommSystemFacade implements Service { public void renderStatusHTML(Writer out) throws IOException { renderStatusHTML(out, null, 0); } /** Create the list of RouterAddress structures based on the router's config */ - public List<RouterAddress> createAddresses() { return Collections.EMPTY_LIST; } + public List<RouterAddress> createAddresses() { return Collections.emptyList(); } public int countActivePeers() { return 0; } public int countActiveSendPeers() { return 0; } public boolean haveInboundCapacity(int pct) { return true; } public boolean haveOutboundCapacity(int pct) { return true; } public boolean haveHighOutboundCapacity() { return true; } - public List getMostRecentErrorMessages() { return Collections.EMPTY_LIST; } + public List getMostRecentErrorMessages() { return Collections.emptyList(); } /** * Median clock skew of connected peers in seconds, or null if we cannot answer. diff --git a/router/java/src/net/i2p/router/InNetMessagePool.java b/router/java/src/net/i2p/router/InNetMessagePool.java index a4396dc8dc..8f185ef1da 100644 --- a/router/java/src/net/i2p/router/InNetMessagePool.java +++ b/router/java/src/net/i2p/router/InNetMessagePool.java @@ -36,9 +36,9 @@ public class InNetMessagePool implements Service { private final HandlerJobBuilder _handlerJobBuilders[]; /** following 5 unused unless DISPATCH_DIRECT == false */ - private final List _pendingDataMessages; - private final List _pendingDataMessagesFrom; - private final List _pendingGatewayMessages; + private final List<I2NPMessage> _pendingDataMessages; + private final List<Hash> _pendingDataMessagesFrom; + private final List<I2NPMessage> _pendingGatewayMessages; private SharedShortCircuitDataJob _shortCircuitDataJob; private SharedShortCircuitGatewayJob _shortCircuitGatewayJob; @@ -56,7 +56,7 @@ public class InNetMessagePool implements Service { * using the jobQueue's single thread. * */ - public static final String PROP_DISPATCH_THREADED = "router.dispatchThreaded"; + public static final String PROP_DISPATCH_THREADED = "router.dispatchTemptyList()hreaded"; public static final boolean DEFAULT_DISPATCH_THREADED = false; /** * If we aren't doing threaded dispatch for tunnel messages, should we @@ -75,9 +75,9 @@ public class InNetMessagePool implements Service { _pendingDataMessagesFrom = null; _pendingGatewayMessages = null; } else { - _pendingDataMessages = new ArrayList(16); - _pendingDataMessagesFrom = new ArrayList(16); - _pendingGatewayMessages = new ArrayList(16); + _pendingDataMessages = new ArrayList<I2NPMessage>(16); + _pendingDataMessagesFrom = new ArrayList<Hash>(16); + _pendingGatewayMessages = new ArrayList<I2NPMessage>(16); _shortCircuitDataJob = new SharedShortCircuitDataJob(context); _shortCircuitGatewayJob = new SharedShortCircuitGatewayJob(context); } diff --git a/router/java/src/net/i2p/router/KeyManager.java b/router/java/src/net/i2p/router/KeyManager.java index a0eddf9d31..5486beac71 100644 --- a/router/java/src/net/i2p/router/KeyManager.java +++ b/router/java/src/net/i2p/router/KeyManager.java @@ -12,7 +12,6 @@ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; @@ -27,7 +26,6 @@ import net.i2p.data.PrivateKey; import net.i2p.data.PublicKey; import net.i2p.data.SigningPrivateKey; import net.i2p.data.SigningPublicKey; -import net.i2p.util.Clock; import net.i2p.util.Log; import net.i2p.util.SecureDirectory; import net.i2p.util.SecureFileOutputStream; @@ -57,7 +55,7 @@ public class KeyManager { public KeyManager(RouterContext context) { _context = context; _log = _context.logManager().getLog(KeyManager.class); - _leaseSetKeys = new ConcurrentHashMap(); + _leaseSetKeys = new ConcurrentHashMap<Hash, LeaseSetKeys>(); } public void startup() { diff --git a/router/java/src/net/i2p/router/MessageHistory.java b/router/java/src/net/i2p/router/MessageHistory.java index 1eec0fa30f..5622580e61 100644 --- a/router/java/src/net/i2p/router/MessageHistory.java +++ b/router/java/src/net/i2p/router/MessageHistory.java @@ -56,7 +56,7 @@ public class MessageHistory { _log = context.logManager().getLog(getClass()); _fmt = new SimpleDateFormat("yy/MM/dd.HH:mm:ss.SSS"); _fmt.setTimeZone(TimeZone.getTimeZone("GMT")); - _unwrittenEntries = new LinkedBlockingQueue(); + _unwrittenEntries = new LinkedBlockingQueue<String>(); _reinitializeJob = new ReinitializeJob(); _writeJob = new WriteJob(); _firstPass = true; diff --git a/router/java/src/net/i2p/router/MultiRouter.java b/router/java/src/net/i2p/router/MultiRouter.java index 0790f48be5..8d5f381eac 100644 --- a/router/java/src/net/i2p/router/MultiRouter.java +++ b/router/java/src/net/i2p/router/MultiRouter.java @@ -1,7 +1,6 @@ package net.i2p.router; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.PrintStream; import java.util.ArrayList; @@ -13,7 +12,6 @@ import net.i2p.I2PAppContext; import net.i2p.data.DataHelper; import net.i2p.data.RouterInfo; import net.i2p.router.Router; -import net.i2p.util.Log; /** * Fire up multiple routers in the same VM, all with their own RouterContext diff --git a/router/java/src/net/i2p/router/NetworkDatabaseFacade.java b/router/java/src/net/i2p/router/NetworkDatabaseFacade.java index 4cd201b146..be0ce340e9 100644 --- a/router/java/src/net/i2p/router/NetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/NetworkDatabaseFacade.java @@ -77,9 +77,9 @@ public abstract class NetworkDatabaseFacade implements Service { /** @deprecated moved to router console */ public void renderStatusHTML(Writer out) throws IOException {} /** public for NetDbRenderer in routerconsole */ - public Set<LeaseSet> getLeases() { return Collections.EMPTY_SET; } + public Set<LeaseSet> getLeases() { return Collections.emptySet(); } /** public for NetDbRenderer in routerconsole */ - public Set<RouterInfo> getRouters() { return Collections.EMPTY_SET; } + public Set<RouterInfo> getRouters() { return Collections.emptySet(); } /** @since 0.9 */ public ReseedChecker reseedChecker() { return null; }; diff --git a/router/java/src/net/i2p/router/OutNetMessage.java b/router/java/src/net/i2p/router/OutNetMessage.java index 043b6cfae8..7b1e17d3b4 100644 --- a/router/java/src/net/i2p/router/OutNetMessage.java +++ b/router/java/src/net/i2p/router/OutNetMessage.java @@ -154,7 +154,7 @@ public class OutNetMessage implements CDPQEntry { return (Map<String, Long>)_timestamps.clone(); } } - return Collections.EMPTY_MAP; + return Collections.emptyMap(); } /** @deprecated unused */ @@ -170,8 +170,8 @@ public class OutNetMessage implements CDPQEntry { private void locked_initTimestamps() { if (_timestamps == null) { - _timestamps = new HashMap(8); - _timestampOrder = new ArrayList(8); + _timestamps = new HashMap<String, Long>(8); + _timestampOrder = new ArrayList<String>(8); } } @@ -279,7 +279,7 @@ public class OutNetMessage implements CDPQEntry { public synchronized void transportFailed(String transportStyle) { if (_failedTransports == null) - _failedTransports = new HashSet(2); + _failedTransports = new HashSet<String>(2); _failedTransports.add(transportStyle); } diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 1748988189..26daf75149 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -11,20 +11,16 @@ package net.i2p.router; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.IOException; import java.util.Collection; import java.util.Collections; -import java.util.Date; -import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.TimeZone; -import java.util.TreeSet; import java.util.concurrent.ConcurrentHashMap; import net.i2p.data.Certificate; @@ -53,7 +49,6 @@ import net.i2p.util.Log; import net.i2p.util.OrderedProperties; import net.i2p.util.SecureFileOutputStream; import net.i2p.util.SimpleByteCache; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SystemVersion; import net.i2p.util.Translate; @@ -147,7 +142,7 @@ public class Router implements RouterClock.ClockShiftListener { public Router(String configFilename, Properties envProps) { _gracefulExitCode = -1; - _config = new ConcurrentHashMap(); + _config = new ConcurrentHashMap<String, String>(); if (configFilename == null) { if (envProps != null) { @@ -1028,7 +1023,7 @@ public class Router implements RouterClock.ClockShiftListener { * @return success * @since 0.8.13 */ - public boolean saveConfig(Map toAdd, Collection<String> toRemove) { + public boolean saveConfig(Map<String, String> toAdd, Collection<String> toRemove) { synchronized(_configFileLock) { if (toAdd != null) _config.putAll(toAdd); diff --git a/router/java/src/net/i2p/router/RouterClock.java b/router/java/src/net/i2p/router/RouterClock.java index 8ec8db80ef..3e743c6710 100644 --- a/router/java/src/net/i2p/router/RouterClock.java +++ b/router/java/src/net/i2p/router/RouterClock.java @@ -57,7 +57,7 @@ public class RouterClock extends Clock { super(context); _lastStratum = WORST_STRATUM; _lastSlewed = System.currentTimeMillis(); - _shiftListeners = new CopyOnWriteArraySet(); + _shiftListeners = new CopyOnWriteArraySet<ClockShiftListener>(); _lastShiftNanos = System.nanoTime(); _timeStamper = new RouterTimestamper(context, this); } diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index 0fbb2a6f60..6af37e54fa 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -1,6 +1,5 @@ package net.i2p.router; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Properties; @@ -69,7 +68,7 @@ public class RouterContext extends I2PAppContext { private volatile boolean _initialized; private final Object _lock1 = new Object(), _lock2 = new Object(), _lock3 = new Object(); - private static final List<RouterContext> _contexts = new CopyOnWriteArrayList(); + private static final List<RouterContext> _contexts = new CopyOnWriteArrayList<RouterContext>(); /** * Caller MUST call initAll() after instantiation. @@ -89,7 +88,7 @@ public class RouterContext extends I2PAppContext { //initAll(); if (!_contexts.isEmpty()) System.err.println("Warning - More than one router in this JVM"); - _finalShutdownTasks = new CopyOnWriteArraySet(); + _finalShutdownTasks = new CopyOnWriteArraySet<Runnable>(); _contexts.add(this); } diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java index 94d26378f3..e73041deaa 100644 --- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java @@ -46,8 +46,6 @@ import net.i2p.router.RouterContext; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.I2PThread; import net.i2p.util.Log; -import net.i2p.util.RandomSource; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; /** @@ -119,9 +117,9 @@ class ClientConnectionRunner { _manager = manager; _socket = socket; // unused for fastReceive - _messages = new ConcurrentHashMap(); - _alreadyProcessed = new ArrayList(); - _acceptedPending = new ConcurrentHashSet(); + _messages = new ConcurrentHashMap<MessageId, Payload>(); + _alreadyProcessed = new ArrayList<MessageId>(); + _acceptedPending = new ConcurrentHashSet<MessageId>(); _messageId = new AtomicInteger(_context.random().nextInt()); } diff --git a/router/java/src/net/i2p/router/client/ClientManager.java b/router/java/src/net/i2p/router/client/ClientManager.java index e259c91aba..5ad4527956 100644 --- a/router/java/src/net/i2p/router/client/ClientManager.java +++ b/router/java/src/net/i2p/router/client/ClientManager.java @@ -11,7 +11,6 @@ package net.i2p.router.client; import java.io.IOException; import java.io.Writer; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; @@ -78,9 +77,9 @@ class ClientManager { // "How large are messages received by the client?", // "ClientMessages", // new long[] { 60*1000l, 60*60*1000l, 24*60*60*1000l }); - _runners = new ConcurrentHashMap(); - _runnersByHash = new ConcurrentHashMap(); - _pendingRunners = new HashSet(); + _runners = new ConcurrentHashMap<Destination, ClientConnectionRunner>(); + _runnersByHash = new ConcurrentHashMap<Hash, ClientConnectionRunner>(); + _pendingRunners = new HashSet<ClientConnectionRunner>(); _port = port; // following are for RequestLeaseSetJob _ctx.statManager().createRateStat("client.requestLeaseSetSuccess", "How frequently the router requests successfully a new leaseSet?", "ClientMessages", new long[] { 60*60*1000 }); @@ -124,7 +123,7 @@ class ClientManager { _log.info("Shutting down the ClientManager"); if (_listener != null) _listener.stopListening(); - Set<ClientConnectionRunner> runners = new HashSet(); + Set<ClientConnectionRunner> runners = new HashSet<ClientConnectionRunner>(); synchronized (_runners) { for (Iterator<ClientConnectionRunner> iter = _runners.values().iterator(); iter.hasNext();) { ClientConnectionRunner runner = iter.next(); @@ -153,8 +152,8 @@ class ClientManager { public I2CPMessageQueue internalConnect() throws I2PSessionException { if (!_isStarted) throw new I2PSessionException("Router client manager is shut down"); - LinkedBlockingQueue<I2CPMessage> in = new LinkedBlockingQueue(INTERNAL_QUEUE_SIZE); - LinkedBlockingQueue<I2CPMessage> out = new LinkedBlockingQueue(INTERNAL_QUEUE_SIZE); + LinkedBlockingQueue<I2CPMessage> in = new LinkedBlockingQueue<I2CPMessage>(INTERNAL_QUEUE_SIZE); + LinkedBlockingQueue<I2CPMessage> out = new LinkedBlockingQueue<I2CPMessage>(INTERNAL_QUEUE_SIZE); I2CPMessageQueue myQueue = new I2CPMessageQueueImpl(in, out); I2CPMessageQueue hisQueue = new I2CPMessageQueueImpl(out, in); ClientConnectionRunner runner = new QueuedClientConnectionRunner(_ctx, this, myQueue); @@ -344,7 +343,7 @@ class ClientManager { * Unsynchronized */ public Set<Destination> listClients() { - Set<Destination> rv = new HashSet(); + Set<Destination> rv = new HashSet<Destination>(); rv.addAll(_runners.keySet()); return rv; } diff --git a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java index edb92147a9..94dbe6d361 100644 --- a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java +++ b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java @@ -11,7 +11,6 @@ package net.i2p.router.client; import java.io.IOException; import java.io.Writer; import java.util.Collections; -import java.util.Iterator; import java.util.Set; import net.i2p.client.I2PSessionException; @@ -239,7 +238,7 @@ public class ClientManagerFacadeImpl extends ClientManagerFacade implements Inte if (_manager != null) return _manager.listClients(); else - return Collections.EMPTY_SET; + return Collections.emptySet(); } /** diff --git a/router/java/src/net/i2p/router/client/ClientWriterRunner.java b/router/java/src/net/i2p/router/client/ClientWriterRunner.java index 8bdeeded45..581b2a5edf 100644 --- a/router/java/src/net/i2p/router/client/ClientWriterRunner.java +++ b/router/java/src/net/i2p/router/client/ClientWriterRunner.java @@ -28,7 +28,7 @@ class ClientWriterRunner implements Runnable { public ClientWriterRunner(RouterContext context, ClientConnectionRunner runner) { //_log = context.logManager().getLog(ClientWriterRunner.class); - _messagesToWrite = new LinkedBlockingQueue(QUEUE_SIZE); + _messagesToWrite = new LinkedBlockingQueue<I2CPMessage>(QUEUE_SIZE); _runner = runner; //_id = ++__id; } diff --git a/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java b/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java index 3ad1958053..147440a927 100644 --- a/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java @@ -6,7 +6,6 @@ import net.i2p.data.i2cp.I2CPMessageException; import net.i2p.internal.I2CPMessageQueue; import net.i2p.internal.QueuedI2CPMessageReader; import net.i2p.router.RouterContext; -import net.i2p.util.Log; /** * Zero-copy in-JVM. diff --git a/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java b/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java index bd153fbdda..d2de37098c 100644 --- a/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java +++ b/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java @@ -16,7 +16,6 @@ import net.i2p.data.i2cp.I2CPMessage; import net.i2p.data.i2cp.I2CPMessageException; import net.i2p.data.i2cp.RequestLeaseSetMessage; import net.i2p.data.i2cp.RequestVariableLeaseSetMessage; -import net.i2p.router.Job; import net.i2p.router.JobImpl; import net.i2p.router.RouterContext; import net.i2p.util.Log; diff --git a/router/java/src/net/i2p/router/client/SSLClientListenerRunner.java b/router/java/src/net/i2p/router/client/SSLClientListenerRunner.java index d65f75bce6..fcd008ad68 100644 --- a/router/java/src/net/i2p/router/client/SSLClientListenerRunner.java +++ b/router/java/src/net/i2p/router/client/SSLClientListenerRunner.java @@ -4,15 +4,11 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.ServerSocket; import java.security.KeyStore; import java.security.GeneralSecurityException; -import java.security.cert.Certificate; -import java.security.cert.CertificateEncodingException; import java.util.HashMap; import java.util.Map; @@ -21,9 +17,7 @@ import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLContext; import net.i2p.client.I2PClient; -import net.i2p.crypto.CertUtil; import net.i2p.crypto.KeyStoreUtil; -import net.i2p.data.Base32; import net.i2p.router.RouterContext; import net.i2p.util.Log; import net.i2p.util.SecureDirectory; @@ -94,7 +88,7 @@ class SSLClientListenerRunner extends ClientListenerRunner { if (success) { success = ks.exists(); if (success) { - Map<String, String> changes = new HashMap(); + Map<String, String> changes = new HashMap<String, String>(); changes.put(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD); changes.put(PROP_KEY_PASSWORD, keyPassword); _context.router().saveConfig(changes, null); diff --git a/router/java/src/net/i2p/router/dummy/DummyNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/dummy/DummyNetworkDatabaseFacade.java index eeb0e1384a..77d79f12f2 100644 --- a/router/java/src/net/i2p/router/dummy/DummyNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/dummy/DummyNetworkDatabaseFacade.java @@ -23,11 +23,11 @@ import net.i2p.router.NetworkDatabaseFacade; import net.i2p.router.RouterContext; public class DummyNetworkDatabaseFacade extends NetworkDatabaseFacade { - private Map _routers; + private Map<Hash, RouterInfo> _routers; private RouterContext _context; public DummyNetworkDatabaseFacade(RouterContext ctx) { - _routers = Collections.synchronizedMap(new HashMap()); + _routers = Collections.synchronizedMap(new HashMap<Hash, RouterInfo>()); _context = ctx; } @@ -61,6 +61,6 @@ public class DummyNetworkDatabaseFacade extends NetworkDatabaseFacade { _routers.remove(dbEntry); } - public Set<Hash> getAllRouters() { return new HashSet(_routers.keySet()); } + public Set<Hash> getAllRouters() { return new HashSet<Hash>(_routers.keySet()); } public Set<Hash> findNearestRouters(Hash key, int maxNumRouters, Set<Hash> peersToIgnore) { return new HashSet(_routers.values()); } } diff --git a/router/java/src/net/i2p/router/dummy/VMCommSystem.java b/router/java/src/net/i2p/router/dummy/VMCommSystem.java index cb700011ad..1d02d07b25 100644 --- a/router/java/src/net/i2p/router/dummy/VMCommSystem.java +++ b/router/java/src/net/i2p/router/dummy/VMCommSystem.java @@ -29,7 +29,7 @@ public class VMCommSystem extends CommSystemFacade { /** * Mapping from Hash to VMCommSystem for all routers hooked together */ - private static Map _commSystemFacades = Collections.synchronizedMap(new HashMap(16)); + private static Map<Hash, VMCommSystem> _commSystemFacades = Collections.synchronizedMap(new HashMap<Hash, VMCommSystem>(16)); public VMCommSystem(RouterContext context) { _context = context; diff --git a/router/java/src/net/i2p/router/message/CloveSet.java b/router/java/src/net/i2p/router/message/CloveSet.java index ac4aaf1eb6..caa5e1bff3 100644 --- a/router/java/src/net/i2p/router/message/CloveSet.java +++ b/router/java/src/net/i2p/router/message/CloveSet.java @@ -25,7 +25,7 @@ class CloveSet { private long _expiration; public CloveSet() { - _cloves = new ArrayList(4); + _cloves = new ArrayList<GarlicClove>(4); _msgId = -1; _expiration = -1; } diff --git a/router/java/src/net/i2p/router/message/GarlicConfig.java b/router/java/src/net/i2p/router/message/GarlicConfig.java index 9dcfc1e6bf..101c8c3289 100644 --- a/router/java/src/net/i2p/router/message/GarlicConfig.java +++ b/router/java/src/net/i2p/router/message/GarlicConfig.java @@ -41,7 +41,7 @@ class GarlicConfig { public GarlicConfig() { _id = -1; _expiration = -1; - _cloveConfigs = new ArrayList(4); + _cloveConfigs = new ArrayList<GarlicConfig>(4); //_replyBlockMessageId = -1; //_replyBlockExpiration = -1; } diff --git a/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java b/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java index cdbbd543f8..ae2f792a57 100644 --- a/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java +++ b/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java @@ -65,7 +65,7 @@ public class GarlicMessageBuilder { private static GarlicMessage buildMessage(RouterContext ctx, GarlicConfig config) { Log log = ctx.logManager().getLog(GarlicMessageBuilder.class); log.error("buildMessage 2 args, using router SKM", new Exception("who did it")); - return buildMessage(ctx, config, new SessionKey(), new HashSet(), ctx.sessionKeyManager()); + return buildMessage(ctx, config, new SessionKey(), new HashSet<SessionTag>(), ctx.sessionKeyManager()); } /** diff --git a/router/java/src/net/i2p/router/message/OutboundCache.java b/router/java/src/net/i2p/router/message/OutboundCache.java index 64518d4740..bc3dcd6539 100644 --- a/router/java/src/net/i2p/router/message/OutboundCache.java +++ b/router/java/src/net/i2p/router/message/OutboundCache.java @@ -11,7 +11,6 @@ import net.i2p.data.LeaseSet; import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.TunnelInfo; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; /** @@ -43,12 +42,12 @@ public class OutboundCache { * * NOT concurrent. */ - final Map<HashPair, TunnelInfo> tunnelCache = new HashMap(64); + final Map<HashPair, TunnelInfo> tunnelCache = new HashMap<HashPair, TunnelInfo>(64); /* * NOT concurrent. */ - final Map<HashPair, TunnelInfo> backloggedTunnelCache = new HashMap(64); + final Map<HashPair, TunnelInfo> backloggedTunnelCache = new HashMap<HashPair, TunnelInfo>(64); /** * Returns the reply lease set if forced to do so, @@ -68,7 +67,7 @@ public class OutboundCache { * * Concurrent. */ - final Map<HashPair, LeaseSet> leaseSetCache = new ConcurrentHashMap(64); + final Map<HashPair, LeaseSet> leaseSetCache = new ConcurrentHashMap<HashPair, LeaseSet>(64); /** * Use the same inbound tunnel (i.e. lease) as we did for the same destination previously, @@ -84,7 +83,7 @@ public class OutboundCache { * * Concurrent. */ - final ConcurrentHashMap<HashPair, Lease> leaseCache = new ConcurrentHashMap(64); + final ConcurrentHashMap<HashPair, Lease> leaseCache = new ConcurrentHashMap<HashPair, Lease>(64); /** * This cache is used to ensure that we request a reply every so often. @@ -94,7 +93,7 @@ public class OutboundCache { * * Concurrent. */ - final Map<HashPair, Long> lastReplyRequestCache = new ConcurrentHashMap(64); + final Map<HashPair, Long> lastReplyRequestCache = new ConcurrentHashMap<HashPair, Long>(64); private final RouterContext _context; diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java index 072bfde830..78ef6faa72 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; -import java.util.Properties; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; @@ -322,7 +321,7 @@ public class OutboundClientMessageOneShotJob extends JobImpl { } // get the possible leases - List<Lease> leases = new ArrayList(_leaseSet.getLeaseCount()); + List<Lease> leases = new ArrayList<Lease>(_leaseSet.getLeaseCount()); for (int i = 0; i < _leaseSet.getLeaseCount(); i++) { Lease lease = _leaseSet.getLease(i); if (lease.isExpired(Router.CLOCK_FUDGE_FACTOR)) { @@ -454,7 +453,7 @@ public class OutboundClientMessageOneShotJob extends JobImpl { PublicKey key = _leaseSet.getEncryptionKey(); SessionKey sessKey = new SessionKey(); - Set<SessionTag> tags = new HashSet(); + Set<SessionTag> tags = new HashSet<SessionTag>(); LeaseSet replyLeaseSet; // Per-message flag == false overrides session option which is default true diff --git a/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java b/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java index 20257bc6e2..22879b5637 100644 --- a/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java @@ -9,7 +9,6 @@ package net.i2p.router.networkdb; */ import java.util.Collections; -import java.util.HashSet; import java.util.Set; import net.i2p.data.DatabaseEntry; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java index 6ea401d667..8aab12dfe4 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java @@ -58,7 +58,7 @@ class ExpireLeasesJob extends JobImpl { * */ private Set<Hash> selectKeysToExpire() { - Set<Hash> toExpire = new HashSet(128); + Set<Hash> toExpire = new HashSet<Hash>(128); for (Map.Entry<Hash, DatabaseEntry> entry : _facade.getDataStore().getMapEntries()) { DatabaseEntry obj = entry.getValue(); if (obj.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireRoutersJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireRoutersJob.java index 7afc4006bb..d84914ea70 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireRoutersJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireRoutersJob.java @@ -8,7 +8,6 @@ package net.i2p.router.networkdb.kademlia; * */ -import java.util.Collections; import java.util.Set; import net.i2p.data.DatabaseEntry; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/ExploreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/ExploreJob.java index b6259aab67..05154420ba 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/ExploreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/ExploreJob.java @@ -117,7 +117,7 @@ class ExploreJob extends SearchJob { // We don't want our hash in the message's don't-include list though. // We're just exploring, but this could give things away, and tie our exploratory tunnels to our router, // so let's not put our hash in there. - Set<Hash> dontInclude = new HashSet(dontIncludePeers); + Set<Hash> dontInclude = new HashSet<Hash>(dontIncludePeers); List<Hash> peers = _peerSelector.selectNearestExplicit(rkey, available, dontInclude, ks); dontIncludePeers.addAll(peers); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/ExploreKeySelectorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/ExploreKeySelectorJob.java index f11937571a..cb4f111f60 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/ExploreKeySelectorJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/ExploreKeySelectorJob.java @@ -42,7 +42,7 @@ class ExploreKeySelectorJob extends JobImpl { requeue(30*RERUN_DELAY_MS); return; } - Set toExplore = selectKeysToExplore(); + Set<Hash> toExplore = selectKeysToExplore(); _log.info("Filling the explorer pool with: " + toExplore); if (toExplore != null) _facade.queueForExploration(toExplore); @@ -54,16 +54,16 @@ class ExploreKeySelectorJob extends JobImpl { * for it, with a maximum number of keys limited by the exploration pool size * */ - private Set selectKeysToExplore() { - Set alreadyQueued = _facade.getExploreKeys(); + private Set<Hash> selectKeysToExplore() { + Set<Hash> alreadyQueued = _facade.getExploreKeys(); if (alreadyQueued.size() > KBucketSet.NUM_BUCKETS) return null; - Set toExplore = new HashSet(KBucketSet.NUM_BUCKETS - alreadyQueued.size()); + Set<Hash> toExplore = new HashSet<Hash>(KBucketSet.NUM_BUCKETS - alreadyQueued.size()); for (int i = 0; i < KBucketSet.NUM_BUCKETS; i++) { KBucket bucket = _facade.getKBuckets().getBucket(i); if (bucket.getKeyCount() < KBucketSet.BUCKET_SIZE) { boolean already = false; - for (Iterator iter = alreadyQueued.iterator(); iter.hasNext(); ) { - Hash key = (Hash)iter.next(); + for (Iterator<Hash> iter = alreadyQueued.iterator(); iter.hasNext(); ) { + Hash key = iter.next(); if (bucket.shouldContain(key)) { already = true; _log.debug("Bucket " + i + " is already queued for exploration \t" + key); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java index 555b16f78f..c07f3de9be 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java @@ -55,7 +55,7 @@ class FloodOnlySearchJob extends FloodSearchJob { // these override the settings in super _timeoutMs = Math.min(timeoutMs, SearchJob.PER_FLOODFILL_PEER_TIMEOUT); _expiration = _timeoutMs + ctx.clock().now(); - _unheardFrom = new HashSet(CONCURRENT_SEARCHES); + _unheardFrom = new HashSet<Hash>(CONCURRENT_SEARCHES); _replySelector = new FloodOnlyLookupSelector(getContext(), this); _onReply = new FloodOnlyLookupMatchJob(getContext(), this); _onTimeout = new FloodOnlyLookupTimeoutJob(getContext(), this); @@ -77,7 +77,7 @@ class FloodOnlySearchJob extends FloodSearchJob { // but we're passing the rkey not the key, so we do it below instead in certain cases. floodfillPeers = ((FloodfillPeerSelector)_facade.getPeerSelector()).selectFloodfillParticipants(rkey, MIN_FOR_NO_DSRM, ks); } else { - floodfillPeers = Collections.EMPTY_LIST; + floodfillPeers = Collections.emptyList(); } // If we dont know enough floodfills, @@ -91,7 +91,7 @@ class FloodOnlySearchJob extends FloodSearchJob { // so this situation should be temporary if (_log.shouldLog(Log.WARN)) _log.warn("Running netDb searches against the floodfill peers, but we don't know any"); - floodfillPeers = new ArrayList(_facade.getAllRouters()); + floodfillPeers = new ArrayList<Hash>(_facade.getAllRouters()); if (floodfillPeers.isEmpty()) { if (_log.shouldLog(Log.ERROR)) _log.error("We don't know any peers at all"); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodSearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodSearchJob.java index 46815fb5d7..316cf3ff6b 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodSearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodSearchJob.java @@ -43,10 +43,10 @@ public class FloodSearchJob extends JobImpl { _log = ctx.logManager().getLog(getClass()); _facade = facade; _key = key; - _onFind = new CopyOnWriteArrayList(); + _onFind = new CopyOnWriteArrayList<Job>(); if (onFind != null) _onFind.add(onFind); - _onFailed = new CopyOnWriteArrayList(); + _onFailed = new CopyOnWriteArrayList<Job>(); if (onFailed != null) _onFailed.add(onFailed); int timeout = timeoutMs / FLOOD_SEARCH_TIME_FACTOR; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java index 2fced02c6b..75a56bc402 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java @@ -17,7 +17,7 @@ class FloodThrottler { private static final long CLEAN_TIME = 60*1000; FloodThrottler() { - this.counter = new ObjectCounter(); + this.counter = new ObjectCounter<Hash>(); SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), CLEAN_TIME); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java index 2f716760e7..e8cae585a6 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java @@ -7,7 +7,6 @@ import java.util.Map; import java.util.Set; import net.i2p.data.DatabaseEntry; -import net.i2p.data.DataFormatException; import net.i2p.data.Hash; import net.i2p.data.RouterInfo; import net.i2p.data.TunnelId; @@ -47,8 +46,8 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad public FloodfillNetworkDatabaseFacade(RouterContext context) { super(context); - _activeFloodQueries = new HashMap(); - _verifiesInProgress = new ConcurrentHashSet(8); + _activeFloodQueries = new HashMap<Hash, FloodSearchJob>(); + _verifiesInProgress = new ConcurrentHashSet<Hash>(8); _context.statManager().createRequiredRateStat("netDb.successTime", "Time for successful lookup (ms)", "NetworkDatabase", new long[] { 60*60*1000l, 24*60*60*1000l }); _context.statManager().createRateStat("netDb.failedTime", "How long a failed search takes", "NetworkDatabase", new long[] { 60*60*1000l, 24*60*60*1000l }); @@ -140,7 +139,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad } @Override - public void sendStore(Hash key, DatabaseEntry ds, Job onSuccess, Job onFailure, long sendTimeout, Set toIgnore) { + public void sendStore(Hash key, DatabaseEntry ds, Job onSuccess, Job onFailure, long sendTimeout, Set<Hash> toIgnore) { // if we are a part of the floodfill netDb, don't send out our own leaseSets as part // of the flooding - instead, send them to a random floodfill peer so *they* can flood 'em out. // perhaps statistically adjust this so we are the source every 1/N times... or something. @@ -268,7 +267,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad } public List<RouterInfo> getKnownRouterData() { - List<RouterInfo> rv = new ArrayList(); + List<RouterInfo> rv = new ArrayList<RouterInfo>(); DataStore ds = getDataStore(); if (ds != null) { for (DatabaseEntry o : ds.getEntries()) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java index 98da4c1187..3e054ed0c4 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java @@ -88,7 +88,7 @@ class FloodfillPeerSelector extends PeerSelector { peersToIgnore.add(_context.routerHash()); // TODO this is very slow FloodfillSelectionCollector matches = new FloodfillSelectionCollector(key, peersToIgnore, maxNumRouters); - if (kbuckets == null) return new ArrayList(); + if (kbuckets == null) return new ArrayList<Hash>(); kbuckets.getAll(matches); List<Hash> rv = matches.get(maxNumRouters, preferConnected); if (_log.shouldLog(Log.DEBUG)) @@ -126,7 +126,7 @@ class FloodfillPeerSelector extends PeerSelector { return matches.getFloodfillParticipants(); *****/ Set<Hash> set = _context.peerManager().getPeersByCapability(FloodfillNetworkDatabaseFacade.CAPABILITY_FLOODFILL); - List<Hash> rv = new ArrayList(set.size()); + List<Hash> rv = new ArrayList<Hash>(set.size()); for (Hash h : set) { if ((toIgnore != null && toIgnore.contains(h)) || _context.banlist().isBanlistedForever(h)) @@ -180,7 +180,7 @@ class FloodfillPeerSelector extends PeerSelector { toIgnore = Collections.singleton(_context.routerHash()); } else if (!toIgnore.contains(_context.routerHash())) { // copy the Set so we don't confuse StoreJob - toIgnore = new HashSet(toIgnore); + toIgnore = new HashSet<Hash>(toIgnore); toIgnore.add(_context.routerHash()); } return selectFloodfillParticipantsIncludingUs(key, howMany, toIgnore, kbuckets); @@ -195,12 +195,12 @@ class FloodfillPeerSelector extends PeerSelector { */ private List<Hash> selectFloodfillParticipantsIncludingUs(Hash key, int howMany, Set<Hash> toIgnore, KBucketSet kbuckets) { List<Hash> ffs = selectFloodfillParticipants(toIgnore, kbuckets); - TreeSet<Hash> sorted = new TreeSet(new XORComparator(key)); + TreeSet<Hash> sorted = new TreeSet<Hash>(new XORComparator(key)); sorted.addAll(ffs); - List<Hash> rv = new ArrayList(howMany); - List<Hash> okff = new ArrayList(ffs.size()); - List<Hash> badff = new ArrayList(ffs.size()); + List<Hash> rv = new ArrayList<Hash>(howMany); + List<Hash> okff = new ArrayList<Hash>(ffs.size()); + List<Hash> badff = new ArrayList<Hash>(ffs.size()); int found = 0; long now = _context.clock().now(); @@ -219,7 +219,7 @@ class FloodfillPeerSelector extends PeerSelector { // 5 == FNDF.MAX_TO_FLOOD + 1 int limit = Math.max(5, howMany); limit = Math.min(limit, ffs.size()); - Set<Integer> maskedIPs = new HashSet(limit + 4); + Set<Integer> maskedIPs = new HashSet<Integer>(limit + 4); // split sorted list into 3 sorted lists for (int i = 0; found < howMany && i < limit; i++) { Hash entry = sorted.first(); @@ -303,7 +303,7 @@ class FloodfillPeerSelector extends PeerSelector { * @since 0.9.5 modified from ProfileOrganizer */ private Set<Integer> maskedIPSet(Hash peer, RouterInfo pinfo, int mask) { - Set<Integer> rv = new HashSet(4); + Set<Integer> rv = new HashSet<Integer>(4); byte[] commIP = _context.commSystem().getIP(peer); if (commIP != null) rv.add(maskedIP(commIP, mask)); @@ -354,8 +354,8 @@ class FloodfillPeerSelector extends PeerSelector { */ public FloodfillSelectionCollector(Hash key, Set<Hash> toIgnore, int wanted) { _key = key; - _sorted = new TreeSet(new XORComparator(key)); - _floodfillMatches = new ArrayList(8); + _sorted = new TreeSet<Hash>(new XORComparator(key)); + _floodfillMatches = new ArrayList<Hash>(8); _toIgnore = toIgnore; _wanted = wanted; } @@ -410,15 +410,15 @@ class FloodfillPeerSelector extends PeerSelector { * Group 4: Non-floodfills, sorted by closest-to-the-key */ public List<Hash> get(int howMany, boolean preferConnected) { - List<Hash> rv = new ArrayList(howMany); - List<Hash> badff = new ArrayList(howMany); - List<Hash> unconnectedff = new ArrayList(howMany); + List<Hash> rv = new ArrayList<Hash>(howMany); + List<Hash> badff = new ArrayList<Hash>(howMany); + List<Hash> unconnectedff = new ArrayList<Hash>(howMany); int found = 0; long now = _context.clock().now(); // Only add in "good" floodfills here... // Let's say published in last 3h and no failed sends in last 30m // (Forever banlisted ones are excluded in add() above) - for (Iterator<Hash> iter = new RandomIterator(_floodfillMatches); (found < howMany) && iter.hasNext(); ) { + for (Iterator<Hash> iter = new RandomIterator<Hash>(_floodfillMatches); (found < howMany) && iter.hasNext(); ) { Hash entry = iter.next(); RouterInfo info = _context.netDb().lookupRouterInfoLocally(entry); if (info != null && now - info.getPublished() > 3*60*60*1000) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java index eb6d3ee9d0..e98b86e8ed 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java @@ -55,7 +55,7 @@ class FloodfillVerifyStoreJob extends JobImpl { _log = ctx.logManager().getLog(getClass()); _sentTo = sentTo; _facade = facade; - _ignore = new HashSet(MAX_PEERS_TO_TRY); + _ignore = new HashSet<Hash>(MAX_PEERS_TO_TRY); if (sentTo != null) { _ignore.add(_sentTo); } @@ -277,7 +277,7 @@ class FloodfillVerifyStoreJob extends JobImpl { private void resend() { DatabaseEntry ds = _facade.lookupLocally(_key); if (ds != null) { - Set<Hash> toSkip = new HashSet(2); + Set<Hash> toSkip = new HashSet<Hash>(2); if (_sentTo != null) toSkip.add(_sentTo); if (_target != null) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java index 80f48623fb..fb2c1546bd 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java @@ -57,9 +57,9 @@ class HarvesterJob extends JobImpl { public String getName() { return "Harvest the netDb"; } public void runJob() { if (shouldHarvest()) { - List peers = selectPeersToUpdate(); + List<Hash> peers = selectPeersToUpdate(); for (int i = 0; i < peers.size(); i++) { - Hash peer= (Hash)peers.get(i); + Hash peer= peers.get(i); harvest(peer); } } @@ -75,12 +75,12 @@ class HarvesterJob extends JobImpl { * Retrieve a list of hashes for peers we want to update * */ - private List selectPeersToUpdate() { - Map routersByAge = new TreeMap(); - Set peers = _facade.getAllRouters(); + private List<Hash> selectPeersToUpdate() { + Map<Long, Hash> routersByAge = new TreeMap<Long, Hash>(); + Set<Hash> peers = _facade.getAllRouters(); long now = getContext().clock().now(); - for (Iterator iter = peers.iterator(); iter.hasNext(); ) { - Hash peer = (Hash)iter.next(); + for (Iterator<Hash> iter = peers.iterator(); iter.hasNext(); ) { + Hash peer = iter.next(); RouterInfo info = _facade.lookupRouterInfoLocally(peer); if (info != null) { long when = info.getPublished(); @@ -95,9 +95,9 @@ class HarvesterJob extends JobImpl { // ok now we have the known peers sorted by date (oldest first), // ignoring peers that are new, so lets grab the oldest MAX_PER_RUN // entries - List rv = new ArrayList(); - for (Iterator iter = routersByAge.values().iterator(); iter.hasNext(); ) { - Hash peer = (Hash)iter.next(); + List<Hash> rv = new ArrayList<Hash>(); + for (Iterator<Hash> iter = routersByAge.values().iterator(); iter.hasNext(); ) { + Hash peer = iter.next(); rv.add(peer); if (rv.size() >= MAX_PER_RUN) break; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java index 5afb88857a..edc186954c 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java @@ -25,7 +25,6 @@ import net.i2p.router.RouterContext; import net.i2p.router.TunnelInfo; import net.i2p.router.util.RandomIterator; import net.i2p.util.Log; -import net.i2p.util.VersionComparator; /** * A traditional Kademlia search that continues to search @@ -94,10 +93,10 @@ class IterativeSearchJob extends FloodSearchJob { _timeoutMs = Math.min(timeoutMs, MAX_SEARCH_TIME); _expiration = _timeoutMs + ctx.clock().now(); _rkey = ctx.routingKeyGenerator().getRoutingKey(key); - _toTry = new TreeSet(new XORComparator(_rkey)); - _unheardFrom = new HashSet(CONCURRENT_SEARCHES); - _failedPeers = new HashSet(TOTAL_SEARCH_LIMIT); - _sentTime = new ConcurrentHashMap(TOTAL_SEARCH_LIMIT); + _toTry = new TreeSet<Hash>(new XORComparator(_rkey)); + _unheardFrom = new HashSet<Hash>(CONCURRENT_SEARCHES); + _failedPeers = new HashSet<Hash>(TOTAL_SEARCH_LIMIT); + _sentTime = new ConcurrentHashMap<Hash, Long>(TOTAL_SEARCH_LIMIT); } @Override @@ -116,7 +115,7 @@ class IterativeSearchJob extends FloodSearchJob { // but we're passing the rkey not the key, so we do it below instead in certain cases. floodfillPeers = ((FloodfillPeerSelector)_facade.getPeerSelector()).selectFloodfillParticipants(_rkey, TOTAL_SEARCH_LIMIT, ks); } else { - floodfillPeers = new ArrayList(TOTAL_SEARCH_LIMIT); + floodfillPeers = new ArrayList<Hash>(TOTAL_SEARCH_LIMIT); } // For testing or local networks... we will @@ -137,14 +136,14 @@ class IterativeSearchJob extends FloodSearchJob { // so this situation should be temporary if (_log.shouldLog(Log.WARN)) _log.warn("Running netDb searches against the floodfill peers, but we don't know any"); - List<Hash> all = new ArrayList(_facade.getAllRouters()); + List<Hash> all = new ArrayList<Hash>(_facade.getAllRouters()); if (all.isEmpty()) { if (_log.shouldLog(Log.ERROR)) _log.error("We don't know any peers at all"); failed(); return; } - Iterator<Hash> iter = new RandomIterator(all); + Iterator<Hash> iter = new RandomIterator<Hash>(all); // Limit non-FF to 3, because we don't sort the FFs ahead of the non-FFS, // so once we get some FFs we want to be sure to query them for (int i = 0; iter.hasNext() && i < MAX_NON_FF; i++) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java index 59b72927bd..5b61899188 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java @@ -49,7 +49,7 @@ class KBucketImpl implements KBucket { public KBucketImpl(I2PAppContext context, LocalHash local) { _context = context; _log = context.logManager().getLog(KBucketImpl.class); - _entries = new ConcurrentHashSet(2); //all but the last 1 or 2 buckets will be empty + _entries = new ConcurrentHashSet<Hash>(2); //all but the last 1 or 2 buckets will be empty _lastShuffle = context.clock().now(); setLocal(local); } @@ -219,8 +219,8 @@ class KBucketImpl implements KBucket { /** * @deprecated makes a copy, remove toIgnore in KBS instead */ - public Set<Hash> getEntries(Set toIgnoreHashes) { - Set<Hash> entries = new HashSet(_entries); + public Set<Hash> getEntries(Set<Hash> toIgnoreHashes) { + Set<Hash> entries = new HashSet<Hash>(_entries); entries.removeAll(toIgnoreHashes); return entries; } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketSet.java b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketSet.java index 2a0910ff83..9b14bd9834 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketSet.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketSet.java @@ -94,16 +94,16 @@ class KBucketSet { /** @since 0.8.8 */ public void clear() { for (int i = 0; i < _buckets.length; i++) { - _buckets[i].setEntries(Collections.EMPTY_SET); + _buckets[i].setEntries(Collections.<Hash> emptySet()); } _size.set(0); _us.clearXorCache(); } - public Set<Hash> getAll() { return getAll(Collections.EMPTY_SET); }; + public Set<Hash> getAll() { return getAll(Collections.<Hash> emptySet()); }; public Set<Hash> getAll(Set<Hash> toIgnore) { - Set<Hash> all = new HashSet(1024); + Set<Hash> all = new HashSet<Hash>(1024); for (int i = 0; i < _buckets.length; i++) { all.addAll(_buckets[i].getEntries()); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java index 1a6b3139c6..851e7897ce 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -46,7 +46,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { /** where the data store is pushing the data */ private String _dbDir; // set of Hash objects that we should search on (to fill up a bucket, not to get data) - private final Set<Hash> _exploreKeys = new ConcurrentHashSet(64); + private final Set<Hash> _exploreKeys = new ConcurrentHashSet<Hash>(64); private boolean _initialized; /** Clock independent time of when we started up */ private long _started; @@ -138,8 +138,8 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { _context = context; _log = _context.logManager().getLog(getClass()); _peerSelector = createPeerSelector(); - _publishingLeaseSets = new HashMap(8); - _activeRequests = new HashMap(8); + _publishingLeaseSets = new HashMap<Hash, RepublishLeaseSetJob>(8); + _activeRequests = new HashMap<Hash, SearchJob>(8); _reseedChecker = new ReseedChecker(context); context.statManager().createRateStat("netDb.lookupDeferred", "how many lookups are deferred?", "NetworkDatabase", new long[] { 60*60*1000 }); context.statManager().createRateStat("netDb.exploreKeySet", "how many keys are queued for exploration?", "NetworkDatabase", new long[] { 60*60*1000 }); @@ -181,7 +181,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { /** @return unmodifiable set */ public Set<Hash> getExploreKeys() { if (!_initialized) - return Collections.EMPTY_SET; + return Collections.emptySet(); return Collections.unmodifiableSet(_exploreKeys); } @@ -323,8 +323,8 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { * @param peersToIgnore can be null */ public Set<Hash> findNearestRouters(Hash key, int maxNumRouters, Set<Hash> peersToIgnore) { - if (!_initialized) return Collections.EMPTY_SET; - return new HashSet(_peerSelector.selectNearest(key, maxNumRouters, peersToIgnore, _kb)); + if (!_initialized) return Collections.emptySet(); + return new HashSet<Hash>(_peerSelector.selectNearest(key, maxNumRouters, peersToIgnore, _kb)); } /***** @@ -349,9 +349,9 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { /** get the hashes for all known routers */ public Set<Hash> getAllRouters() { - if (!_initialized) return Collections.EMPTY_SET; + if (!_initialized) return Collections.emptySet(); Set<Map.Entry<Hash, DatabaseEntry>> entries = _ds.getMapEntries(); - Set<Hash> rv = new HashSet(entries.size()); + Set<Hash> rv = new HashSet<Hash>(entries.size()); for (Map.Entry<Hash, DatabaseEntry> entry : entries) { if (entry.getValue().getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { rv.add(entry.getKey()); @@ -988,10 +988,10 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { @Override public Set<LeaseSet> getLeases() { if (!_initialized) return null; - Set leases = new HashSet(); + Set<LeaseSet> leases = new HashSet<LeaseSet>(); for (DatabaseEntry o : getDataStore().getEntries()) { if (o.getType() == DatabaseEntry.KEY_TYPE_LEASESET) - leases.add(o); + leases.add((LeaseSet)o); } return leases; } @@ -1000,10 +1000,10 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { @Override public Set<RouterInfo> getRouters() { if (!_initialized) return null; - Set routers = new HashSet(); + Set<RouterInfo> routers = new HashSet<RouterInfo>(); for (DatabaseEntry o : getDataStore().getEntries()) { if (o.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) - routers.add(o); + routers.add((RouterInfo)o); } return routers; } @@ -1034,7 +1034,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { } /** unused (overridden in FNDF) */ - public void sendStore(Hash key, DatabaseEntry ds, Job onSuccess, Job onFailure, long sendTimeout, Set toIgnore) { + public void sendStore(Hash key, DatabaseEntry ds, Job onSuccess, Job onFailure, long sendTimeout, Set<Hash> toIgnore) { if ( (ds == null) || (key == null) ) { if (onFailure != null) _context.jobQueue().addJob(onFailure); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/LocalHash.java b/router/java/src/net/i2p/router/networkdb/kademlia/LocalHash.java index d2b10e79d7..2b3a23d356 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/LocalHash.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/LocalHash.java @@ -48,7 +48,7 @@ class LocalHash extends Hash { public void prepareCache() { synchronized (this) { if (_xorCache == null) - _xorCache = new HashMap(MAX_CACHED_XOR); + _xorCache = new HashMap<Hash, byte[]>(MAX_CACHED_XOR); } } @@ -70,13 +70,13 @@ class LocalHash extends Hash { synchronized (_xorCache) { int toRemove = _xorCache.size() + 1 - MAX_CACHED_XOR; if (toRemove > 0) { - Set keys = new HashSet(toRemove); + Set<Hash> keys = new HashSet<Hash>(toRemove); // this removes essentially random keys - we dont maintain any sort // of LRU or age. perhaps we should? int removed = 0; - for (Iterator iter = _xorCache.keySet().iterator(); iter.hasNext() && removed < toRemove; removed++) + for (Iterator<Hash> iter = _xorCache.keySet().iterator(); iter.hasNext() && removed < toRemove; removed++) keys.add(iter.next()); - for (Iterator iter = keys.iterator(); iter.hasNext(); ) + for (Iterator<Hash> iter = keys.iterator(); iter.hasNext(); ) _xorCache.remove(iter.next()); } distance = DataHelper.xor(key.getData(), getData()); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java b/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java index 12feea376a..4156ac1529 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java @@ -24,7 +24,7 @@ class LookupThrottler { private static final long CLEAN_TIME = 60*1000; LookupThrottler() { - this.counter = new ObjectCounter(); + this.counter = new ObjectCounter<ReplyTunnel>(); SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), CLEAN_TIME); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java b/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java index 672f862885..ba4615bf79 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java @@ -59,7 +59,7 @@ public class MessageWrapper { if (skm == null) return null; SessionKey sentKey = new SessionKey(); - Set<SessionTag> sentTags = new HashSet(); + Set<SessionTag> sentTags = new HashSet<SessionTag>(); GarlicMessage msg = GarlicMessageBuilder.buildMessage(ctx, payload, sentKey, sentTags, NETDB_TAGS_TO_DELIVER, NETDB_LOW_THRESHOLD, skm); if (msg == null) @@ -192,7 +192,7 @@ public class MessageWrapper { private static OneTimeSession generateSession(RouterContext ctx, SessionKeyManager skm) { SessionKey key = ctx.keyGenerator().generateSessionKey(); SessionTag tag = new SessionTag(true); - Set<SessionTag> tags = new RemovableSingletonSet(tag); + Set<SessionTag> tags = new RemovableSingletonSet<SessionTag>(tag); skm.tagsReceived(key, tags, 2*60*1000); return new OneTimeSession(key, tag); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/NegativeLookupCache.java b/router/java/src/net/i2p/router/networkdb/kademlia/NegativeLookupCache.java index c967503085..6612ea9dc4 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/NegativeLookupCache.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/NegativeLookupCache.java @@ -16,7 +16,7 @@ class NegativeLookupCache { private static final long CLEAN_TIME = 4*60*1000; public NegativeLookupCache() { - this.counter = new ObjectCounter(); + this.counter = new ObjectCounter<Hash>(); SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), CLEAN_TIME); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PeerSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/PeerSelector.java index f6b48216bc..1dc2de75ec 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/PeerSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/PeerSelector.java @@ -96,11 +96,11 @@ class PeerSelector { */ List<Hash> selectNearestExplicitThin(Hash key, int maxNumRouters, Set<Hash> peersToIgnore, KBucketSet kbuckets) { if (peersToIgnore == null) - peersToIgnore = new HashSet(1); + peersToIgnore = new HashSet<Hash>(1); peersToIgnore.add(_context.routerHash()); MatchSelectionCollector matches = new MatchSelectionCollector(key, peersToIgnore); kbuckets.getAll(matches); - List rv = matches.get(maxNumRouters); + List<Hash> rv = matches.get(maxNumRouters); if (_log.shouldLog(Log.DEBUG)) _log.debug("Searching for " + maxNumRouters + " peers close to " + key + ": " + rv + " (not including " + peersToIgnore + ") [allHashes.size = " @@ -116,7 +116,7 @@ class PeerSelector { private int _matches; public MatchSelectionCollector(Hash key, Set<Hash> toIgnore) { _key = key; - _sorted = new TreeMap(); + _sorted = new TreeMap<BigInteger, Hash>(); _toIgnore = toIgnore; _matches = 0; } @@ -138,7 +138,7 @@ class PeerSelector { } /** get the first $howMany entries matching */ public List<Hash> get(int howMany) { - List<Hash> rv = new ArrayList(howMany); + List<Hash> rv = new ArrayList<Hash>(howMany); for (int i = 0; i < howMany; i++) { if (_sorted.isEmpty()) break; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java index 8e559336a1..3074bfa164 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java @@ -196,7 +196,7 @@ class PersistentDataStore extends TransientDataStore { private volatile boolean _quit; public Writer() { - _keys = new ConcurrentHashMap(64); + _keys = new ConcurrentHashMap<Hash, DatabaseEntry>(64); _waitLock = new Object(); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java index 80815ea820..a8c84df33e 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java @@ -49,7 +49,7 @@ class SearchJob extends JobImpl { private final boolean _keepStats; private Job _pendingRequeueJob; private final PeerSelector _peerSelector; - private final List _deferredSearches; + private final List<Search> _deferredSearches; private boolean _deferredCleared; private long _startedOn; private boolean _floodfillPeersExhausted; @@ -99,7 +99,7 @@ class SearchJob extends JobImpl { _onFailure = onFailure; _timeoutMs = timeoutMs; _keepStats = keepStats; - _deferredSearches = new ArrayList(0); + _deferredSearches = new ArrayList<Search>(0); _peerSelector = facade.getPeerSelector(); _startedOn = -1; _expiration = getContext().clock().now() + timeoutMs; @@ -260,7 +260,7 @@ class SearchJob extends JobImpl { return; } int sent = 0; - Set attempted = _state.getAttempted(); + Set<Hash> attempted = _state.getAttempted(); while (sent <= 0) { //boolean onlyFloodfill = onlyQueryFloodfillPeers(getContext()); boolean onlyFloodfill = true; @@ -271,7 +271,7 @@ class SearchJob extends JobImpl { fail(); return; } - List closestHashes = getClosestRouters(_state.getTarget(), toCheck, attempted); + List<Hash> closestHashes = getClosestRouters(_state.getTarget(), toCheck, attempted); if ( (closestHashes == null) || (closestHashes.isEmpty()) ) { if (_state.getPending().isEmpty()) { // we tried to find some peers, but there weren't any and no one else is going to answer @@ -290,8 +290,8 @@ class SearchJob extends JobImpl { return; } else { attempted.addAll(closestHashes); - for (Iterator iter = closestHashes.iterator(); iter.hasNext(); ) { - Hash peer = (Hash)iter.next(); + for (Iterator<Hash> iter = closestHashes.iterator(); iter.hasNext(); ) { + Hash peer = iter.next(); DatabaseEntry ds = _facade.getDataStore().get(peer); if (ds == null) { if (_log.shouldLog(Log.INFO)) @@ -365,7 +365,7 @@ class SearchJob extends JobImpl { * * @return ordered list of Hash objects */ - private List getClosestRouters(Hash key, int numClosest, Set alreadyChecked) { + private List<Hash> getClosestRouters(Hash key, int numClosest, Set<Hash> alreadyChecked) { Hash rkey = getContext().routingKeyGenerator().getRoutingKey(key); if (_log.shouldLog(Log.DEBUG)) _log.debug(getJobId() + ": Current routing key for " + key + ": " + rkey); @@ -627,11 +627,11 @@ class SearchJob extends JobImpl { _facade.sendStore(_state.getTarget(), ds, null, null, RESEND_TIMEOUT, _state.getSuccessful()); } } else { - Set sendTo = _state.getRepliedPeers(); // _state.getFailed(); + Set<Hash> sendTo = _state.getRepliedPeers(); // _state.getFailed(); sendTo.addAll(_state.getPending()); int numSent = 0; - for (Iterator iter = sendTo.iterator(); iter.hasNext(); ) { - Hash peer = (Hash)iter.next(); + for (Iterator<Hash> iter = sendTo.iterator(); iter.hasNext(); ) { + Hash peer = iter.next(); RouterInfo peerInfo = _facade.lookupRouterInfoLocally(peer); if (peerInfo == null) continue; if (resend(peerInfo, (LeaseSet)ds)) @@ -726,10 +726,10 @@ class SearchJob extends JobImpl { } private void handleDeferred(boolean success) { - List deferred = null; + List<Search> deferred = null; synchronized (_deferredSearches) { if (!_deferredSearches.isEmpty()) { - deferred = new ArrayList(_deferredSearches); + deferred = new ArrayList<Search>(_deferredSearches); _deferredSearches.clear(); } _deferredCleared = true; @@ -737,7 +737,7 @@ class SearchJob extends JobImpl { if (deferred != null) { long now = getContext().clock().now(); for (int i = 0; i < deferred.size(); i++) { - Search cur = (Search)deferred.get(i); + Search cur = deferred.get(i); if (cur.getExpiration() < now) getContext().jobQueue().addJob(cur.getOnFail()); else if (success) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchState.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchState.java index bb04fb4617..9a4f99c43b 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchState.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchState.java @@ -31,12 +31,12 @@ class SearchState { public SearchState(RouterContext context, Hash key) { _context = context; _searchKey = key; - _pendingPeers = new HashSet(16); - _attemptedPeers = new HashSet(16); - _failedPeers = new HashSet(16); - _successfulPeers = new HashSet(16); - _pendingPeerTimes = new HashMap(16); - _repliedPeers = new HashSet(16); + _pendingPeers = new HashSet<Hash>(16); + _attemptedPeers = new HashSet<Hash>(16); + _failedPeers = new HashSet<Hash>(16); + _successfulPeers = new HashSet<Hash>(16); + _pendingPeerTimes = new HashMap<Hash, Long>(16); + _repliedPeers = new HashSet<Hash>(16); _completed = -1; _started = _context.clock().now(); } @@ -44,12 +44,12 @@ class SearchState { public Hash getTarget() { return _searchKey; } public Set<Hash> getPending() { synchronized (_pendingPeers) { - return (Set)_pendingPeers.clone(); + return (Set<Hash>)_pendingPeers.clone(); } } public Set<Hash> getAttempted() { synchronized (_attemptedPeers) { - return (Set)_attemptedPeers.clone(); + return (Set<Hash>)_attemptedPeers.clone(); } } public Set<Hash> getClosestAttempted(int max) { @@ -60,10 +60,10 @@ class SearchState { private Set<Hash> locked_getClosest(Set<Hash> peers, int max, Hash target) { if (_attemptedPeers.size() <= max) - return new HashSet(_attemptedPeers); - TreeSet closest = new TreeSet(new XORComparator(target)); + return new HashSet<Hash>(_attemptedPeers); + TreeSet<Hash> closest = new TreeSet<Hash>(new XORComparator(target)); closest.addAll(_attemptedPeers); - Set<Hash> rv = new HashSet(max); + Set<Hash> rv = new HashSet<Hash>(max); int i = 0; for (Iterator<Hash> iter = closest.iterator(); iter.hasNext() && i < max; i++) { rv.add(iter.next()); @@ -78,12 +78,12 @@ class SearchState { } public Set<Hash> getSuccessful() { synchronized (_successfulPeers) { - return (Set)_successfulPeers.clone(); + return (Set<Hash>)_successfulPeers.clone(); } } public Set<Hash> getFailed() { synchronized (_failedPeers) { - return (Set)_failedPeers.clone(); + return (Set<Hash>)_failedPeers.clone(); } } public boolean completed() { return _completed != -1; } @@ -155,7 +155,7 @@ class SearchState { } } - public Set getRepliedPeers() { synchronized (_repliedPeers) { return (Set)_repliedPeers.clone(); } } + public Set<Hash> getRepliedPeers() { synchronized (_repliedPeers) { return (Set<Hash>)_repliedPeers.clone(); } } public void replyTimeout(Hash peer) { synchronized (_pendingPeers) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StartExplorersJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StartExplorersJob.java index 8b4e05b4f7..cced2f5466 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StartExplorersJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StartExplorersJob.java @@ -133,7 +133,7 @@ class StartExplorersJob extends JobImpl { Set<Hash> queued = _facade.getExploreKeys(); if (_log.shouldLog(Log.DEBUG)) _log.debug("Keys waiting for exploration: " + queued.size()); - Set<Hash> rv = new HashSet(num); + Set<Hash> rv = new HashSet<Hash>(num); for (Hash key : queued) { if (rv.size() >= num) break; rv.add(key); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java index e70c3b6dc0..72f6315aef 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java @@ -234,7 +234,7 @@ class StoreJob extends JobImpl { private List<Hash> getClosestFloodfillRouters(Hash key, int numClosest, Set<Hash> alreadyChecked) { Hash rkey = getContext().routingKeyGenerator().getRoutingKey(key); KBucketSet ks = _facade.getKBuckets(); - if (ks == null) return new ArrayList(); + if (ks == null) return new ArrayList<Hash>(); return ((FloodfillPeerSelector)_peerSelector).selectFloodfillParticipants(rkey, numClosest, alreadyChecked, ks); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java index 876e2f4af8..b599186127 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java @@ -12,6 +12,7 @@ import java.util.concurrent.ConcurrentHashMap; import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.router.RouterContext; +import net.i2p.router.networkdb.kademlia.MessageWrapper.WrappedMessage; /** * Tracks the state of a StoreJob @@ -38,16 +39,16 @@ class StoreState { _context = ctx; _key = key; _data = data; - _pendingPeers = new HashSet(4); - _pendingPeerTimes = new HashMap(4); - _pendingMessages = new ConcurrentHashMap(4); - _attemptedPeers = new HashSet(8); + _pendingPeers = new HashSet<Hash>(4); + _pendingPeerTimes = new HashMap<Hash, Long>(4); + _pendingMessages = new ConcurrentHashMap<Hash, WrappedMessage>(4); + _attemptedPeers = new HashSet<Hash>(8); if (toSkip != null) { _attemptedPeers.addAll(toSkip); _completeCount = toSkip.size(); } - _failedPeers = new HashSet(8); - _successfulPeers = new HashSet(4); + _failedPeers = new HashSet<Hash>(8); + _successfulPeers = new HashSet<Hash>(4); //_successfulExploratoryPeers = new HashSet(16); _completed = -1; _started = _context.clock().now(); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java index 9f6ff888cf..2a7318d25f 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java @@ -33,7 +33,7 @@ class TransientDataStore implements DataStore { public TransientDataStore(RouterContext ctx) { _context = ctx; _log = ctx.logManager().getLog(getClass()); - _data = new ConcurrentHashMap(1024); + _data = new ConcurrentHashMap<Hash, DatabaseEntry>(1024); if (_log.shouldLog(Log.INFO)) _log.info("Data Store initialized"); } diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 9c8bb8eeb8..17554a1599 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -251,7 +251,7 @@ public class Reseeder { * @return count of routerinfos successfully fetched */ private int reseed(boolean echoStatus) { - List<String> URLList = new ArrayList(); + List<String> URLList = new ArrayList<String>(); String URLs = _context.getProperty(PROP_RESEED_URL); boolean defaulted = URLs == null; boolean SSLDisable = _context.getBooleanProperty(PROP_SSL_DISABLE); @@ -267,7 +267,7 @@ public class Reseeder { Collections.shuffle(URLList, _context.random()); if (defaulted && !SSLDisable) { // put the non-SSL at the end of the SSL - List<String> URLList2 = new ArrayList(); + List<String> URLList2 = new ArrayList<String>(); tok = new StringTokenizer(DEFAULT_SEED_URL, " ,"); while (tok.hasMoreTokens()) URLList2.add(tok.nextToken().trim()); @@ -334,7 +334,7 @@ public class Reseeder { String content = new String(contentRaw); // This isn't really URLs, but Base64 hashes // but they may include % encoding - Set<String> urls = new HashSet(1024); + Set<String> urls = new HashSet<String>(1024); Hash ourHash = _context.routerHash(); String ourB64 = ourHash != null ? ourHash.toBase64() : null; int cur = 0; @@ -370,7 +370,7 @@ public class Reseeder { return 0; } - List<String> urlList = new ArrayList(urls); + List<String> urlList = new ArrayList<String>(urls); Collections.shuffle(urlList, _context.random()); int fetched = 0; int errors = 0; diff --git a/router/java/src/net/i2p/router/peermanager/PeerManager.java b/router/java/src/net/i2p/router/peermanager/PeerManager.java index bf3564298a..904ca8bdb3 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerManager.java +++ b/router/java/src/net/i2p/router/peermanager/PeerManager.java @@ -73,10 +73,10 @@ class PeerManager { _persistenceHelper = new ProfilePersistenceHelper(context); _organizer = context.profileOrganizer(); _organizer.setUs(context.routerHash()); - _capabilitiesByPeer = new ConcurrentHashMap(256); - _peersByCapability = new HashMap(TRACKED_CAPS.length()); + _capabilitiesByPeer = new ConcurrentHashMap<Hash, String>(256); + _peersByCapability = new HashMap<Character, Set<Hash>>(TRACKED_CAPS.length()); for (int i = 0; i < TRACKED_CAPS.length(); i++) - _peersByCapability.put(Character.valueOf(Character.toLowerCase(TRACKED_CAPS.charAt(i))), new ConcurrentHashSet()); + _peersByCapability.put(Character.valueOf(Character.toLowerCase(TRACKED_CAPS.charAt(i))), new ConcurrentHashSet<Hash>()); loadProfilesInBackground(); ////_context.jobQueue().addJob(new EvaluateProfilesJob(_context)); //SimpleScheduler.getInstance().addPeriodicEvent(new Reorg(), 0, REORGANIZE_TIME); @@ -119,7 +119,7 @@ class PeerManager { void clearProfiles() { _organizer.clearProfiles(); _capabilitiesByPeer.clear(); - for (Set p : _peersByCapability.values()) + for (Set<Hash> p : _peersByCapability.values()) p.clear(); } @@ -177,9 +177,9 @@ class PeerManager { * Only used by PeerTestJob (PURPOSE_TEST) */ List<Hash> selectPeers(PeerSelectionCriteria criteria) { - Set<Hash> peers = new HashSet(criteria.getMinimumRequired()); + Set<Hash> peers = new HashSet<Hash>(criteria.getMinimumRequired()); // not a singleton, SANFP adds to it - Set<Hash> exclude = new HashSet(1); + Set<Hash> exclude = new HashSet<Hash>(1); exclude.add(_context.routerHash()); switch (criteria.getPurpose()) { case PeerSelectionCriteria.PURPOSE_TEST: @@ -221,7 +221,7 @@ class PeerManager { } if (_log.shouldLog(Log.INFO)) _log.info("Peers selected: " + peers); - return new ArrayList(peers); + return new ArrayList<Hash>(peers); } /** @@ -300,6 +300,6 @@ class PeerManager { Set<Hash> peers = locked_getPeers(capability); if (peers != null) return Collections.unmodifiableSet(peers); - return Collections.EMPTY_SET; + return Collections.emptySet(); } } diff --git a/router/java/src/net/i2p/router/peermanager/PeerManagerFacadeImpl.java b/router/java/src/net/i2p/router/peermanager/PeerManagerFacadeImpl.java index 433067e838..74e96cd01a 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerManagerFacadeImpl.java +++ b/router/java/src/net/i2p/router/peermanager/PeerManagerFacadeImpl.java @@ -89,7 +89,7 @@ public class PeerManagerFacadeImpl implements PeerManagerFacade { * @return non-null unmodifiable set */ public Set<Hash> getPeersByCapability(char capability) { - if (_manager == null) return Collections.EMPTY_SET; + if (_manager == null) return Collections.emptySet(); return _manager.getPeersByCapability(capability); } diff --git a/router/java/src/net/i2p/router/peermanager/PeerProfile.java b/router/java/src/net/i2p/router/peermanager/PeerProfile.java index a84f4acded..ec2e094d35 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerProfile.java +++ b/router/java/src/net/i2p/router/peermanager/PeerProfile.java @@ -73,7 +73,7 @@ public class PeerProfile { * Only routers in these countries will use a same-country metric. * Yes this is an arbitrary cutoff. */ - private static final Set<String> _bigCountries = new HashSet(); + private static final Set<String> _bigCountries = new HashSet<String>(); static { String[] big = new String[] { "fr", "de", "ru", "ua", "us" }; diff --git a/router/java/src/net/i2p/router/peermanager/PeerTestJob.java b/router/java/src/net/i2p/router/peermanager/PeerTestJob.java index bd2140091f..d9a00d40a0 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerTestJob.java +++ b/router/java/src/net/i2p/router/peermanager/PeerTestJob.java @@ -69,12 +69,12 @@ public class PeerTestJob extends JobImpl { public void runJob() { if (!_keepTesting) return; - Set peers = selectPeersToTest(); + Set<RouterInfo> peers = selectPeersToTest(); if (_log.shouldLog(Log.DEBUG)) _log.debug("Testing " + peers.size() + " peers"); - for (Iterator iter = peers.iterator(); iter.hasNext(); ) { - RouterInfo peer = (RouterInfo)iter.next(); + for (Iterator<RouterInfo> iter = peers.iterator(); iter.hasNext(); ) { + RouterInfo peer = iter.next(); if (_log.shouldLog(Log.DEBUG)) _log.debug("Testing peer " + peer.getIdentity().getHash().toBase64()); testPeer(peer); @@ -87,19 +87,19 @@ public class PeerTestJob extends JobImpl { * * @return set of RouterInfo structures */ - private Set selectPeersToTest() { + private Set<RouterInfo> selectPeersToTest() { PeerSelectionCriteria criteria = new PeerSelectionCriteria(); criteria.setMinimumRequired(getTestConcurrency()); criteria.setMaximumRequired(getTestConcurrency()); criteria.setPurpose(PeerSelectionCriteria.PURPOSE_TEST); - List peerHashes = _manager.selectPeers(criteria); + List<Hash> peerHashes = _manager.selectPeers(criteria); if (_log.shouldLog(Log.DEBUG)) _log.debug("Peer selection found " + peerHashes.size() + " peers"); - Set peers = new HashSet(peerHashes.size()); - for (Iterator iter = peerHashes.iterator(); iter.hasNext(); ) { - Hash peer = (Hash)iter.next(); + Set<RouterInfo> peers = new HashSet<RouterInfo>(peerHashes.size()); + for (Iterator<Hash> iter = peerHashes.iterator(); iter.hasNext(); ) { + Hash peer = iter.next(); RouterInfo peerInfo = getContext().netDb().lookupRouterInfoLocally(peer); if (peerInfo != null) { peers.add(peerInfo); diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java index 7096aa1397..30eb5c9dff 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java @@ -2,13 +2,10 @@ package net.i2p.router.peermanager; import java.io.IOException; import java.io.OutputStream; -import java.net.InetAddress; -import java.net.UnknownHostException; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -97,13 +94,13 @@ public class ProfileOrganizer { _context = context; _log = context.logManager().getLog(ProfileOrganizer.class); _comp = new InverseCapacityComparator(); - _fastPeers = new HashMap(32); - _highCapacityPeers = new HashMap(64); - _wellIntegratedPeers = new HashMap(128); - _notFailingPeers = new HashMap(256); - _notFailingPeersList = new ArrayList(256); - _failingPeers = new HashMap(16); - _strictCapacityOrder = new TreeSet(_comp); + _fastPeers = new HashMap<Hash, PeerProfile>(32); + _highCapacityPeers = new HashMap<Hash, PeerProfile>(64); + _wellIntegratedPeers = new HashMap<Hash, PeerProfile>(128); + _notFailingPeers = new HashMap<Hash, PeerProfile>(256); + _notFailingPeersList = new ArrayList<Hash>(256); + _failingPeers = new HashMap<Hash, PeerProfile>(16); + _strictCapacityOrder = new TreeSet<PeerProfile>(_comp); _persistenceHelper = new ProfilePersistenceHelper(_context); _context.statManager().createRateStat("peer.profileSortTime", "How long the reorg takes sorting peers", "Peers", new long[] { 60*60*1000 }); @@ -219,7 +216,7 @@ public class ProfileOrganizer { return old; } - private int count(Map m) { + private int count(Map<? extends Object, ? extends Object> m) { getReadLock(); try { return m.size(); @@ -567,7 +564,7 @@ public class ProfileOrganizer { */ private void selectActiveNotFailingPeers2(int howMany, Set<Hash> exclude, Set<Hash> matches, int mask) { if (matches.size() < howMany) { - Map<Hash, PeerProfile> activePeers = new HashMap(); + Map<Hash, PeerProfile> activePeers = new HashMap<Hash, PeerProfile>(); getReadLock(); try { for (Iterator<Map.Entry<Hash, PeerProfile>> iter = _notFailingPeers.entrySet().iterator(); iter.hasNext(); ) { @@ -604,11 +601,11 @@ public class ProfileOrganizer { if (matches.size() < howMany) { int orig = matches.size(); int needed = howMany - orig; - List selected = new ArrayList(needed); + List<Hash> selected = new ArrayList<Hash>(needed); getReadLock(); try { // use RandomIterator to avoid shuffling the whole thing - for (Iterator<Hash> iter = new RandomIterator(_notFailingPeersList); (selected.size() < needed) && iter.hasNext(); ) { + for (Iterator<Hash> iter = new RandomIterator<Hash>(_notFailingPeersList); (selected.size() < needed) && iter.hasNext(); ) { Hash cur = iter.next(); if (matches.contains(cur) || (exclude != null && exclude.contains(cur))) { @@ -666,9 +663,9 @@ public class ProfileOrganizer { getReadLock(); try { count = _notFailingPeers.size(); - n = new ArrayList(_notFailingPeers.keySet()); + n = new ArrayList<Hash>(_notFailingPeers.keySet()); } finally { releaseReadLock(); } - List<Hash> l = new ArrayList(count / 4); + List<Hash> l = new ArrayList<Hash>(count / 4); for (Iterator<Hash> iter = n.iterator(); iter.hasNext(); ) { Hash peer = iter.next(); if (_context.commSystem().wasUnreachable(peer)) @@ -719,7 +716,7 @@ public class ProfileOrganizer { try { long cutoff = _context.clock().now() - (20*1000); int count = _notFailingPeers.size(); - List<Hash> l = new ArrayList(count / 128); + List<Hash> l = new ArrayList<Hash>(count / 128); for (Iterator<PeerProfile> iter = _notFailingPeers.values().iterator(); iter.hasNext(); ) { PeerProfile prof = iter.next(); if (prof.getTunnelHistory().getLastRejectedBandwidth() > cutoff) @@ -736,7 +733,7 @@ public class ProfileOrganizer { public Set<Hash> selectAllPeers() { getReadLock(); try { - Set<Hash> allPeers = new HashSet(_failingPeers.size() + _notFailingPeers.size() + _highCapacityPeers.size() + _fastPeers.size()); + Set<Hash> allPeers = new HashSet<Hash>(_failingPeers.size() + _notFailingPeers.size() + _highCapacityPeers.size() + _fastPeers.size()); allPeers.addAll(_failingPeers.keySet()); allPeers.addAll(_notFailingPeers.keySet()); allPeers.addAll(_highCapacityPeers.keySet()); @@ -806,7 +803,7 @@ public class ProfileOrganizer { //allPeers.addAll(_highCapacityPeers.values()); //allPeers.addAll(_fastPeers.values()); - Set<PeerProfile> reordered = new TreeSet(_comp); + Set<PeerProfile> reordered = new TreeSet<PeerProfile>(_comp); long sortStart = System.currentTimeMillis(); for (Iterator<PeerProfile> iter = _strictCapacityOrder.iterator(); iter.hasNext(); ) { PeerProfile prof = iter.next(); @@ -932,7 +929,7 @@ public class ProfileOrganizer { if (_log.shouldLog(Log.INFO)) _log.info("Need to explicitly demote " + numToDemote + " peers from the fast group"); // sort by speed, slowest-first - Set<PeerProfile> sorted = new TreeSet(new SpeedComparator()); + Set<PeerProfile> sorted = new TreeSet<PeerProfile>(new SpeedComparator()); sorted.addAll(_fastPeers.values()); Iterator<PeerProfile> iter = sorted.iterator(); for (int i = 0; i < numToDemote && iter.hasNext(); i++) { @@ -1024,7 +1021,7 @@ public class ProfileOrganizer { private void locked_calculateThresholds(Set<PeerProfile> allPeers) { double totalCapacity = 0; double totalIntegration = 0; - Set<PeerProfile> reordered = new TreeSet(_comp); + Set<PeerProfile> reordered = new TreeSet<PeerProfile>(_comp); for (Iterator<PeerProfile> iter = allPeers.iterator(); iter.hasNext(); ) { PeerProfile profile = iter.next(); @@ -1217,10 +1214,10 @@ public class ProfileOrganizer { * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match */ private void locked_selectPeers(Map<Hash, PeerProfile> peers, int howMany, Set<Hash> toExclude, Set<Hash> matches, int mask) { - List<Hash> all = new ArrayList(peers.keySet()); - Set<Integer> IPSet = new HashSet(8); + List<Hash> all = new ArrayList<Hash>(peers.keySet()); + Set<Integer> IPSet = new HashSet<Integer>(8); // use RandomIterator to avoid shuffling the whole thing - for (Iterator<Hash> iter = new RandomIterator(all); (matches.size() < howMany) && iter.hasNext(); ) { + for (Iterator<Hash> iter = new RandomIterator<Hash>(all); (matches.size() < howMany) && iter.hasNext(); ) { Hash peer = iter.next(); if (toExclude != null && toExclude.contains(peer)) continue; @@ -1262,7 +1259,7 @@ public class ProfileOrganizer { * @return an opaque set of masked IPs for this peer */ private Set<Integer> maskedIPSet(Hash peer, int mask) { - Set<Integer> rv = new HashSet(4); + Set<Integer> rv = new HashSet<Integer>(4); byte[] commIP = _context.commSystem().getIP(peer); if (commIP != null) rv.add(maskedIP(commIP, mask)); @@ -1299,7 +1296,7 @@ public class ProfileOrganizer { } /** does a contain any of the elements in b? */ - private static boolean containsAny(Set a, Set b) { + private static boolean containsAny(Set<? extends Object> a, Set<? extends Object> b) { for (Object o : b) { if (a.contains(o)) return true; @@ -1320,9 +1317,9 @@ public class ProfileOrganizer { *</pre> */ private void locked_selectPeers(Map<Hash, PeerProfile> peers, int howMany, Set<Hash> toExclude, Set<Hash> matches, Hash randomKey, int subTierMode) { - List<Hash> all = new ArrayList(peers.keySet()); + List<Hash> all = new ArrayList<Hash>(peers.keySet()); // use RandomIterator to avoid shuffling the whole thing - for (Iterator<Hash> iter = new RandomIterator(all); (matches.size() < howMany) && iter.hasNext(); ) { + for (Iterator<Hash> iter = new RandomIterator<Hash>(all); (matches.size() < howMany) && iter.hasNext(); ) { Hash peer = iter.next(); if (toExclude != null && toExclude.contains(peer)) continue; diff --git a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java index 3336a443fa..32c15038c0 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java +++ b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java @@ -178,7 +178,7 @@ class ProfilePersistenceHelper { public Set<PeerProfile> readProfiles() { long start = _context.clock().now(); List<File> files = selectFiles(); - Set<PeerProfile> profiles = new HashSet(files.size()); + Set<PeerProfile> profiles = new HashSet<PeerProfile>(files.size()); for (File f : files) { PeerProfile profile = readProfile(f); if (profile != null) @@ -202,7 +202,7 @@ class ProfilePersistenceHelper { File files[] = _profileDir.listFiles(filter); if (files != null && files.length > 0) migrate(files); - List rv = new ArrayList(1024); + List<File> rv = new ArrayList<File>(1024); for (int j = 0; j < B64.length(); j++) { File subdir = new File(_profileDir, DIR_PREFIX + B64.charAt(j)); files = subdir.listFiles(filter); diff --git a/router/java/src/net/i2p/router/startup/ClientAppConfig.java b/router/java/src/net/i2p/router/startup/ClientAppConfig.java index 7d81ebd06d..9c3ff4cd6f 100644 --- a/router/java/src/net/i2p/router/startup/ClientAppConfig.java +++ b/router/java/src/net/i2p/router/startup/ClientAppConfig.java @@ -151,7 +151,7 @@ public class ClientAppConfig { try { DataHelper.loadProps(clientApps, cfgFile); } catch (IOException ioe) { - return Collections.EMPTY_LIST; + return Collections.emptyList(); } return getClientApps(clientApps); } @@ -162,7 +162,7 @@ public class ClientAppConfig { * @since 0.7.12 */ private static List<ClientAppConfig> getClientApps(Properties clientApps) { - List<ClientAppConfig> rv = new ArrayList(8); + List<ClientAppConfig> rv = new ArrayList<ClientAppConfig>(8); int i = 0; while (true) { String className = clientApps.getProperty(PREFIX + i + ".main"); diff --git a/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java b/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java index 4308c0bf6a..498cbe6658 100644 --- a/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java +++ b/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java @@ -10,7 +10,6 @@ package net.i2p.router.startup; import java.io.BufferedOutputStream; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Properties; diff --git a/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java b/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java index e31176d840..e34a71173a 100644 --- a/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java +++ b/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java @@ -36,7 +36,7 @@ public class LoadClientAppsJob extends JobImpl { if (_loaded) return; _loaded = true; } - List apps = ClientAppConfig.getClientApps(getContext()); + List<ClientAppConfig> apps = ClientAppConfig.getClientApps(getContext()); if (apps.isEmpty()) { _log.error("Warning - No client apps or router console configured - we are just a router"); System.err.println("Warning - No client apps or router console configured - we are just a router"); @@ -106,7 +106,7 @@ public class LoadClientAppsJob extends JobImpl { * @return non-null, 0-length if args is null */ public static String[] parseArgs(String args) { - List<String> argList = new ArrayList(4); + List<String> argList = new ArrayList<String>(4); if (args != null) { char data[] = args.toCharArray(); StringBuilder buf = new StringBuilder(32); diff --git a/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java b/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java index f41e4d125f..9a560da5f4 100644 --- a/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java +++ b/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java @@ -15,7 +15,6 @@ import java.io.InputStream; import java.io.IOException; import java.util.concurrent.atomic.AtomicBoolean; -import net.i2p.crypto.KeyGenerator; import net.i2p.data.DataFormatException; import net.i2p.data.PrivateKey; import net.i2p.data.PublicKey; diff --git a/router/java/src/net/i2p/router/startup/RouterAppManager.java b/router/java/src/net/i2p/router/startup/RouterAppManager.java index 1b4441fcbf..8f7ca212a5 100644 --- a/router/java/src/net/i2p/router/startup/RouterAppManager.java +++ b/router/java/src/net/i2p/router/startup/RouterAppManager.java @@ -35,8 +35,8 @@ public class RouterAppManager implements ClientAppManager { public RouterAppManager(RouterContext ctx) { _context = ctx; _log = ctx.logManager().getLog(RouterAppManager.class); - _clients = new ConcurrentHashMap(16); - _registered = new ConcurrentHashMap(8); + _clients = new ConcurrentHashMap<ClientApp, String[]>(16); + _registered = new ConcurrentHashMap<String, ClientApp>(8); ctx.addShutdownTask(new Shutdown()); } @@ -175,7 +175,7 @@ public class RouterAppManager implements ClientAppManager { * @since 0.9.6 */ public synchronized void shutdown() { - Set<ClientApp> apps = new HashSet(_clients.keySet()); + Set<ClientApp> apps = new HashSet<ClientApp>(_clients.keySet()); for (ClientApp app : apps) { ClientAppState state = app.getState(); if (state == RUNNING || state == STARTING) { @@ -214,7 +214,7 @@ public class RouterAppManager implements ClientAppManager { * @since 0.9.6 */ private void toString1(StringBuilder buf) { - List<String> list = new ArrayList(_clients.size()); + List<String> list = new ArrayList<String>(_clients.size()); for (Map.Entry<ClientApp, String[]> entry : _clients.entrySet()) { ClientApp key = entry.getKey(); String[] val = entry.getValue(); @@ -231,7 +231,7 @@ public class RouterAppManager implements ClientAppManager { * @since 0.9.6 */ private void toString2(StringBuilder buf) { - List<String> list = new ArrayList(_registered.size()); + List<String> list = new ArrayList<String>(_registered.size()); for (Map.Entry<String, ClientApp> entry : _registered.entrySet()) { String key = entry.getKey(); ClientApp val = entry.getValue(); diff --git a/router/java/src/net/i2p/router/tasks/RouterWatchdog.java b/router/java/src/net/i2p/router/tasks/RouterWatchdog.java index efe07edbda..b55ad64977 100644 --- a/router/java/src/net/i2p/router/tasks/RouterWatchdog.java +++ b/router/java/src/net/i2p/router/tasks/RouterWatchdog.java @@ -1,7 +1,5 @@ package net.i2p.router.tasks; -import java.io.File; - import net.i2p.data.DataHelper; import net.i2p.router.Job; import net.i2p.router.CommSystemFacade; @@ -10,7 +8,6 @@ import net.i2p.router.RouterContext; import net.i2p.router.util.EventLog; import net.i2p.stat.Rate; import net.i2p.stat.RateStat; -import net.i2p.util.ShellCommand; import net.i2p.util.Log; import net.i2p.util.SystemVersion; diff --git a/router/java/src/net/i2p/router/time/NtpClient.java b/router/java/src/net/i2p/router/time/NtpClient.java index 3a1d8ab06c..a30b92f70f 100644 --- a/router/java/src/net/i2p/router/time/NtpClient.java +++ b/router/java/src/net/i2p/router/time/NtpClient.java @@ -65,7 +65,7 @@ class NtpClient { public static long currentTime(String serverNames[]) { if (serverNames == null) throw new IllegalArgumentException("No NTP servers specified"); - ArrayList names = new ArrayList(serverNames.length); + ArrayList<String> names = new ArrayList<String>(serverNames.length); for (int i = 0; i < serverNames.length; i++) names.add(serverNames[i]); Collections.shuffle(names); @@ -87,7 +87,7 @@ class NtpClient { public static long[] currentTimeAndStratum(String serverNames[]) { if (serverNames == null) throw new IllegalArgumentException("No NTP servers specified"); - ArrayList names = new ArrayList(serverNames.length); + ArrayList<String> names = new ArrayList<String>(serverNames.length); for (int i = 0; i < serverNames.length; i++) names.add(serverNames[i]); Collections.shuffle(names); diff --git a/router/java/src/net/i2p/router/time/RouterTimestamper.java b/router/java/src/net/i2p/router/time/RouterTimestamper.java index d835b66f9c..33ba07b9cb 100644 --- a/router/java/src/net/i2p/router/time/RouterTimestamper.java +++ b/router/java/src/net/i2p/router/time/RouterTimestamper.java @@ -61,8 +61,8 @@ public class RouterTimestamper extends Timestamper { public RouterTimestamper(I2PAppContext ctx, UpdateListener lsnr, boolean daemon) { super(); // moved here to prevent problems with synchronized statements. - _servers = new ArrayList(3); - _listeners = new CopyOnWriteArrayList(); + _servers = new ArrayList<String>(3); + _listeners = new CopyOnWriteArrayList<UpdateListener>(); _context = ctx; _daemon = daemon; // DO NOT initialize _log here, stack overflow via LogManager init loop @@ -178,7 +178,7 @@ public class RouterTimestamper extends Timestamper { lastFailed = !queryTime(_servers.toArray(new String[_servers.size()])); } catch (IllegalArgumentException iae) { if ( (!_initialized) && (_log.shouldLog(Log.ERROR)) ) { - List<String> all = new ArrayList(); + List<String> all = new ArrayList<String>(); if (_priorityServers != null) all.addAll(_priorityServers); all.addAll(_servers); @@ -299,7 +299,7 @@ public class RouterTimestamper extends Timestamper { country = country.toLowerCase(Locale.US); } if (country != null && country.length() > 0) { - _priorityServers = new ArrayList(3); + _priorityServers = new ArrayList<String>(3); for (int i = 0; i < 3; i++) _priorityServers.add(i + "." + country + ".pool.ntp.org"); } else { diff --git a/router/java/src/net/i2p/router/transport/BadCountries.java b/router/java/src/net/i2p/router/transport/BadCountries.java index f5d36b64ac..4a85f2644b 100644 --- a/router/java/src/net/i2p/router/transport/BadCountries.java +++ b/router/java/src/net/i2p/router/transport/BadCountries.java @@ -56,7 +56,7 @@ abstract class BadCountries { /* Vietnam */ "VN", /* Yemen */ "YE" }; - _countries = new HashSet(Arrays.asList(c)); + _countries = new HashSet<String>(Arrays.asList(c)); } /** @param country non-null, two letter code, case-independent */ diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index d6401ae482..d216ba0e8a 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -12,12 +12,9 @@ import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Locale; -import java.util.Map; -import java.util.Properties; import java.util.Vector; import net.i2p.data.Hash; @@ -30,7 +27,6 @@ import net.i2p.router.transport.udp.UDPTransport; import net.i2p.router.util.EventLog; import net.i2p.util.Addresses; import net.i2p.util.Log; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; import net.i2p.util.SimpleTimer2; import net.i2p.util.Translate; @@ -191,7 +187,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade { // No, don't do this, it makes it almost impossible to build inbound tunnels //if (_context.router().isHidden()) // return Collections.EMPTY_SET; - List<RouterAddress> addresses = new ArrayList(_manager.getAddresses()); + List<RouterAddress> addresses = new ArrayList<RouterAddress>(_manager.getAddresses()); if (_log.shouldLog(Log.INFO)) _log.info("Creating addresses: " + addresses, new Exception("creator")); return addresses; diff --git a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java index 1b79fd740f..231dadeec5 100644 --- a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java +++ b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java @@ -91,8 +91,8 @@ public class FIFOBandwidthLimiter { _context.statManager().createRateStat("bwLimiter.pendingInboundRequests", "How many inbound requests are ahead of the current one (ignoring ones with 0)?", "BandwidthLimiter", new long[] { 5*60*1000l, 60*60*1000l }); _context.statManager().createRateStat("bwLimiter.outboundDelayedTime", "How long it takes to honor an outbound request (ignoring ones with that go instantly)?", "BandwidthLimiter", new long[] { 5*60*1000l, 60*60*1000l }); _context.statManager().createRateStat("bwLimiter.inboundDelayedTime", "How long it takes to honor an inbound request (ignoring ones with that go instantly)?", "BandwidthLimiter", new long[] { 5*60*1000l, 60*60*1000l }); - _pendingInboundRequests = new ArrayList(16); - _pendingOutboundRequests = new ArrayList(16); + _pendingInboundRequests = new ArrayList<Request>(16); + _pendingOutboundRequests = new ArrayList<Request>(16); _lastTotalSent = _totalAllocatedOutboundBytes.get(); _lastTotalReceived = _totalAllocatedInboundBytes.get(); _lastStatsUpdated = now(); @@ -796,7 +796,7 @@ public class FIFOBandwidthLimiter { * @param priority 0 for now */ public SimpleRequest(int bytes, int priority) { - satisfiedBuffer = new ArrayList(1); + satisfiedBuffer = new ArrayList<Request>(1); _total = bytes; _priority = priority; // following two are temp until switch to PBQ diff --git a/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java b/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java index 48717ecb84..4da99288ed 100644 --- a/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java +++ b/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java @@ -7,6 +7,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; import net.i2p.I2PAppContext; import net.i2p.data.DataHelper; +import net.i2p.router.transport.FIFOBandwidthLimiter.Request; import net.i2p.util.Log; /** @@ -92,7 +93,7 @@ public class FIFOBandwidthRefiller implements Runnable { public void run() { // bootstrap 'em with nothing _lastRefillTime = _limiter.now(); - List<FIFOBandwidthLimiter.Request> buffer = new ArrayList(2); + List<FIFOBandwidthLimiter.Request> buffer = new ArrayList<Request>(2); while (_isRunning) { long now = _limiter.now(); if (now >= _lastCheckConfigTime + _configCheckPeriodMs) { diff --git a/router/java/src/net/i2p/router/transport/GeoIP.java b/router/java/src/net/i2p/router/transport/GeoIP.java index bb4232f07e..cad3654c02 100644 --- a/router/java/src/net/i2p/router/transport/GeoIP.java +++ b/router/java/src/net/i2p/router/transport/GeoIP.java @@ -8,9 +8,7 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.File; import java.io.FileInputStream; -import java.net.InetAddress; import java.io.InputStreamReader; -import java.net.UnknownHostException; import java.util.Arrays; import java.util.Locale; import java.util.Map; @@ -62,12 +60,12 @@ class GeoIP { public GeoIP(RouterContext context) { _context = context; _log = context.logManager().getLog(GeoIP.class); - _codeToName = new ConcurrentHashMap(512); - _codeCache = new ConcurrentHashMap(512); - _IPToCountry = new ConcurrentHashMap(); - _pendingSearch = new ConcurrentHashSet(); - _pendingIPv6Search = new ConcurrentHashSet(); - _notFound = new ConcurrentHashSet(); + _codeToName = new ConcurrentHashMap<String, String>(512); + _codeCache = new ConcurrentHashMap<String, String>(512); + _IPToCountry = new ConcurrentHashMap<Long, String>(); + _pendingSearch = new ConcurrentHashSet<Long>(); + _pendingIPv6Search = new ConcurrentHashSet<Long>(); + _notFound = new ConcurrentHashSet<Long>(); _lock = new AtomicBoolean(); readCountryFile(); } diff --git a/router/java/src/net/i2p/router/transport/GeoIPv6.java b/router/java/src/net/i2p/router/transport/GeoIPv6.java index ebf79e5d14..f26e33a7eb 100644 --- a/router/java/src/net/i2p/router/transport/GeoIPv6.java +++ b/router/java/src/net/i2p/router/transport/GeoIPv6.java @@ -154,7 +154,7 @@ class GeoIPv6 { */ private static boolean compressGeoIPv6CSVFiles(List<File> inFiles, File outFile) { boolean DEBUG = false; - List<V6Entry> entries = new ArrayList(20000); + List<V6Entry> entries = new ArrayList<V6Entry>(20000); for (File geoFile : inFiles) { int count = 0; InputStream in = null; @@ -342,7 +342,7 @@ class GeoIPv6 { System.err.println("Usage: GeoIPv6 infile1.csv [infile2.csv...] outfile.dat.gz"); System.exit(1); } - List<File> infiles = new ArrayList(); + List<File> infiles = new ArrayList<File>(); for (int i = 0; i < args.length - 1; i++) { infiles.add(new File(args[i])); } @@ -353,6 +353,6 @@ class GeoIPv6 { System.exit(1); } // readback for testing - readGeoIPFile(outfile, new Long[] { Long.MAX_VALUE }, Collections.EMPTY_MAP, new Log(GeoIPv6.class)); + readGeoIPFile(outfile, new Long[] { Long.MAX_VALUE }, Collections.<String, String> emptyMap(), new Log(GeoIPv6.class)); } } diff --git a/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java b/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java index 947127f1e9..9eabbd7191 100644 --- a/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java +++ b/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java @@ -51,9 +51,9 @@ public class OutboundMessageRegistry { public OutboundMessageRegistry(RouterContext context) { _context = context; _log = _context.logManager().getLog(OutboundMessageRegistry.class); - _selectors = new ArrayList(64); - _selectorToMessage = new HashMap(64); - _activeMessages = new ConcurrentHashSet(64); + _selectors = new ArrayList<MessageSelector>(64); + _selectorToMessage = new HashMap<MessageSelector, Object>(64); + _activeMessages = new ConcurrentHashSet<OutNetMessage>(64); _cleanupTask = new CleanupTask(); } @@ -108,10 +108,10 @@ public class OutboundMessageRegistry { MessageSelector sel = _selectors.get(i); boolean isMatch = sel.isMatch(message); if (isMatch) { - if (matchedSelectors == null) matchedSelectors = new ArrayList(1); + if (matchedSelectors == null) matchedSelectors = new ArrayList<MessageSelector>(1); matchedSelectors.add(sel); if (!sel.continueMatching()) { - if (removedSelectors == null) removedSelectors = new ArrayList(1); + if (removedSelectors == null) removedSelectors = new ArrayList<MessageSelector>(1); removedSelectors.add(sel); //iter.remove(); _selectors.remove(i); @@ -123,11 +123,11 @@ public class OutboundMessageRegistry { List<OutNetMessage> rv = null; if (matchedSelectors != null) { - rv = new ArrayList(matchedSelectors.size()); + rv = new ArrayList<OutNetMessage>(matchedSelectors.size()); for (MessageSelector sel : matchedSelectors) { boolean removed = false; OutNetMessage msg = null; - List msgs = null; + List<OutNetMessage> msgs = null; synchronized (_selectorToMessage) { Object o = null; if ( (removedSelectors != null) && (removedSelectors.contains(sel)) ) { @@ -154,7 +154,7 @@ public class OutboundMessageRegistry { } } } else { - rv = Collections.EMPTY_LIST; + rv = Collections.emptyList(); } return rv; @@ -202,11 +202,11 @@ public class OutboundMessageRegistry { synchronized (_selectorToMessage) { Object oldMsg = _selectorToMessage.put(sel, msg); if (oldMsg != null) { - List multi = null; + List<OutNetMessage> multi = null; if (oldMsg instanceof OutNetMessage) { //multi = Collections.synchronizedList(new ArrayList(4)); - multi = new ArrayList(4); - multi.add(oldMsg); + multi = new ArrayList<OutNetMessage>(4); + multi.add((OutNetMessage)oldMsg); multi.add(msg); _selectorToMessage.put(sel, multi); } else if (oldMsg instanceof List) { @@ -261,7 +261,7 @@ public class OutboundMessageRegistry { public void timeReached() { long now = _context.clock().now(); - List<MessageSelector> removing = new ArrayList(8); + List<MessageSelector> removing = new ArrayList<MessageSelector>(8); synchronized (_selectors) { // CME? //for (Iterator<MessageSelector> iter = _selectors.iterator(); iter.hasNext(); ) { diff --git a/router/java/src/net/i2p/router/transport/TransportImpl.java b/router/java/src/net/i2p/router/transport/TransportImpl.java index 89b6cbeda7..ccdfaada58 100644 --- a/router/java/src/net/i2p/router/transport/TransportImpl.java +++ b/router/java/src/net/i2p/router/transport/TransportImpl.java @@ -23,7 +23,6 @@ import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.Vector; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.CopyOnWriteArrayList; @@ -43,7 +42,6 @@ import net.i2p.router.RouterContext; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.LHMCache; import net.i2p.util.Log; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; import net.i2p.util.SystemVersion; import net.i2p.util.Translate; @@ -75,7 +73,7 @@ public abstract class TransportImpl implements Transport { long max = 4096; // 1024 nominal for 128 MB int size = (int) Math.max(min, Math.min(max, 1 + (maxMemory / (128*1024)))); - _IPMap = new LHMCache(size); + _IPMap = new LHMCache<Hash, byte[]>(size); } /** @@ -95,14 +93,14 @@ public abstract class TransportImpl implements Transport { //_context.statManager().createRateStat("transport.sendProcessingTime." + getStyle(), "Time to process and send a message (ms)", "Transport", new long[] { 60*1000l }); _context.statManager().createRateStat("transport.expiredOnQueueLifetime", "How long a message that expires on our outbound queue is processed", "Transport", new long[] { 60*1000l, 10*60*1000l, 60*60*1000l, 24*60*60*1000l } ); - _currentAddresses = new CopyOnWriteArrayList(); + _currentAddresses = new CopyOnWriteArrayList<RouterAddress>(); if (getStyle().equals("NTCP")) - _sendPool = new ArrayBlockingQueue(8); + _sendPool = new ArrayBlockingQueue<OutNetMessage>(8); else _sendPool = null; - _unreachableEntries = new HashMap(32); - _wasUnreachableEntries = new HashMap(32); - _localAddresses = new ConcurrentHashSet(4); + _unreachableEntries = new HashMap<Hash, Long>(32); + _wasUnreachableEntries = new HashMap<Hash, Long>(32); + _localAddresses = new ConcurrentHashSet<InetAddress>(4); _context.simpleScheduler().addPeriodicEvent(new CleanupUnreachable(), 2 * UNREACHABLE_PERIOD, UNREACHABLE_PERIOD / 2); } @@ -179,7 +177,7 @@ public abstract class TransportImpl implements Transport { */ public Vector getClockSkews() { return new Vector(); } - public List<String> getMostRecentErrorMessages() { return Collections.EMPTY_LIST; } + public List<String> getMostRecentErrorMessages() { return Collections.emptyList(); } /** * Nonblocking call to pull the next outbound message @@ -564,7 +562,7 @@ public abstract class TransportImpl implements Transport { * @since IPv6 */ protected Collection<InetAddress> getSavedLocalAddresses() { - List<InetAddress> rv = new ArrayList(_localAddresses); + List<InetAddress> rv = new ArrayList<InetAddress>(_localAddresses); _localAddresses.clear(); return rv; } diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java index 52c79f941c..af12b515b5 100644 --- a/router/java/src/net/i2p/router/transport/TransportManager.java +++ b/router/java/src/net/i2p/router/transport/TransportManager.java @@ -13,9 +13,7 @@ import java.io.Writer; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -31,6 +29,7 @@ import net.i2p.router.CommSystemFacade; import net.i2p.router.OutNetMessage; import net.i2p.router.RouterContext; import static net.i2p.router.transport.Transport.AddressSource.*; +import net.i2p.router.transport.TransportManager.Port; import net.i2p.router.transport.crypto.DHSessionKeyBuilder; import net.i2p.router.transport.ntcp.NTCPTransport; import net.i2p.router.transport.udp.UDPTransport; @@ -66,7 +65,7 @@ public class TransportManager implements TransportEventListener { _context.statManager().createRateStat("transport.bidFailSelf", "Could not attempt to bid on message, as it targeted ourselves", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); _context.statManager().createRateStat("transport.bidFailNoTransports", "Could not attempt to bid on message, as none of the transports could attempt it", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); _context.statManager().createRateStat("transport.bidFailAllTransports", "Could not attempt to bid on message, as all of the transports had failed", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); - _transports = new ConcurrentHashMap(2); + _transports = new ConcurrentHashMap<String, Transport>(2); if (_context.getBooleanPropertyDefaultTrue(PROP_ENABLE_UPNP)) _upnpManager = new UPnPManager(context, this); else @@ -168,7 +167,7 @@ public class TransportManager implements TransportEventListener { _log.debug("Starting up the transport manager"); // Let's do this in a predictable order to make testing easier // Start NTCP first so it can get notified from SSU - List<Transport> tps = new ArrayList(); + List<Transport> tps = new ArrayList<Transport>(); Transport tp = getTransport(NTCPTransport.STYLE); if (tp != null) tps.add(tp); @@ -363,7 +362,7 @@ public class TransportManager implements TransportEventListener { * This forces a rebuild */ public List<RouterAddress> getAddresses() { - List<RouterAddress> rv = new ArrayList(4); + List<RouterAddress> rv = new ArrayList<RouterAddress>(4); // do this first since SSU may force a NTCP change for (Transport t : _transports.values()) t.updateAddress(); @@ -406,7 +405,7 @@ public class TransportManager implements TransportEventListener { * which we will pass along to UPnP */ private Set<Port> getPorts() { - Set<Port> rv = new HashSet(4); + Set<Port> rv = new HashSet<Port>(4); for (Transport t : _transports.values()) { int port = t.getRequestedPort(); // Use UDP port for NTCP too - see comment in NTCPTransport.getRequestedPort() for why this is here @@ -435,7 +434,7 @@ public class TransportManager implements TransportEventListener { if (_context.router().getRouterInfo().equals(msg.getTarget())) throw new IllegalArgumentException("WTF, bids for a message bound to ourselves?"); - List<TransportBid> rv = new ArrayList(_transports.size()); + List<TransportBid> rv = new ArrayList<TransportBid>(_transports.size()); Set failedTransports = msg.getFailedTransports(); for (Transport t : _transports.values()) { if (failedTransports.contains(t.getStyle())) { @@ -535,7 +534,7 @@ public class TransportManager implements TransportEventListener { } public List<String> getMostRecentErrorMessages() { - List<String> rv = new ArrayList(16); + List<String> rv = new ArrayList<String>(16); for (Transport t : _transports.values()) { rv.addAll(t.getMostRecentErrorMessages()); } @@ -543,7 +542,7 @@ public class TransportManager implements TransportEventListener { } public void renderStatusHTML(Writer out, String urlBase, int sortFlags) throws IOException { - TreeMap<String, Transport> transports = new TreeMap(); + TreeMap<String, Transport> transports = new TreeMap<String, Transport>(); for (Transport t : _transports.values()) { transports.put(t.getStyle(), t); } diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java index 980de066f8..3c69e4d2a4 100644 --- a/router/java/src/net/i2p/router/transport/UPnP.java +++ b/router/java/src/net/i2p/router/transport/UPnP.java @@ -266,9 +266,9 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { } private void registerPortMappings() { - Set ports; + Set<ForwardPort> ports; synchronized(lock) { - ports = new HashSet(portsForwarded); + ports = new HashSet<ForwardPort>(portsForwarded); } if (ports.isEmpty()) return; @@ -326,9 +326,9 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { } public void unregisterPortMappings() { - Set ports; + Set<ForwardPort> ports; synchronized(lock) { - ports = new HashSet(portsForwarded); + ports = new HashSet<ForwardPort>(portsForwarded); } if (ports.isEmpty()) return; @@ -918,7 +918,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { ForwardPortStatus fps = new ForwardPortStatus(ForwardPortStatus.DEFINITE_FAILURE, "UPnP device does not support port forwarding", port.portNumber); - Map map = Collections.singletonMap(port, fps); + Map<ForwardPort, ForwardPortStatus> map = Collections.singletonMap(port, fps); forwardCallback.portForwardStatus(map); } return; @@ -949,7 +949,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { } else { fps = new ForwardPortStatus(ForwardPortStatus.PROBABLE_FAILURE, "UPnP port forwarding apparently failed", port.portNumber); } - Map map = Collections.singletonMap(port, fps); + Map<ForwardPort, ForwardPortStatus> map = Collections.singletonMap(port, fps); try { forwardCallback.portForwardStatus(map); } catch (Exception e) { diff --git a/router/java/src/net/i2p/router/transport/UPnPManager.java b/router/java/src/net/i2p/router/transport/UPnPManager.java index b3fb90cc2b..d7e5544e0b 100644 --- a/router/java/src/net/i2p/router/transport/UPnPManager.java +++ b/router/java/src/net/i2p/router/transport/UPnPManager.java @@ -6,7 +6,6 @@ package net.i2p.router.transport; import java.net.InetAddress; import java.util.HashSet; -import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -122,7 +121,7 @@ class UPnPManager { return; //} - Set<ForwardPort> forwards = new HashSet(ports.size()); + Set<ForwardPort> forwards = new HashSet<ForwardPort>(ports.size()); for (TransportManager.Port entry : ports) { String style = entry.style; int port = entry.port; diff --git a/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java b/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java index 592d0f90f8..68ade63967 100644 --- a/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java +++ b/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java @@ -17,7 +17,6 @@ import java.util.concurrent.LinkedBlockingQueue; import net.i2p.I2PAppContext; import net.i2p.I2PException; import net.i2p.crypto.CryptoConstants; -import net.i2p.crypto.KeyGenerator; import net.i2p.crypto.SHA256Generator; import net.i2p.data.ByteArray; //import net.i2p.data.DataHelper; @@ -470,7 +469,7 @@ public class DHSessionKeyBuilder { if (_log.shouldLog(Log.DEBUG)) _log.debug("DH Precalc (minimum: " + _minSize + " max: " + _maxSize + ", delay: " + _calcDelay + ")"); - _builders = new LinkedBlockingQueue(_maxSize); + _builders = new LinkedBlockingQueue<DHSessionKeyBuilder>(_maxSize); setPriority(Thread.MIN_PRIORITY); } diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java index fb1a3ff69c..d637901f54 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java @@ -6,7 +6,6 @@ import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.SocketChannel; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import java.util.Queue; import java.util.Set; @@ -30,7 +29,7 @@ import net.i2p.router.OutNetMessage; import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.transport.FIFOBandwidthLimiter; -import net.i2p.router.util.CoDelPriorityBlockingQueue; +import net.i2p.router.transport.FIFOBandwidthLimiter.Request; import net.i2p.router.util.PriBlockingQueue; import net.i2p.util.ByteCache; import net.i2p.util.ConcurrentHashSet; @@ -170,12 +169,12 @@ class NTCPConnection { _transport = transport; _remAddr = null; _chan = chan; - _readBufs = new ConcurrentLinkedQueue(); - _writeBufs = new ConcurrentLinkedQueue(); - _bwInRequests = new ConcurrentHashSet(2); - _bwOutRequests = new ConcurrentHashSet(8); + _readBufs = new ConcurrentLinkedQueue<ByteBuffer>(); + _writeBufs = new ConcurrentLinkedQueue<ByteBuffer>(); + _bwInRequests = new ConcurrentHashSet<Request>(2); + _bwOutRequests = new ConcurrentHashSet<Request>(8); //_outbound = new CoDelPriorityBlockingQueue(ctx, "NTCP-Connection", 32); - _outbound = new PriBlockingQueue(ctx, "NTCP-Connection", 32); + _outbound = new PriBlockingQueue<OutNetMessage>(ctx, "NTCP-Connection", 32); _isInbound = true; _decryptBlockBuf = new byte[BLOCK_SIZE]; _curReadState = new ReadState(); @@ -198,12 +197,12 @@ class NTCPConnection { _transport = transport; _remotePeer = remotePeer; _remAddr = remAddr; - _readBufs = new ConcurrentLinkedQueue(); - _writeBufs = new ConcurrentLinkedQueue(); - _bwInRequests = new ConcurrentHashSet(2); - _bwOutRequests = new ConcurrentHashSet(8); + _readBufs = new ConcurrentLinkedQueue<ByteBuffer>(); + _writeBufs = new ConcurrentLinkedQueue<ByteBuffer>(); + _bwInRequests = new ConcurrentHashSet<Request>(2); + _bwOutRequests = new ConcurrentHashSet<Request>(8); //_outbound = new CoDelPriorityBlockingQueue(ctx, "NTCP-Connection", 32); - _outbound = new PriBlockingQueue(ctx, "NTCP-Connection", 32); + _outbound = new PriBlockingQueue<OutNetMessage>(ctx, "NTCP-Connection", 32); _isInbound = false; _establishState = new EstablishState(ctx, transport, this); _decryptBlockBuf = new byte[BLOCK_SIZE]; @@ -381,7 +380,7 @@ class NTCPConnection { EventPumper.releaseBuf(bb); } - List<OutNetMessage> pending = new ArrayList(); + List<OutNetMessage> pending = new ArrayList<OutNetMessage>(); //_outbound.drainAllTo(pending); _outbound.drainTo(pending); for (OutNetMessage msg : pending) { @@ -869,7 +868,7 @@ class NTCPConnection { NUM_PREP_BUFS = (int) Math.max(MIN_BUFS, Math.min(MAX_BUFS, 1 + (maxMemory / (16*1024*1024)))); } - private final static LinkedBlockingQueue<PrepBuffer> _bufs = new LinkedBlockingQueue(NUM_PREP_BUFS); + private final static LinkedBlockingQueue<PrepBuffer> _bufs = new LinkedBlockingQueue<PrepBuffer>(NUM_PREP_BUFS); /** * 32KB each @@ -1330,7 +1329,7 @@ class NTCPConnection { /** * FIXME static queue mixes handlers from different contexts in multirouter JVM */ - private final static LinkedBlockingQueue<I2NPMessageHandler> _i2npHandlers = new LinkedBlockingQueue(MAX_HANDLERS); + private final static LinkedBlockingQueue<I2NPMessageHandler> _i2npHandlers = new LinkedBlockingQueue<I2NPMessageHandler>(MAX_HANDLERS); private final static I2NPMessageHandler acquireHandler(RouterContext ctx) { I2NPMessageHandler rv = _i2npHandlers.poll(); diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java index 884737b31d..4392fdc2b6 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -12,7 +12,6 @@ import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -31,7 +30,6 @@ import net.i2p.data.RouterInfo; import net.i2p.router.CommSystemFacade; import net.i2p.router.OutNetMessage; import net.i2p.router.RouterContext; -import net.i2p.router.transport.CommSystemFacadeImpl; import net.i2p.router.transport.Transport; import static net.i2p.router.transport.Transport.AddressSource.*; import net.i2p.router.transport.TransportBid; @@ -39,7 +37,6 @@ import net.i2p.router.transport.TransportImpl; import net.i2p.router.transport.TransportUtil; import static net.i2p.router.transport.TransportUtil.IPv6Config.*; import net.i2p.router.transport.crypto.DHSessionKeyBuilder; -import net.i2p.router.transport.udp.UDPTransport; import net.i2p.util.Addresses; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.Log; @@ -170,10 +167,10 @@ public class NTCPTransport extends TransportImpl { _context.statManager().createRateStat("ntcp.wantsQueuedWrite", "", "ntcp", RATES); //_context.statManager().createRateStat("ntcp.write", "", "ntcp", RATES); _context.statManager().createRateStat("ntcp.writeError", "", "ntcp", RATES); - _endpoints = new HashSet(4); - _establishing = new ConcurrentHashSet(16); + _endpoints = new HashSet<InetSocketAddress>(4); + _establishing = new ConcurrentHashSet<NTCPConnection>(16); _conLock = new Object(); - _conByIdent = new ConcurrentHashMap(64); + _conByIdent = new ConcurrentHashMap<Hash, NTCPConnection>(64); _finisher = new NTCPSendFinisher(ctx, this); @@ -472,7 +469,7 @@ public class NTCPTransport extends TransportImpl { */ @Override public Vector<Long> getClockSkews() { - Vector<Long> skews = new Vector(); + Vector<Long> skews = new Vector<Long>(); for (NTCPConnection con : _conByIdent.values()) { if (con.isEstablished()) @@ -1088,7 +1085,7 @@ public class NTCPTransport extends TransportImpl { _finisher.stop(); List<NTCPConnection> cons; synchronized (_conLock) { - cons = new ArrayList(_conByIdent.values()); + cons = new ArrayList<NTCPConnection>(_conByIdent.values()); _conByIdent.clear(); } for (NTCPConnection con : cons) { @@ -1105,7 +1102,7 @@ public class NTCPTransport extends TransportImpl { @Override public void renderStatusHTML(java.io.Writer out, String urlBase, int sortFlags) throws IOException { - TreeSet<NTCPConnection> peers = new TreeSet(getComparator(sortFlags)); + TreeSet<NTCPConnection> peers = new TreeSet<NTCPConnection>(getComparator(sortFlags)); peers.addAll(_conByIdent.values()); long offsetTotal = 0; @@ -1220,8 +1217,8 @@ public class NTCPTransport extends TransportImpl { synchronized (_rateFmt) { return _rateFmt.format(rate); } } - private Comparator getComparator(int sortFlags) { - Comparator rv = null; + private Comparator<NTCPConnection> getComparator(int sortFlags) { + Comparator<NTCPConnection> rv = null; switch (Math.abs(sortFlags)) { default: rv = AlphaComparator.instance(); diff --git a/router/java/src/net/i2p/router/transport/ntcp/Reader.java b/router/java/src/net/i2p/router/transport/ntcp/Reader.java index 87f332f517..d16ea85b7d 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/Reader.java +++ b/router/java/src/net/i2p/router/transport/ntcp/Reader.java @@ -30,10 +30,10 @@ class Reader { public Reader(RouterContext ctx) { _context = ctx; _log = ctx.logManager().getLog(getClass()); - _pendingConnections = new LinkedHashSet(16); - _runners = new ArrayList(8); - _liveReads = new HashSet(8); - _readAfterLive = new HashSet(8); + _pendingConnections = new LinkedHashSet<NTCPConnection>(16); + _runners = new ArrayList<Runner>(8); + _liveReads = new HashSet<NTCPConnection>(8); + _readAfterLive = new HashSet<NTCPConnection>(8); } public synchronized void startReading(int numReaders) { diff --git a/router/java/src/net/i2p/router/transport/ntcp/Writer.java b/router/java/src/net/i2p/router/transport/ntcp/Writer.java index af5bcb0b98..3a5eb1884b 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/Writer.java +++ b/router/java/src/net/i2p/router/transport/ntcp/Writer.java @@ -26,10 +26,10 @@ class Writer { public Writer(RouterContext ctx) { _log = ctx.logManager().getLog(getClass()); - _pendingConnections = new LinkedHashSet(16); - _runners = new ArrayList(5); - _liveWrites = new HashSet(5); - _writeAfterLive = new HashSet(5); + _pendingConnections = new LinkedHashSet<NTCPConnection>(16); + _runners = new ArrayList<Runner>(5); + _liveWrites = new HashSet<NTCPConnection>(5); + _writeAfterLive = new HashSet<NTCPConnection>(5); } public synchronized void startWriting(int numWriters) { diff --git a/router/java/src/net/i2p/router/transport/udp/ACKSender.java b/router/java/src/net/i2p/router/transport/udp/ACKSender.java index 8fef9c4342..7d93553026 100644 --- a/router/java/src/net/i2p/router/transport/udp/ACKSender.java +++ b/router/java/src/net/i2p/router/transport/udp/ACKSender.java @@ -34,7 +34,7 @@ class ACKSender implements Runnable { _context = ctx; _log = ctx.logManager().getLog(ACKSender.class); _transport = transport; - _peersToACK = new LinkedBlockingQueue(); + _peersToACK = new LinkedBlockingQueue<PeerState>(); _builder = new PacketBuilder(_context, transport); _alive = true; _context.statManager().createRateStat("udp.sendACKCount", "how many ack messages were sent to a peer", "udp", UDPTransport.RATES); @@ -86,7 +86,7 @@ class ACKSender implements Runnable { public void run() { // we use a Set to strip out dups that come in on the Queue - Set<PeerState> notYet = new HashSet(); + Set<PeerState> notYet = new HashSet<PeerState>(); while (_alive) { PeerState peer = null; long now = 0; diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java index 05dd8c6023..47d25f9714 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -9,8 +9,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import net.i2p.data.Base64; -import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.data.RouterAddress; import net.i2p.data.RouterIdentity; @@ -127,12 +125,12 @@ class EstablishmentManager { _log = ctx.logManager().getLog(EstablishmentManager.class); _transport = transport; _builder = new PacketBuilder(ctx, transport); - _inboundStates = new ConcurrentHashMap(); - _outboundStates = new ConcurrentHashMap(); - _queuedOutbound = new ConcurrentHashMap(); - _liveIntroductions = new ConcurrentHashMap(); - _outboundByClaimedAddress = new ConcurrentHashMap(); - _outboundByHash = new ConcurrentHashMap(); + _inboundStates = new ConcurrentHashMap<RemoteHostId, InboundEstablishState>(); + _outboundStates = new ConcurrentHashMap<RemoteHostId, OutboundEstablishState>(); + _queuedOutbound = new ConcurrentHashMap<RemoteHostId, List<OutNetMessage>>(); + _liveIntroductions = new ConcurrentHashMap<Long, OutboundEstablishState>(); + _outboundByClaimedAddress = new ConcurrentHashMap<RemoteHostId, OutboundEstablishState>(); + _outboundByHash = new ConcurrentHashMap<Hash, OutboundEstablishState>(); _activityLock = new Object(); DEFAULT_MAX_CONCURRENT_ESTABLISH = Math.max(DEFAULT_LOW_MAX_CONCURRENT_ESTABLISH, Math.min(DEFAULT_HIGH_MAX_CONCURRENT_ESTABLISH, @@ -312,7 +310,7 @@ class EstablishmentManager { if (_queuedOutbound.size() >= MAX_QUEUED_OUTBOUND && !_queuedOutbound.containsKey(to)) { rejected = true; } else { - List<OutNetMessage> newQueued = new ArrayList(MAX_QUEUED_PER_PEER); + List<OutNetMessage> newQueued = new ArrayList<OutNetMessage>(MAX_QUEUED_PER_PEER); List<OutNetMessage> queued = _queuedOutbound.putIfAbsent(to, newQueued); if (queued == null) { queued = newQueued; @@ -622,7 +620,7 @@ class EstablishmentManager { } RemoteHostId to = entry.getKey(); List<OutNetMessage> allQueued = entry.getValue(); - List<OutNetMessage> queued = new ArrayList(); + List<OutNetMessage> queued = new ArrayList<OutNetMessage>(); long now = _context.clock().now(); synchronized (allQueued) { for (OutNetMessage msg : allQueued) { diff --git a/router/java/src/net/i2p/router/transport/udp/IPThrottler.java b/router/java/src/net/i2p/router/transport/udp/IPThrottler.java index 1308c2e707..782988ec3e 100644 --- a/router/java/src/net/i2p/router/transport/udp/IPThrottler.java +++ b/router/java/src/net/i2p/router/transport/udp/IPThrottler.java @@ -16,7 +16,7 @@ class IPThrottler { public IPThrottler(int max, long time) { _max = max; - _counter = new ObjectCounter(); + _counter = new ObjectCounter<Integer>(); SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), time); } diff --git a/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java b/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java index d69e9b76d9..2d545de7a2 100644 --- a/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java +++ b/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java @@ -98,7 +98,7 @@ class InboundEstablishState { _currentState = InboundState.IB_STATE_UNKNOWN; _establishBegin = ctx.clock().now(); _keyBuilder = dh; - _queuedMessages = new LinkedBlockingQueue(); + _queuedMessages = new LinkedBlockingQueue<OutNetMessage>(); } public synchronized InboundState getState() { return _currentState; } diff --git a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java index 03b70e2a7d..01ae042caa 100644 --- a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java +++ b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java @@ -11,12 +11,10 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import net.i2p.data.Base64; -import net.i2p.data.DataHelper; import net.i2p.data.RouterAddress; import net.i2p.data.RouterInfo; import net.i2p.data.SessionKey; import net.i2p.router.RouterContext; -import net.i2p.router.transport.TransportImpl; import net.i2p.util.Addresses; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.Log; @@ -104,9 +102,9 @@ class IntroductionManager { _log = ctx.logManager().getLog(IntroductionManager.class); _transport = transport; _builder = new PacketBuilder(ctx, transport); - _outbound = new ConcurrentHashMap(MAX_OUTBOUND); - _inbound = new ConcurrentHashSet(MAX_INBOUND); - _recentHolePunches = new HashSet(16); + _outbound = new ConcurrentHashMap<Long, PeerState>(MAX_OUTBOUND); + _inbound = new ConcurrentHashSet<PeerState>(MAX_INBOUND); + _recentHolePunches = new HashSet<InetAddress>(16); ctx.statManager().createRateStat("udp.receiveRelayIntro", "How often we get a relayed request for us to talk to someone?", "udp", UDPTransport.RATES); ctx.statManager().createRateStat("udp.receiveRelayRequest", "How often we receive a good request to relay to someone else?", "udp", UDPTransport.RATES); ctx.statManager().createRateStat("udp.receiveRelayRequestBadTag", "Received relay requests with bad/expired tag", "udp", UDPTransport.RATES); @@ -169,7 +167,7 @@ class IntroductionManager { if (_log.shouldLog(Log.DEBUG)) _log.debug("Picking inbound out of " + _inbound.size()); if (_inbound.isEmpty()) return 0; - List<PeerState> peers = new ArrayList(_inbound); + List<PeerState> peers = new ArrayList<PeerState>(_inbound); int sz = peers.size(); start = start % sz; int found = 0; diff --git a/router/java/src/net/i2p/router/transport/udp/MessageReceiver.java b/router/java/src/net/i2p/router/transport/udp/MessageReceiver.java index c0fa2eea2b..74dba836b2 100644 --- a/router/java/src/net/i2p/router/transport/udp/MessageReceiver.java +++ b/router/java/src/net/i2p/router/transport/udp/MessageReceiver.java @@ -54,7 +54,7 @@ class MessageReceiver { _threadCount = Math.max(MIN_THREADS, Math.min(MAX_THREADS, ctx.bandwidthLimiter().getInboundKBytesPerSecond() / 20)); qsize = (int) Math.max(MIN_QUEUE_SIZE, Math.min(MAX_QUEUE_SIZE, maxMemory / (2*1024*1024))); } - _completeMessages = new CoDelBlockingQueue(ctx, "UDP-MessageReceiver", qsize); + _completeMessages = new CoDelBlockingQueue<InboundMessageState>(ctx, "UDP-MessageReceiver", qsize); // the runners run forever, no need to have a cache //_cache = ByteCache.getInstance(64, I2NPMessage.MAX_SIZE); diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java b/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java index 9b0a55221c..9d14a4a23d 100644 --- a/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java +++ b/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java @@ -1,6 +1,5 @@ package net.i2p.router.transport.udp; -import java.net.InetAddress; import java.util.Queue; import java.util.concurrent.LinkedBlockingQueue; @@ -116,7 +115,7 @@ class OutboundEstablishState { _remoteHostId = remoteHostId; _remotePeer = remotePeer; _introKey = introKey; - _queuedMessages = new LinkedBlockingQueue(); + _queuedMessages = new LinkedBlockingQueue<OutNetMessage>(); _establishBegin = ctx.clock().now(); _remoteAddress = addr; _introductionNonce = -1; diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java index 3feaa8e6ab..034f3e6054 100644 --- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java +++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java @@ -7,7 +7,6 @@ import java.util.Set; import net.i2p.data.Hash; import net.i2p.data.RouterInfo; -import net.i2p.data.i2np.I2NPMessage; import net.i2p.router.OutNetMessage; import net.i2p.router.RouterContext; import net.i2p.util.ConcurrentHashSet; @@ -68,7 +67,7 @@ class OutboundMessageFragments { _log = ctx.logManager().getLog(OutboundMessageFragments.class); _transport = transport; // _throttle = throttle; - _activePeers = new ConcurrentHashSet(256); + _activePeers = new ConcurrentHashSet<PeerState>(256); _builder = new PacketBuilder(ctx, transport); _alive = true; // _allowExcess = false; @@ -363,12 +362,12 @@ class OutboundMessageFragments { List<Long> msgIds = peer.getCurrentFullACKs(); int newFullAckCount = msgIds.size(); msgIds.addAll(peer.getCurrentResendACKs()); - List<ACKBitfield> partialACKBitfields = new ArrayList(); + List<ACKBitfield> partialACKBitfields = new ArrayList<ACKBitfield>(); peer.fetchPartialACKs(partialACKBitfields); int piggybackedPartialACK = partialACKBitfields.size(); // getCurrentFullACKs() already makes a copy, do we need to copy again? // YES because buildPacket() now removes them (maybe) - List<Long> remaining = new ArrayList(msgIds); + List<Long> remaining = new ArrayList<Long>(msgIds); int sparseCount = 0; UDPPacket rv[] = new UDPPacket[fragments]; //sparse for (int i = 0; i < fragments; i++) { diff --git a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java index e16b34daad..647c207ae2 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java @@ -11,7 +11,6 @@ import java.util.List; import net.i2p.I2PAppContext; import net.i2p.data.Base64; -import net.i2p.data.ByteArray; import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.data.RouterIdentity; @@ -443,7 +442,7 @@ class PacketBuilder { * It doesn't generate a reply, but that's ok. */ public UDPPacket buildPing(PeerState peer) { - return buildACK(peer, Collections.EMPTY_LIST); + return buildACK(peer, Collections.<ACKBitfield> emptyList()); } /** @@ -1082,7 +1081,7 @@ class PacketBuilder { public List<UDPPacket> buildRelayRequest(UDPTransport transport, OutboundEstablishState state, SessionKey ourIntroKey) { UDPAddress addr = state.getRemoteAddress(); int count = addr.getIntroducerCount(); - List<UDPPacket> rv = new ArrayList(count); + List<UDPPacket> rv = new ArrayList<UDPPacket>(count); for (int i = 0; i < count; i++) { InetAddress iaddr = addr.getIntroducerHost(i); int iport = addr.getIntroducerPort(i); @@ -1095,7 +1094,7 @@ class PacketBuilder { iaddr.getAddress().length != 4 || (!_transport.isValid(iaddr.getAddress())) || (Arrays.equals(iaddr.getAddress(), _transport.getExternalIP()) && !_transport.allowLocal())) { - if (_log.shouldLog(_log.WARN)) + if (_log.shouldLog(Log.WARN)) _log.warn("Cannot build a relay request to " + state.getRemoteIdentity().calculateHash() + ", as their UDP address is invalid: addr=" + addr + " index=" + i); // TODO implement some sort of introducer banlist diff --git a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java index 5a9c6eaf65..5d3df1926a 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java @@ -56,11 +56,11 @@ class PacketHandler { _inbound = inbound; _testManager = testManager; _introManager = introManager; - _failCache = new LHMCache(24); + _failCache = new LHMCache<RemoteHostId, Object>(24); long maxMemory = SystemVersion.getMaxMemory(); int qsize = (int) Math.max(MIN_QUEUE_SIZE, Math.min(MAX_QUEUE_SIZE, maxMemory / (2*1024*1024))); - _inboundQueue = new CoDelBlockingQueue(ctx, "UDP-Receiver", qsize); + _inboundQueue = new CoDelBlockingQueue<UDPPacket>(ctx, "UDP-Receiver", qsize); int num_handlers; if (maxMemory < 32*1024*1024) num_handlers = 1; diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState.java b/router/java/src/net/i2p/router/transport/udp/PeerState.java index 65e236019e..feb471abb0 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerState.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerState.java @@ -312,8 +312,8 @@ class PeerState { _currentReceiveSecond = now - (now % 1000); _lastSendTime = now; _lastReceiveTime = now; - _currentACKs = new ConcurrentHashSet(); - _currentACKsResend = new LinkedBlockingQueue(); + _currentACKs = new ConcurrentHashSet<Long>(); + _currentACKsResend = new LinkedBlockingQueue<Long>(); _sendWindowBytes = DEFAULT_SEND_WINDOW_BYTES; _sendWindowBytesRemaining = DEFAULT_SEND_WINDOW_BYTES; _slowStartThreshold = MAX_SEND_WINDOW_BYTES/2; @@ -335,10 +335,10 @@ class PeerState { _rto = INIT_RTO; _rtt = INIT_RTT; _rttDeviation = _rtt; - _inboundMessages = new HashMap(8); + _inboundMessages = new HashMap<Long, InboundMessageState>(8); _outboundMessages = new CachedIteratorArrayList<OutboundMessageState>(32); //_outboundQueue = new CoDelPriorityBlockingQueue(ctx, "UDP-PeerState", 32); - _outboundQueue = new PriBlockingQueue(ctx, "UDP-PeerState", 32); + _outboundQueue = new PriBlockingQueue<OutboundMessageState>(ctx, "UDP-PeerState", 32); // all createRateStat() moved to EstablishmentManager _remoteIP = remoteIP; _remotePeer = remotePeer; @@ -820,7 +820,7 @@ class PeerState { */ public List<Long> getCurrentFullACKs() { // no such element exception seen here - List<Long> rv = new ArrayList(_currentACKs); + List<Long> rv = new ArrayList<Long>(_currentACKs); //if (_log.shouldLog(Log.DEBUG)) // _log.debug("Returning " + _currentACKs.size() + " current acks"); return rv; @@ -841,7 +841,7 @@ class PeerState { * @since 0.8.12 was included in getCurrentFullACKs() */ public List<Long> getCurrentResendACKs() { - List<Long> randomResends = new ArrayList(_currentACKsResend); + List<Long> randomResends = new ArrayList<Long>(_currentACKsResend); Collections.shuffle(randomResends, _context.random()); //if (_log.shouldLog(Log.DEBUG)) // _log.debug("Returning " + randomResends.size() + " resend acks"); @@ -915,10 +915,10 @@ class PeerState { maxResendAcks = MAX_RESEND_ACKS_SMALL; else maxResendAcks = MAX_RESEND_ACKS_LARGE; - List<ACKBitfield> rv = new ArrayList(maxResendAcks); + List<ACKBitfield> rv = new ArrayList<ACKBitfield>(maxResendAcks); // save to add to currentACKsResend later so we don't include twice - List<Long> currentACKsRemoved = new ArrayList(_currentACKs.size()); + List<Long> currentACKsRemoved = new ArrayList<Long>(_currentACKs.size()); // As explained above, we include the acks in any order // since we are unlikely to get backed up - // just take them using the Set iterator. @@ -934,7 +934,7 @@ class PeerState { if (_currentACKs.isEmpty()) _wantACKSendSince = -1; if (alwaysIncludeRetransmissions || !rv.isEmpty()) { - List<Long> randomResends = new ArrayList(_currentACKsResend); + List<Long> randomResends = new ArrayList<Long>(_currentACKsResend); // now repeat by putting in some old ACKs // randomly selected from the Resend queue. // Maybe we should only resend each one a certain number of times... @@ -968,7 +968,7 @@ class PeerState { // ok, there's room to *try* to fit in some partial ACKs, so // we should try to find some packets to partially ACK // (preferably the ones which have the most received fragments) - List<ACKBitfield> partial = new ArrayList(); + List<ACKBitfield> partial = new ArrayList<ACKBitfield>(); fetchPartialACKs(partial); // we may not be able to use them all, but lets try... for (int i = 0; (bytesRemaining > 4) && (i < partial.size()); i++) { @@ -1432,7 +1432,7 @@ class PeerState { List<OutboundMessageState> tempList; synchronized (_outboundMessages) { _retransmitter = null; - tempList = new ArrayList(_outboundMessages); + tempList = new ArrayList<OutboundMessageState>(_outboundMessages); _outboundMessages.clear(); } //_outboundQueue.drainAllTo(tempList); @@ -1481,21 +1481,21 @@ class PeerState { iter.remove(); if (_retransmitter == state) _retransmitter = null; - if (succeeded == null) succeeded = new ArrayList(4); + if (succeeded == null) succeeded = new ArrayList<OutboundMessageState>(4); succeeded.add(state); } else if (state.isExpired()) { iter.remove(); if (_retransmitter == state) _retransmitter = null; _context.statManager().addRateData("udp.sendFailed", state.getPushCount()); - if (failed == null) failed = new ArrayList(4); + if (failed == null) failed = new ArrayList<OutboundMessageState>(4); failed.add(state); } else if (state.getPushCount() > OutboundMessageFragments.MAX_VOLLEYS) { iter.remove(); if (state == _retransmitter) _retransmitter = null; _context.statManager().addRateData("udp.sendAggressiveFailed", state.getPushCount()); - if (failed == null) failed = new ArrayList(4); + if (failed == null) failed = new ArrayList<OutboundMessageState>(4); failed.add(state); } // end (pushCount > maxVolleys) } // end iterating over outbound messages @@ -1913,7 +1913,7 @@ class PeerState { _sendWindowBytes = oldPeer._sendWindowBytes; oldPeer._dead = true; - List<Long> tmp = new ArrayList(); + List<Long> tmp = new ArrayList<Long>(); // AIOOBE from concurrent access //tmp.addAll(oldPeer._currentACKs); for (Long l : oldPeer._currentACKs) { @@ -1933,7 +1933,7 @@ class PeerState { _currentACKsResend.addAll(tmp); } - Map<Long, InboundMessageState> msgs = new HashMap(); + Map<Long, InboundMessageState> msgs = new HashMap<Long, InboundMessageState>(); synchronized (oldPeer._inboundMessages) { msgs.putAll(oldPeer._inboundMessages); oldPeer._inboundMessages.clear(); @@ -1943,7 +1943,7 @@ class PeerState { } msgs.clear(); - List<OutboundMessageState> tmp2 = new ArrayList(); + List<OutboundMessageState> tmp2 = new ArrayList<OutboundMessageState>(); OutboundMessageState retransmitter = null; synchronized (oldPeer._outboundMessages) { tmp2.addAll(oldPeer._outboundMessages); diff --git a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java index ffc512654b..ba80cb35a8 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java @@ -17,7 +17,6 @@ import net.i2p.router.RouterContext; import static net.i2p.router.transport.udp.PeerTestState.Role.*; import net.i2p.util.Addresses; import net.i2p.util.Log; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; /** @@ -161,8 +160,8 @@ class PeerTestManager { _context = context; _transport = transport; _log = context.logManager().getLog(PeerTestManager.class); - _activeTests = new ConcurrentHashMap(); - _recentTests = new LinkedBlockingQueue(); + _activeTests = new ConcurrentHashMap<Long, PeerTestState>(); + _recentTests = new LinkedBlockingQueue<Long>(); _packetBuilder = new PacketBuilder(context, transport); _throttle = new IPThrottler(MAX_PER_IP, THROTTLE_CLEAN_TIME); _context.statManager().createRateStat("udp.statusKnownCharlie", "How often the bob we pick passes us to a charlie we already have a session with?", "udp", UDPTransport.RATES); diff --git a/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java b/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java index 7f4b2fa4b2..df5f375917 100644 --- a/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java +++ b/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java @@ -1,6 +1,5 @@ package net.i2p.router.transport.udp; -import net.i2p.data.Base64; import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.util.Addresses; diff --git a/router/java/src/net/i2p/router/transport/udp/TimedWeightedPriorityMessageQueue.java b/router/java/src/net/i2p/router/transport/udp/TimedWeightedPriorityMessageQueue.java index 2973f89934..3f03c133fc 100644 --- a/router/java/src/net/i2p/router/transport/udp/TimedWeightedPriorityMessageQueue.java +++ b/router/java/src/net/i2p/router/transport/udp/TimedWeightedPriorityMessageQueue.java @@ -24,7 +24,7 @@ class TimedWeightedPriorityMessageQueue implements MessageQueue, OutboundMessage private RouterContext _context; private Log _log; /** FIFO queue of messages in a particular priority */ - private List _queue[]; + private List<OutNetMessage> _queue[]; /** all messages in the indexed queue are at or below the given priority. */ private int _priorityLimits[]; /** weighting for each queue */ @@ -46,7 +46,7 @@ class TimedWeightedPriorityMessageQueue implements MessageQueue, OutboundMessage private Expirer _expirer; private FailedListener _listener; /** set of peers (Hash) whose congestion window is exceeded in the active queue */ - private Set _chokedPeers; + private Set<Hash> _chokedPeers; /** * Build up a new queue @@ -67,7 +67,7 @@ class TimedWeightedPriorityMessageQueue implements MessageQueue, OutboundMessage _bytesTransferred = new long[weighting.length]; _messagesFlushed = new int[weighting.length]; for (int i = 0; i < weighting.length; i++) { - _queue[i] = new ArrayList(8); + _queue[i] = new ArrayList<OutNetMessage>(8); _weighting[i] = weighting[i]; _priorityLimits[i] = priorityLimits[i]; _messagesFlushed[i] = 0; @@ -76,7 +76,7 @@ class TimedWeightedPriorityMessageQueue implements MessageQueue, OutboundMessage } _alive = true; _nextLock = this; - _chokedPeers = Collections.synchronizedSet(new HashSet(16)); + _chokedPeers = Collections.synchronizedSet(new HashSet<Hash>(16)); _listener = lsnr; _context.statManager().createRateStat("udp.timeToEntrance", "Message lifetime until it reaches the UDP system", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.messageQueueSize", "How many messages are on the current class queue at removal", "udp", UDPTransport.RATES); @@ -233,7 +233,7 @@ class TimedWeightedPriorityMessageQueue implements MessageQueue, OutboundMessage */ private class Expirer implements Runnable { public void run() { - List removed = new ArrayList(1); + List<OutNetMessage> removed = new ArrayList<OutNetMessage>(1); while (_alive) { long now = _context.clock().now(); for (int i = 0; i < _queue.length; i++) { diff --git a/router/java/src/net/i2p/router/transport/udp/UDPAddress.java b/router/java/src/net/i2p/router/transport/udp/UDPAddress.java index 962ad31fad..8cc279fec7 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPAddress.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPAddress.java @@ -229,7 +229,7 @@ class UDPAddress { long max = 2048; // 512 nominal for 128 MB int size = (int) Math.max(min, Math.min(max, 1 + (maxMemory / (256*1024)))); - _inetAddressCache = new LHMCache(size); + _inetAddressCache = new LHMCache<String, InetAddress>(size); } /** diff --git a/router/java/src/net/i2p/router/transport/udp/UDPPacket.java b/router/java/src/net/i2p/router/transport/udp/UDPPacket.java index 741aad8cae..a3cdf57a00 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPPacket.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPPacket.java @@ -51,7 +51,7 @@ class UDPPacket implements CDQEntry { if (CACHE) { long maxMemory = SystemVersion.getMaxMemory(); int csize = (int) Math.max(MIN_CACHE_SIZE, Math.min(MAX_CACHE_SIZE, maxMemory / (1024*1024))); - _packetCache = new LinkedBlockingQueue(csize); + _packetCache = new LinkedBlockingQueue<UDPPacket>(csize); } else { _packetCache = null; } diff --git a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java index d8976d483e..be5b97dcf8 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java @@ -8,7 +8,6 @@ import net.i2p.router.RouterContext; import net.i2p.router.transport.FIFOBandwidthLimiter; import net.i2p.util.I2PThread; import net.i2p.util.Log; -import net.i2p.util.SimpleTimer; import net.i2p.util.SystemVersion; /** diff --git a/router/java/src/net/i2p/router/transport/udp/UDPSender.java b/router/java/src/net/i2p/router/transport/udp/UDPSender.java index c5aecf6272..491be44b82 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPSender.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPSender.java @@ -40,7 +40,7 @@ class UDPSender { _log = ctx.logManager().getLog(UDPSender.class); long maxMemory = SystemVersion.getMaxMemory(); int qsize = (int) Math.max(MIN_QUEUE_SIZE, Math.min(MAX_QUEUE_SIZE, maxMemory / (1024*1024))); - _outboundQueue = new CoDelBlockingQueue(ctx, "UDP-Sender", qsize); + _outboundQueue = new CoDelBlockingQueue<UDPPacket>(ctx, "UDP-Sender", qsize); _socket = socket; _runner = new Runner(); _name = name; diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index bf53ca93a1..d934476cfd 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -14,7 +14,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.Set; import java.util.TreeSet; import java.util.Vector; @@ -48,7 +47,6 @@ import net.i2p.util.Addresses; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.Log; import net.i2p.util.OrderedProperties; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; import net.i2p.util.SimpleTimer2; @@ -212,10 +210,10 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority super(ctx); _dhFactory = dh; _log = ctx.logManager().getLog(UDPTransport.class); - _peersByIdent = new ConcurrentHashMap(128); - _peersByRemoteHost = new ConcurrentHashMap(128); - _dropList = new ConcurrentHashSet(2); - _endpoints = new CopyOnWriteArrayList(); + _peersByIdent = new ConcurrentHashMap<Hash, PeerState>(128); + _peersByRemoteHost = new ConcurrentHashMap<RemoteHostId, PeerState>(128); + _dropList = new ConcurrentHashSet<RemoteHostId>(2); + _endpoints = new CopyOnWriteArrayList<UDPEndpoint>(); // See comments in DummyThrottle.java if (USE_PRIORITY) { @@ -280,7 +278,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority int port = getRequestedPort(); if (port < 0) { port = UDPEndpoint.selectRandomPort(_context); - Map<String, String> changes = new HashMap(); + Map<String, String> changes = new HashMap<String, String>(); changes.put(PROP_INTERNAL_PORT, Integer.toString(port)); changes.put(PROP_EXTERNAL_PORT, Integer.toString(port)); _context.router().saveConfig(changes, null); @@ -330,7 +328,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } } - List<InetAddress> bindToAddrs = new ArrayList(4); + List<InetAddress> bindToAddrs = new ArrayList<InetAddress>(4); if (bindTo != null) { String[] bta = bindTo.split("[,; \r\n\t]"); for (int i = 0; i < bta.length; i++) { @@ -860,7 +858,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _context.statManager().addRateData("udp.addressTestInsteadOfUpdate", 1); } else if (updated) { _context.statManager().addRateData("udp.addressUpdated", 1); - Map<String, String> changes = new HashMap(); + Map<String, String> changes = new HashMap<String, String>(); if (ourIP.length == 4 && !fixedPort) changes.put(PROP_EXTERNAL_PORT, Integer.toString(ourPort)); // queue a country code lookup of the new IP @@ -975,7 +973,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority * @since 0.9.3 */ List<PeerState> getPeerStatesByIP(RemoteHostId hostInfo) { - List<PeerState> rv = new ArrayList(4); + List<PeerState> rv = new ArrayList<PeerState>(4); byte[] ip = hostInfo.getIP(); if (ip != null && ip.length == 4) { for (PeerState ps : _peersByIdent.values()) { @@ -2160,7 +2158,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority */ @Override public Vector<Long> getClockSkews() { - Vector<Long> skews = new Vector(); + Vector<Long> skews = new Vector<Long>(); // If our clock is way off, we may not have many (or any) successful connections, // so try hard in that case to return good data @@ -2213,8 +2211,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final int FLAG_UPTIME = 16; private static final int FLAG_DEBUG = 99; - private static Comparator getComparator(int sortFlags) { - Comparator rv = null; + private static Comparator<PeerState> getComparator(int sortFlags) { + Comparator<PeerState> rv = null; switch (Math.abs(sortFlags)) { case FLAG_IDLE_IN: rv = IdleInComparator.instance(); @@ -2503,7 +2501,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority @Override public void renderStatusHTML(Writer out, String urlBase, int sortFlags) throws IOException { - TreeSet<PeerState> peers = new TreeSet(getComparator(sortFlags)); + TreeSet<PeerState> peers = new TreeSet<PeerState>(getComparator(sortFlags)); peers.addAll(_peersByIdent.values()); long offsetTotal = 0; @@ -2844,8 +2842,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority public ExpirePeerEvent() { super(_context.simpleTimer2()); - _expirePeers = new ConcurrentHashSet(128); - _expireBuffer = new ArrayList(); + _expirePeers = new ConcurrentHashSet<PeerState>(128); + _expireBuffer = new ArrayList<PeerState>(); } public void timeReached() { @@ -3039,8 +3037,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority PeerState pickTestPeer(PeerTestState.Role peerRole, RemoteHostId dontInclude) { if (peerRole == ALICE) throw new IllegalArgumentException(); - List<PeerState> peers = new ArrayList(_peersByIdent.values()); - for (Iterator<PeerState> iter = new RandomIterator(peers); iter.hasNext(); ) { + List<PeerState> peers = new ArrayList<PeerState>(_peersByIdent.values()); + for (Iterator<PeerState> iter = new RandomIterator<PeerState>(peers); iter.hasNext(); ) { PeerState peer = iter.next(); if ( (dontInclude != null) && (dontInclude.equals(peer.getRemoteHostId())) ) continue; diff --git a/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java b/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java index c80f51f57c..578390aa33 100644 --- a/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java +++ b/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java @@ -1,6 +1,5 @@ package net.i2p.router.tunnel; -import net.i2p.data.ByteArray; import net.i2p.data.DataHelper; import net.i2p.router.RouterContext; import net.i2p.router.util.DecayingBloomFilter; diff --git a/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java b/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java index ac79df4016..e956f4364b 100644 --- a/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java +++ b/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java @@ -143,7 +143,7 @@ public abstract class BuildMessageGenerator { * Encrypt the records so their hop ident is visible at the appropriate times * @param order list of hop #s as Integers. For instance, if (order.get(1) is 4), it is peer cfg.getPeer(4) */ - public static void layeredEncrypt(I2PAppContext ctx, TunnelBuildMessage msg, TunnelCreatorConfig cfg, List order) { + public static void layeredEncrypt(I2PAppContext ctx, TunnelBuildMessage msg, TunnelCreatorConfig cfg, List<Integer> order) { //Log log = ctx.logManager().getLog(BuildMessageGenerator.class); // encrypt the records so that the right elements will be visible at the right time for (int i = 0; i < msg.getRecordCount(); i++) { diff --git a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java index 855b5a6120..03ca9c3715 100644 --- a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java +++ b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java @@ -105,7 +105,7 @@ class FragmentHandler { public FragmentHandler(RouterContext context, DefragmentedReceiver receiver) { _context = context; _log = context.logManager().getLog(FragmentHandler.class); - _fragmentedMessages = new HashMap(16); + _fragmentedMessages = new HashMap<Long, FragmentedMessage>(16); _receiver = receiver; // all createRateStat in TunnelDispatcher } diff --git a/router/java/src/net/i2p/router/tunnel/HashSetIVValidator.java b/router/java/src/net/i2p/router/tunnel/HashSetIVValidator.java index e7022b55e2..e450f6827e 100644 --- a/router/java/src/net/i2p/router/tunnel/HashSetIVValidator.java +++ b/router/java/src/net/i2p/router/tunnel/HashSetIVValidator.java @@ -15,7 +15,7 @@ class HashSetIVValidator implements IVValidator { private final Set<ByteArray> _received; public HashSetIVValidator() { - _received = new ConcurrentHashSet(); + _received = new ConcurrentHashSet<ByteArray>(); } public boolean receiveIV(byte ivData[], int ivOffset, byte payload[], int payloadOffset) { diff --git a/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java b/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java index d27a6e733d..cda394fa54 100644 --- a/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java +++ b/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java @@ -1,6 +1,5 @@ package net.i2p.router.tunnel; -import net.i2p.data.ByteArray; import net.i2p.data.Hash; import net.i2p.router.RouterContext; import net.i2p.util.Log; diff --git a/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java b/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java index 45ac012ec0..6789dbb406 100644 --- a/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java +++ b/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java @@ -2,9 +2,7 @@ package net.i2p.router.tunnel; import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; -import net.i2p.data.LeaseSet; import net.i2p.data.Payload; -import net.i2p.data.RouterInfo; import net.i2p.data.TunnelId; import net.i2p.data.i2np.DataMessage; import net.i2p.data.i2np.DatabaseSearchReplyMessage; diff --git a/router/java/src/net/i2p/router/tunnel/OutboundGatewayProcessor.java b/router/java/src/net/i2p/router/tunnel/OutboundGatewayProcessor.java index 3d86d230ff..8acb0e5bbb 100644 --- a/router/java/src/net/i2p/router/tunnel/OutboundGatewayProcessor.java +++ b/router/java/src/net/i2p/router/tunnel/OutboundGatewayProcessor.java @@ -2,7 +2,6 @@ package net.i2p.router.tunnel; import net.i2p.I2PAppContext; import net.i2p.data.Base64; -import net.i2p.data.ByteArray; import net.i2p.util.Log; import net.i2p.util.SimpleByteCache; diff --git a/router/java/src/net/i2p/router/tunnel/PendingGatewayMessage.java b/router/java/src/net/i2p/router/tunnel/PendingGatewayMessage.java index 6e50e4e92f..29e3b139e0 100644 --- a/router/java/src/net/i2p/router/tunnel/PendingGatewayMessage.java +++ b/router/java/src/net/i2p/router/tunnel/PendingGatewayMessage.java @@ -6,7 +6,6 @@ import java.util.List; import net.i2p.data.Hash; import net.i2p.data.TunnelId; import net.i2p.data.i2np.I2NPMessage; -import net.i2p.router.RouterContext; import net.i2p.router.util.CDQEntry; /** @@ -69,7 +68,7 @@ class PendingGatewayMessage implements CDQEntry { public void addMessageId(long id) { synchronized (this) { if (_messageIds == null) - _messageIds = new ArrayList(); + _messageIds = new ArrayList<Long>(); _messageIds.add(Long.valueOf(id)); } } @@ -81,9 +80,9 @@ class PendingGatewayMessage implements CDQEntry { public List<Long> getMessageIds() { synchronized (this) { if (_messageIds != null) - return new ArrayList(_messageIds); + return new ArrayList<Long>(_messageIds); else - return new ArrayList(); + return new ArrayList<Long>(); } } diff --git a/router/java/src/net/i2p/router/tunnel/PumpedTunnelGateway.java b/router/java/src/net/i2p/router/tunnel/PumpedTunnelGateway.java index 560fb7f39a..9493932e65 100644 --- a/router/java/src/net/i2p/router/tunnel/PumpedTunnelGateway.java +++ b/router/java/src/net/i2p/router/tunnel/PumpedTunnelGateway.java @@ -68,7 +68,7 @@ class PumpedTunnelGateway extends TunnelGateway { _isInbound = false; } else if (receiver != null) { // extended by ThrottledPTG for IB // Bounded non-priority queue for inbound - _prequeue = new CoDelBlockingQueue(context, "IBGW", MAX_IB_QUEUE); + _prequeue = new CoDelBlockingQueue<PendingGatewayMessage>(context, "IBGW", MAX_IB_QUEUE); _nextHop = receiver.getSendTo(); _isInbound = true; } else { diff --git a/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java b/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java index e6edc3c85e..0d8475ece7 100644 --- a/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java +++ b/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java @@ -3,7 +3,6 @@ package net.i2p.router.tunnel; import java.util.List; import net.i2p.data.Base64; -import net.i2p.data.ByteArray; import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.router.RouterContext; diff --git a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java index 6ba5269fb1..d13c578d20 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java @@ -5,7 +5,6 @@ import java.io.Writer; import java.util.concurrent.ConcurrentHashMap; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.concurrent.LinkedBlockingQueue; import net.i2p.data.DataHelper; @@ -97,11 +96,11 @@ public class TunnelDispatcher implements Service { public TunnelDispatcher(RouterContext ctx) { _context = ctx; _log = ctx.logManager().getLog(TunnelDispatcher.class); - _outboundGateways = new ConcurrentHashMap(); - _outboundEndpoints = new ConcurrentHashMap(); - _participants = new ConcurrentHashMap(); - _inboundGateways = new ConcurrentHashMap(); - _participatingConfig = new ConcurrentHashMap(); + _outboundGateways = new ConcurrentHashMap<TunnelId, TunnelGateway>(); + _outboundEndpoints = new ConcurrentHashMap<TunnelId, OutboundTunnelEndpoint>(); + _participants = new ConcurrentHashMap<TunnelId, TunnelParticipant>(); + _inboundGateways = new ConcurrentHashMap<TunnelId, TunnelGateway>(); + _participatingConfig = new ConcurrentHashMap<TunnelId, HopConfig>(); _pumper = new TunnelGatewayPumper(ctx); _leaveJob = new LeaveTunnel(ctx); ctx.statManager().createRequiredRateStat("tunnel.participatingTunnels", @@ -690,7 +689,7 @@ public class TunnelDispatcher implements Service { * @return a copy */ public List<HopConfig> listParticipatingTunnels() { - return new ArrayList(_participatingConfig.values()); + return new ArrayList<HopConfig>(_participatingConfig.values()); } /** @@ -949,7 +948,7 @@ public class TunnelDispatcher implements Service { public LeaveTunnel(RouterContext ctx) { super(ctx); - _configs = new LinkedBlockingQueue(); + _configs = new LinkedBlockingQueue<HopConfig>(); // 20 min no tunnels accepted + 10 min tunnel expiration getTiming().setStartAfter(ctx.clock().now() + 30*60*1000); getContext().jobQueue().addJob(LeaveTunnel.this); diff --git a/router/java/src/net/i2p/router/tunnel/TunnelGateway.java b/router/java/src/net/i2p/router/tunnel/TunnelGateway.java index fe54c9e02e..242b3dc036 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelGateway.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelGateway.java @@ -7,7 +7,6 @@ import net.i2p.data.Hash; import net.i2p.data.TunnelId; import net.i2p.data.i2np.I2NPMessage; import net.i2p.data.i2np.TunnelGatewayMessage; -import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.util.Log; import net.i2p.util.SimpleTimer2; @@ -57,7 +56,7 @@ class TunnelGateway { protected TunnelGateway(RouterContext context, QueuePreprocessor preprocessor, Sender sender, Receiver receiver) { _context = context; _log = context.logManager().getLog(getClass()); - _queue = new ArrayList(4); + _queue = new ArrayList<PendingGatewayMessage>(4); _preprocessor = preprocessor; _sender = sender; _receiver = receiver; diff --git a/router/java/src/net/i2p/router/tunnel/TunnelGatewayPumper.java b/router/java/src/net/i2p/router/tunnel/TunnelGatewayPumper.java index 024b1072b1..17b9a9a8c5 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelGatewayPumper.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelGatewayPumper.java @@ -6,12 +6,8 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; - import net.i2p.router.RouterContext; import net.i2p.util.I2PThread; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; import net.i2p.util.SystemVersion; @@ -41,8 +37,8 @@ class TunnelGatewayPumper implements Runnable { /** Creates a new instance of TunnelGatewayPumper */ public TunnelGatewayPumper(RouterContext ctx) { _context = ctx; - _wantsPumping = new LinkedHashSet(16); - _backlogged = new HashSet(16); + _wantsPumping = new LinkedHashSet<PumpedTunnelGateway>(16); + _backlogged = new HashSet<PumpedTunnelGateway>(16); if (ctx.getBooleanProperty("i2p.dummyTunnelManager")) { _pumpers = 1; } else { @@ -79,7 +75,7 @@ class TunnelGatewayPumper implements Runnable { public void run() { PumpedTunnelGateway gw = null; - List<PendingGatewayMessage> queueBuf = new ArrayList(32); + List<PendingGatewayMessage> queueBuf = new ArrayList<PendingGatewayMessage>(32); boolean requeue = false; while (!_stop) { try { diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java index ac3656052b..5d43deefba 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java @@ -30,7 +30,7 @@ import net.i2p.util.Log; * As of 0.8.11, inbound request handling is done in a separate thread. */ class BuildExecutor implements Runnable { - private final ArrayList<Long> _recentBuildIds = new ArrayList(100); + private final ArrayList<Long> _recentBuildIds = new ArrayList<Long>(100); private final RouterContext _context; private final Log _log; private final TunnelPoolManager _manager; @@ -51,8 +51,8 @@ class BuildExecutor implements Runnable { _log = ctx.logManager().getLog(getClass()); _manager = mgr; _currentlyBuilding = new Object(); - _currentlyBuildingMap = new ConcurrentHashMap(MAX_CONCURRENT_BUILDS); - _recentlyBuildingMap = new ConcurrentHashMap(4 * MAX_CONCURRENT_BUILDS); + _currentlyBuildingMap = new ConcurrentHashMap<Long, PooledTunnelCreatorConfig>(MAX_CONCURRENT_BUILDS); + _recentlyBuildingMap = new ConcurrentHashMap<Long, PooledTunnelCreatorConfig>(4 * MAX_CONCURRENT_BUILDS); _context.statManager().createRateStat("tunnel.concurrentBuilds", "How many builds are going at once", "Tunnels", new long[] { 60*1000, 5*60*1000, 60*60*1000 }); _context.statManager().createRateStat("tunnel.concurrentBuildsLagged", "How many builds are going at once when we reject further builds, due to job lag (period is lag)", "Tunnels", new long[] { 60*1000, 5*60*1000, 60*60*1000 }); _context.statManager().createRequiredRateStat("tunnel.buildExploratoryExpire", "No response to our build request", "Tunnels", new long[] { 10*60*1000, 60*60*1000 }); @@ -153,7 +153,7 @@ class BuildExecutor implements Runnable { _recentlyBuildingMap.putIfAbsent(Long.valueOf(cfg.getReplyMessageId()), cfg); iter.remove(); if (expired == null) - expired = new ArrayList(); + expired = new ArrayList<PooledTunnelCreatorConfig>(); expired.add(cfg); } } @@ -284,8 +284,8 @@ class BuildExecutor implements Runnable { public void run() { _isRunning = true; - List<TunnelPool> wanted = new ArrayList(MAX_CONCURRENT_BUILDS); - List<TunnelPool> pools = new ArrayList(8); + List<TunnelPool> wanted = new ArrayList<TunnelPool>(MAX_CONCURRENT_BUILDS); + List<TunnelPool> pools = new ArrayList<TunnelPool>(8); while (_isRunning && !_manager.isShutdown()){ //loopBegin = System.currentTimeMillis(); diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java index ebbe487d4e..2142bee95c 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java @@ -93,7 +93,7 @@ class BuildHandler implements Runnable { // Queue size = 12 * share BW / 48K int sz = Math.min(MAX_QUEUE, Math.max(MIN_QUEUE, TunnelDispatcher.getShareBandwidth(ctx) * MIN_QUEUE / 48)); //_inboundBuildMessages = new CoDelBlockingQueue(ctx, "BuildHandler", sz); - _inboundBuildMessages = new LinkedBlockingQueue(sz); + _inboundBuildMessages = new LinkedBlockingQueue<BuildMessageState>(sz); _context.statManager().createRateStat("tunnel.reject.10", "How often we reject a tunnel probabalistically", "Tunnels", new long[] { 60*1000, 10*60*1000 }); _context.statManager().createRateStat("tunnel.reject.20", "How often we reject a tunnel because of transient overload", "Tunnels", new long[] { 60*1000, 10*60*1000 }); diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java index 6c8deb55ac..65ae2be276 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java @@ -25,7 +25,7 @@ import net.i2p.util.VersionComparator; * Methods for creating Tunnel Build Messages, i.e. requests */ abstract class BuildRequestor { - private static final List<Integer> ORDER = new ArrayList(TunnelBuildMessage.MAX_RECORD_COUNT); + private static final List<Integer> ORDER = new ArrayList<Integer>(TunnelBuildMessage.MAX_RECORD_COUNT); static { for (int i = 0; i < TunnelBuildMessage.MAX_RECORD_COUNT; i++) ORDER.add(Integer.valueOf(i)); @@ -225,7 +225,7 @@ abstract class BuildRequestor { private static final boolean SEND_VARIABLE = true; /** 5 (~2600 bytes) fits nicely in 3 tunnel messages */ private static final int SHORT_RECORDS = 5; - private static final List<Integer> SHORT_ORDER = new ArrayList(SHORT_RECORDS); + private static final List<Integer> SHORT_ORDER = new ArrayList<Integer>(SHORT_RECORDS); static { for (int i = 0; i < SHORT_RECORDS; i++) SHORT_ORDER.add(Integer.valueOf(i)); @@ -292,12 +292,12 @@ abstract class BuildRequestor { List<Integer> order; if (useVariable) { msg = new VariableTunnelBuildMessage(ctx, SHORT_RECORDS); - order = new ArrayList(SHORT_ORDER); + order = new ArrayList<Integer>(SHORT_ORDER); //if (log.shouldLog(Log.INFO)) // log.info("Using new VTBM"); } else { msg = new TunnelBuildMessage(ctx); - order = new ArrayList(ORDER); + order = new ArrayList<Integer>(ORDER); } // This is in BuildExecutor.buildTunnel() now diff --git a/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java index 468cacaf26..2e13c4c57f 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java +++ b/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java @@ -34,16 +34,16 @@ class ClientPeerSelector extends TunnelPeerSelector { return selectExplicit(settings, length); Set<Hash> exclude = getExclude(settings.isInbound(), false); - Set<Hash> matches = new HashSet(length); + Set<Hash> matches = new HashSet<Hash>(length); if (length == 1) { ctx.profileOrganizer().selectFastPeers(length, exclude, matches, 0); matches.remove(ctx.routerHash()); - rv = new ArrayList(matches); + rv = new ArrayList<Hash>(matches); } else { // build a tunnel using 4 subtiers. // For a 2-hop tunnel, the first hop comes from subtiers 0-1 and the last from subtiers 2-3. // For a longer tunnels, the first hop comes from subtier 0, the middle from subtiers 2-3, and the last from subtier 1. - rv = new ArrayList(length + 1); + rv = new ArrayList<Hash>(length + 1); // OBEP or IB last hop // group 0 or 1 if two hops, otherwise group 0 if (!settings.isInbound()) { @@ -61,7 +61,7 @@ class ClientPeerSelector extends TunnelPeerSelector { matches.remove(ctx.routerHash()); if (matches.size() > 1) { // order the middle peers for tunnels >= 4 hops - List<Hash> ordered = new ArrayList(matches); + List<Hash> ordered = new ArrayList<Hash>(matches); orderPeers(ordered, settings.getRandomKey()); rv.addAll(ordered); } else { @@ -80,7 +80,7 @@ class ClientPeerSelector extends TunnelPeerSelector { rv.addAll(matches); } } else { - rv = new ArrayList(1); + rv = new ArrayList<Hash>(1); } if (settings.isInbound()) diff --git a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java index f16acf07ed..2564ce3d79 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java +++ b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java @@ -47,7 +47,7 @@ class ExploratoryPeerSelector extends TunnelPeerSelector { // so they don't get used for client tunnels either. // FloodfillNetworkDatabaseFacade fac = (FloodfillNetworkDatabaseFacade)ctx.netDb(); // exclude.addAll(fac.getFloodfillPeers()); - HashSet matches = new HashSet(length); + HashSet<Hash> matches = new HashSet<Hash>(length); boolean exploreHighCap = shouldPickHighCap(); // @@ -76,7 +76,7 @@ class ExploratoryPeerSelector extends TunnelPeerSelector { } matches.remove(ctx.routerHash()); - ArrayList<Hash> rv = new ArrayList(matches); + ArrayList<Hash> rv = new ArrayList<Hash>(matches); if (rv.size() > 1) orderPeers(rv, settings.getRandomKey()); if (l.shouldLog(Log.DEBUG)) diff --git a/router/java/src/net/i2p/router/tunnel/pool/ParticipatingThrottler.java b/router/java/src/net/i2p/router/tunnel/pool/ParticipatingThrottler.java index f0169cd5ce..e1e5476494 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/ParticipatingThrottler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/ParticipatingThrottler.java @@ -3,7 +3,6 @@ package net.i2p.router.tunnel.pool; import net.i2p.data.Hash; import net.i2p.router.RouterContext; import net.i2p.util.ObjectCounter; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; /** @@ -41,7 +40,7 @@ class ParticipatingThrottler { ParticipatingThrottler(RouterContext ctx) { this.context = ctx; - this.counter = new ObjectCounter(); + this.counter = new ObjectCounter<Hash>(); ctx.simpleScheduler().addPeriodicEvent(new Cleaner(), CLEAN_TIME); } diff --git a/router/java/src/net/i2p/router/tunnel/pool/RequestThrottler.java b/router/java/src/net/i2p/router/tunnel/pool/RequestThrottler.java index 4cbfe95fd5..8c3a3c8c6f 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/RequestThrottler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/RequestThrottler.java @@ -3,7 +3,6 @@ package net.i2p.router.tunnel.pool; import net.i2p.data.Hash; import net.i2p.router.RouterContext; import net.i2p.util.ObjectCounter; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; /** @@ -26,7 +25,7 @@ class RequestThrottler { RequestThrottler(RouterContext ctx) { this.context = ctx; - this.counter = new ObjectCounter(); + this.counter = new ObjectCounter<Hash>(); ctx.simpleScheduler().addPeriodicEvent(new Cleaner(), CLEAN_TIME); } diff --git a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java index bd17333efd..6b3f0daedb 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java @@ -127,7 +127,7 @@ class TestJob extends JobImpl { SessionTag encryptTag = new SessionTag(true); _encryptTag = encryptTag; SessionKey sentKey = new SessionKey(); - Set sentTags = null; + Set<SessionTag> sentTags = null; GarlicMessage msg = GarlicMessageBuilder.buildMessage(getContext(), payload, sentKey, sentTags, getContext().keyManager().getPublicKey(), encryptKey, encryptTag); @@ -137,7 +137,7 @@ class TestJob extends JobImpl { scheduleRetest(); return; } - Set<SessionTag> encryptTags = new RemovableSingletonSet(encryptTag); + Set<SessionTag> encryptTags = new RemovableSingletonSet<SessionTag>(encryptTag); // Register the single tag with the appropriate SKM if (_cfg.isInbound() && !_pool.getSettings().isExploratory()) { SessionKeyManager skm = getContext().clientManager().getClientSessionKeyManager(_pool.getSettings().getDestination()); diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java index 84efa82153..2b530405de 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java @@ -125,7 +125,7 @@ public abstract class TunnelPeerSelector { peers = I2PAppContext.getGlobalContext().getProperty("explicitPeers"); Log log = ctx.logManager().getLog(ClientPeerSelector.class); - List<Hash> rv = new ArrayList(); + List<Hash> rv = new ArrayList<Hash>(); StringTokenizer tok = new StringTokenizer(peers, ","); while (tok.hasMoreTokens()) { String peerStr = tok.nextToken(); @@ -198,7 +198,7 @@ public abstract class TunnelPeerSelector { // // Defaults changed to true for inbound only in filterUnreachable below. - Set<Hash> peers = new HashSet(1); + Set<Hash> peers = new HashSet<Hash>(1); peers.addAll(ctx.profileOrganizer().selectPeersRecentlyRejecting()); peers.addAll(ctx.tunnelManager().selectPeersInTooManyTunnels()); // if (false && filterUnreachable(ctx, isInbound, isExploratory)) { @@ -507,7 +507,7 @@ public abstract class TunnelPeerSelector { ****/ /** see HashComparator */ - protected void orderPeers(List rv, Hash hash) { + protected void orderPeers(List<Hash> rv, Hash hash) { if (rv.size() > 1) Collections.sort(rv, new HashComparator(hash)); } diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java index 7257ad24f6..92e19dbebe 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java @@ -9,7 +9,6 @@ import java.util.List; import java.util.Map; import java.util.TreeSet; -import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.data.Lease; import net.i2p.data.LeaseSet; @@ -29,7 +28,7 @@ import net.i2p.util.Log; * Public only for TunnelRenderer in router console. */ public class TunnelPool { - private final List<PooledTunnelCreatorConfig> _inProgress = new ArrayList(); + private final List<PooledTunnelCreatorConfig> _inProgress = new ArrayList<PooledTunnelCreatorConfig>(); private final RouterContext _context; private final Log _log; private TunnelPoolSettings _settings; @@ -58,7 +57,7 @@ public class TunnelPool { _log = ctx.logManager().getLog(TunnelPool.class); _manager = mgr; _settings = settings; - _tunnels = new ArrayList(settings.getTotalQuantity()); + _tunnels = new ArrayList<TunnelInfo>(settings.getTotalQuantity()); _peerSelector = sel; _expireSkew = _context.random().nextInt(90*1000); _started = System.currentTimeMillis(); @@ -292,7 +291,7 @@ public class TunnelPool { */ public List<TunnelInfo> listTunnels() { synchronized (_tunnels) { - return new ArrayList(_tunnels); + return new ArrayList<TunnelInfo>(_tunnels); } } @@ -394,7 +393,7 @@ public class TunnelPool { } /** list of tunnelInfo instances of tunnels currently being built */ - public List listPending() { synchronized (_inProgress) { return new ArrayList(_inProgress); } } + public List<PooledTunnelCreatorConfig> listPending() { synchronized (_inProgress) { return new ArrayList<PooledTunnelCreatorConfig>(_inProgress); } } /** duplicate of size(), let's pick one */ int getTunnelCount() { synchronized (_tunnels) { return _tunnels.size(); } } @@ -713,7 +712,7 @@ public class TunnelPool { TunnelInfo zeroHopTunnel = null; Lease zeroHopLease = null; - TreeSet<Lease> leases = new TreeSet(new LeaseComparator()); + TreeSet<Lease> leases = new TreeSet<Lease>(new LeaseComparator()); for (int i = 0; i < _tunnels.size(); i++) { TunnelInfo tunnel = _tunnels.get(i); if (tunnel.getExpiration() <= expireAfter) @@ -1106,7 +1105,7 @@ public class TunnelPool { if (ti.getLength() >= len && ti.getExpiration() < now + 3*60*1000 && !ti.wasReused()) { ti.setReused(); len = ti.getLength(); - peers = new ArrayList(len); + peers = new ArrayList<Hash>(len); // peers list is ordered endpoint first, but cfg.getPeer() is ordered gateway first for (int i = len - 1; i >= 0; i--) { peers.add(ti.getPeer(i)); diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java index f97dbead1b..6dcfa0af23 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java @@ -23,7 +23,6 @@ import net.i2p.router.tunnel.TunnelDispatcher; import net.i2p.util.I2PThread; import net.i2p.util.Log; import net.i2p.util.ObjectCounter; -import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; /** @@ -58,8 +57,8 @@ public class TunnelPoolManager implements TunnelManagerFacade { //ctx.inNetMessagePool().registerHandlerJobBuilder(TunnelGatewayMessage.MESSAGE_TYPE, b); //ctx.inNetMessagePool().registerHandlerJobBuilder(TunnelDataMessage.MESSAGE_TYPE, b); - _clientInboundPools = new ConcurrentHashMap(4); - _clientOutboundPools = new ConcurrentHashMap(4); + _clientInboundPools = new ConcurrentHashMap<Hash, TunnelPool>(4); + _clientOutboundPools = new ConcurrentHashMap<Hash, TunnelPool>(4); _clientPeerSelector = new ClientPeerSelector(ctx); ExploratoryPeerSelector selector = new ExploratoryPeerSelector(_context); @@ -319,7 +318,7 @@ public class TunnelPoolManager implements TunnelManagerFacade { int part = getParticipatingCount(); if (part <= 0) return 0d; - List<TunnelPool> pools = new ArrayList(); + List<TunnelPool> pools = new ArrayList<TunnelPool>(); listPools(pools); int count = 0; for (int i = 0; i < pools.size(); i++) { @@ -562,7 +561,7 @@ public class TunnelPoolManager implements TunnelManagerFacade { /** @return total number of non-fallback expl. + client tunnels */ private int countTunnelsPerPeer(ObjectCounter<Hash> lc) { - List<TunnelPool> pools = new ArrayList(); + List<TunnelPool> pools = new ArrayList<TunnelPool>(); listPools(pools); int tunnelCount = 0; for (TunnelPool tp : pools) { @@ -597,9 +596,9 @@ public class TunnelPoolManager implements TunnelManagerFacade { * @return Set of peers that should not be allowed in another tunnel */ public Set<Hash> selectPeersInTooManyTunnels() { - ObjectCounter<Hash> lc = new ObjectCounter(); + ObjectCounter<Hash> lc = new ObjectCounter<Hash>(); int tunnelCount = countTunnelsPerPeer(lc); - Set<Hash> rv = new HashSet(); + Set<Hash> rv = new HashSet<Hash>(); if (tunnelCount >= 4 && _context.router().getUptime() > 10*60*1000) { int max = _context.getProperty("router.maxTunnelPercentage", DEFAULT_MAX_PCT_TUNNELS); for (Hash h : lc.objects()) { @@ -612,12 +611,12 @@ public class TunnelPoolManager implements TunnelManagerFacade { /** for TunnelRenderer in router console */ public Map<Hash, TunnelPool> getInboundClientPools() { - return new HashMap(_clientInboundPools); + return new HashMap<Hash, TunnelPool>(_clientInboundPools); } /** for TunnelRenderer in router console */ public Map<Hash, TunnelPool> getOutboundClientPools() { - return new HashMap(_clientOutboundPools); + return new HashMap<Hash, TunnelPool>(_clientOutboundPools); } /** diff --git a/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java b/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java index a6f9926ab6..fdda06f520 100644 --- a/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java +++ b/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java @@ -1,9 +1,6 @@ package net.i2p.router.util; import java.util.Collection; -import java.util.Comparator; -import java.util.concurrent.PriorityBlockingQueue; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import net.i2p.I2PAppContext; diff --git a/router/java/src/net/i2p/router/util/DecayingBloomFilter.java b/router/java/src/net/i2p/router/util/DecayingBloomFilter.java index 7f5f2dee4a..9aa9c6715f 100644 --- a/router/java/src/net/i2p/router/util/DecayingBloomFilter.java +++ b/router/java/src/net/i2p/router/util/DecayingBloomFilter.java @@ -1,6 +1,5 @@ package net.i2p.router.util; -import java.util.Random; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantReadWriteLock; diff --git a/router/java/src/net/i2p/router/util/DecayingHashSet.java b/router/java/src/net/i2p/router/util/DecayingHashSet.java index 62194a6475..23c2b43c9c 100644 --- a/router/java/src/net/i2p/router/util/DecayingHashSet.java +++ b/router/java/src/net/i2p/router/util/DecayingHashSet.java @@ -1,9 +1,6 @@ package net.i2p.router.util; -import java.util.Random; - import net.i2p.I2PAppContext; -import net.i2p.data.DataHelper; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.Log; @@ -77,8 +74,8 @@ public class DecayingHashSet extends DecayingBloomFilter { super(durationMs, entryBytes, name, context); if (entryBytes <= 0 || entryBytes > 32) throw new IllegalArgumentException("Bad size"); - _current = new ConcurrentHashSet(128); - _previous = new ConcurrentHashSet(128); + _current = new ConcurrentHashSet<ArrayWrapper>(128); + _previous = new ConcurrentHashSet<ArrayWrapper>(128); if (_log.shouldLog(Log.DEBUG)) _log.debug("New DHS " + name + " entryBytes = " + entryBytes + " cycle (s) = " + (durationMs / 1000)); diff --git a/router/java/src/net/i2p/router/util/EventLog.java b/router/java/src/net/i2p/router/util/EventLog.java index 1c2f3139e4..1f07f7f7d6 100644 --- a/router/java/src/net/i2p/router/util/EventLog.java +++ b/router/java/src/net/i2p/router/util/EventLog.java @@ -59,8 +59,8 @@ public class EventLog { // throw new IllegalArgumentException(); _context = ctx; _file = file; - _cache = new HashMap(4); - _cacheTime = new HashMap(4); + _cache = new HashMap<String, SortedMap<Long, String>>(4); + _cacheTime = new HashMap<String, Long>(4); } /** @@ -115,7 +115,7 @@ public class EventLog { return rv.tailMap(Long.valueOf(since)); } } - rv = new TreeMap(); + rv = new TreeMap<Long, String>(); InputStream in = null; try { in = new FileInputStream(_file); diff --git a/router/java/src/net/i2p/router/util/RandomIterator.java b/router/java/src/net/i2p/router/util/RandomIterator.java index 226c6e0009..2baa221c08 100644 --- a/router/java/src/net/i2p/router/util/RandomIterator.java +++ b/router/java/src/net/i2p/router/util/RandomIterator.java @@ -192,11 +192,11 @@ public class RandomIterator<E> implements Iterator<E> { private static void test(int n) { System.out.println("testing with " + n); - List<Integer> l = new ArrayList(n); + List<Integer> l = new ArrayList<Integer>(n); for (int i = 0; i < n; i++) { l.add(Integer.valueOf(i)); } - for (Iterator<Integer> iter = new RandomIterator(l); iter.hasNext(); ) { + for (Iterator<Integer> iter = new RandomIterator<Integer>(l); iter.hasNext(); ) { System.out.println(iter.next().toString()); } } diff --git a/router/java/src/net/i2p/router/util/RemovableSingletonSet.java b/router/java/src/net/i2p/router/util/RemovableSingletonSet.java index 57aa1e9795..92e61fc13f 100644 --- a/router/java/src/net/i2p/router/util/RemovableSingletonSet.java +++ b/router/java/src/net/i2p/router/util/RemovableSingletonSet.java @@ -1,10 +1,8 @@ package net.i2p.router.util; import java.util.AbstractSet; -import java.util.Collection; import java.util.Iterator; import java.util.NoSuchElementException; -import java.util.Set; /** * Like Collections.singleton() but item is removable, diff --git a/router/java/src/net/i2p/router/util/RouterPasswordManager.java b/router/java/src/net/i2p/router/util/RouterPasswordManager.java index 6b5fbb7f0c..97ef2468db 100644 --- a/router/java/src/net/i2p/router/util/RouterPasswordManager.java +++ b/router/java/src/net/i2p/router/util/RouterPasswordManager.java @@ -9,7 +9,6 @@ import java.util.Map; import net.i2p.data.Base64; import net.i2p.data.DataHelper; import net.i2p.data.SessionKey; -import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.util.PasswordManager; @@ -71,8 +70,8 @@ public class RouterPasswordManager extends PasswordManager { saveHash(PROP_I2CP_NEW, user, pw); } // obfuscation of plaintext passwords - Map<String, String> toAdd = new HashMap(5); - List<String> toDel = new ArrayList(5); + Map<String, String> toAdd = new HashMap<String, String>(5); + List<String> toDel = new ArrayList<String>(5); /**** for (int i = 0; i < MIGRATE_FROM.length; i++) { if ((pw = _context.getProperty(MIGRATE_FROM[i])) != null) { @@ -114,7 +113,7 @@ public class RouterPasswordManager extends PasswordManager { if (user != null && user.length() > 0) pfx += '.' + user; Map<String, String> toAdd = Collections.singletonMap(pfx + PROP_PW, pw); - List<String> toDel = new ArrayList(4); + List<String> toDel = new ArrayList<String>(4); toDel.add(pfx + PROP_B64); toDel.add(pfx + PROP_MD5); toDel.add(pfx + PROP_CRYPT); @@ -138,7 +137,7 @@ public class RouterPasswordManager extends PasswordManager { pfx += '.' + user; String b64 = Base64.encode(DataHelper.getUTF8(pw)); Map<String, String> toAdd = Collections.singletonMap(pfx + PROP_B64, b64); - List<String> toDel = new ArrayList(4); + List<String> toDel = new ArrayList<String>(4); toDel.add(pfx + PROP_PW); toDel.add(pfx + PROP_MD5); toDel.add(pfx + PROP_CRYPT); @@ -167,7 +166,7 @@ public class RouterPasswordManager extends PasswordManager { System.arraycopy(pwHash, 0, shashBytes, SALT_LENGTH, SessionKey.KEYSIZE_BYTES); String shash = Base64.encode(shashBytes); Map<String, String> toAdd = Collections.singletonMap(pfx + PROP_SHASH, shash); - List<String> toDel = new ArrayList(4); + List<String> toDel = new ArrayList<String>(4); toDel.add(pfx + PROP_PW); toDel.add(pfx + PROP_B64); toDel.add(pfx + PROP_MD5); @@ -186,7 +185,7 @@ public class RouterPasswordManager extends PasswordManager { String pfx = realm; if (user != null && user.length() > 0) pfx += '.' + user; - List<String> toDel = new ArrayList(5); + List<String> toDel = new ArrayList<String>(5); toDel.add(pfx + PROP_PW); toDel.add(pfx + PROP_B64); toDel.add(pfx + PROP_MD5); -- GitLab