[tor-commits] [onionoo/master] Use Map.putIfAbsent and Map.getOrDefault where possible.
karsten at torproject.org
karsten at torproject.org
Mon Aug 27 12:34:52 UTC 2018
commit c51c4f20a56e56ff3d72b129666b824712f02d10
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Tue Aug 21 14:46:16 2018 +0200
Use Map.putIfAbsent and Map.getOrDefault where possible.
---
.../torproject/onionoo/docs/ClientsHistory.java | 9 +--
.../org/torproject/onionoo/docs/NodeStatus.java | 7 +--
.../onionoo/server/MostFrequentString.java | 17 ++----
.../org/torproject/onionoo/server/NodeIndexer.java | 68 ++++++----------------
.../onionoo/updater/ClientsStatusUpdater.java | 8 +--
.../onionoo/updater/DescriptorSource.java | 5 +-
.../onionoo/updater/NodeDetailsStatusUpdater.java | 20 ++-----
.../onionoo/updater/UptimeStatusUpdater.java | 9 +--
.../onionoo/docs/DummyDocumentStore.java | 4 +-
.../onionoo/server/ResourceServletTest.java | 5 +-
.../onionoo/updater/DummyDescriptorSource.java | 9 +--
11 files changed, 42 insertions(+), 119 deletions(-)
diff --git a/src/main/java/org/torproject/onionoo/docs/ClientsHistory.java b/src/main/java/org/torproject/onionoo/docs/ClientsHistory.java
index 0efe181..1890060 100644
--- a/src/main/java/org/torproject/onionoo/docs/ClientsHistory.java
+++ b/src/main/java/org/torproject/onionoo/docs/ClientsHistory.java
@@ -181,12 +181,9 @@ public class ClientsHistory implements Comparable<ClientsHistory> {
SortedMap<String, Double> thisResponses,
SortedMap<String, Double> otherResponses) {
for (Map.Entry<String, Double> e : otherResponses.entrySet()) {
- if (thisResponses.containsKey(e.getKey())) {
- thisResponses.put(e.getKey(), thisResponses.get(e.getKey())
- + e.getValue());
- } else {
- thisResponses.put(e.getKey(), e.getValue());
- }
+ thisResponses.putIfAbsent(e.getKey(), 0.0);
+ thisResponses.put(e.getKey(), thisResponses.get(e.getKey())
+ + e.getValue());
}
}
diff --git a/src/main/java/org/torproject/onionoo/docs/NodeStatus.java b/src/main/java/org/torproject/onionoo/docs/NodeStatus.java
index 9080b84..32965dd 100644
--- a/src/main/java/org/torproject/onionoo/docs/NodeStatus.java
+++ b/src/main/java/org/torproject/onionoo/docs/NodeStatus.java
@@ -335,11 +335,8 @@ public class NodeStatus extends Document {
addressesAndPorts.add(address + ":" + dirPort);
}
addressesAndPorts.addAll(orAddressesAndPorts);
- if (this.lastAddresses.containsKey(lastSeenMillis)) {
- this.lastAddresses.get(lastSeenMillis).addAll(addressesAndPorts);
- } else {
- this.lastAddresses.put(lastSeenMillis, addressesAndPorts);
- }
+ this.lastAddresses.putIfAbsent(lastSeenMillis, new TreeSet<>());
+ this.lastAddresses.get(lastSeenMillis).addAll(addressesAndPorts);
}
/** Returns the time in milliseconds since the epoch when addresses or
diff --git a/src/main/java/org/torproject/onionoo/server/MostFrequentString.java b/src/main/java/org/torproject/onionoo/server/MostFrequentString.java
index 3d4d4c2..a6b7cb5 100644
--- a/src/main/java/org/torproject/onionoo/server/MostFrequentString.java
+++ b/src/main/java/org/torproject/onionoo/server/MostFrequentString.java
@@ -3,7 +3,6 @@
package org.torproject.onionoo.server;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -17,12 +16,8 @@ class MostFrequentString {
Map<String, Integer> stringFrequencies = new HashMap<>();
void addString(String string) {
- if (!this.stringFrequencies.containsKey(string)) {
- this.stringFrequencies.put(string, 1);
- } else {
- this.stringFrequencies.put(string,
- this.stringFrequencies.get(string) + 1);
- }
+ this.stringFrequencies.put(string,
+ this.stringFrequencies.getOrDefault(string, 0) + 1);
}
@Override
@@ -33,12 +28,8 @@ class MostFrequentString {
return "null (0)";
}
for (Map.Entry<String, Integer> e : stringFrequencies.entrySet()) {
- if (!sortedFrequencies.containsKey(e.getValue())) {
- sortedFrequencies.put(e.getValue(), new TreeSet<>(
- Arrays.asList(e.getKey())));
- } else {
- sortedFrequencies.get(e.getValue()).add(e.getKey());
- }
+ sortedFrequencies.putIfAbsent(e.getValue(), new TreeSet<>());
+ sortedFrequencies.get(e.getValue()).add(e.getKey());
}
StringBuilder sb = new StringBuilder();
int stringsToAdd = 3;
diff --git a/src/main/java/org/torproject/onionoo/server/NodeIndexer.java b/src/main/java/org/torproject/onionoo/server/NodeIndexer.java
index 8388f33..80418aa 100644
--- a/src/main/java/org/torproject/onionoo/server/NodeIndexer.java
+++ b/src/main/java/org/torproject/onionoo/server/NodeIndexer.java
@@ -209,10 +209,7 @@ public class NodeIndexer implements ServletContextListener, Runnable {
* installations in international waters. */
countryCode = "xz";
}
- if (!newRelaysByCountryCode.containsKey(countryCode)) {
- newRelaysByCountryCode.put(countryCode,
- new HashSet<>());
- }
+ newRelaysByCountryCode.putIfAbsent(countryCode, new HashSet<>());
newRelaysByCountryCode.get(countryCode).add(fingerprint);
newRelaysByCountryCode.get(countryCode).add(hashedFingerprint);
String asNumber;
@@ -225,22 +222,16 @@ public class NodeIndexer implements ServletContextListener, Runnable {
* shouldn't appear in any lookup databases. */
asNumber = "AS0";
}
- if (!newRelaysByAsNumber.containsKey(asNumber)) {
- newRelaysByAsNumber.put(asNumber, new HashSet<>());
- }
+ newRelaysByAsNumber.putIfAbsent(asNumber, new HashSet<>());
newRelaysByAsNumber.get(asNumber).add(fingerprint);
newRelaysByAsNumber.get(asNumber).add(hashedFingerprint);
String asName = entry.getAsName();
- if (!newRelaysByAsName.containsKey(asName)) {
- newRelaysByAsName.put(asName, new HashSet<>());
- }
+ newRelaysByAsName.putIfAbsent(asName, new HashSet<>());
newRelaysByAsName.get(asName).add(fingerprint);
newRelaysByAsName.get(asName).add(hashedFingerprint);
for (String flag : entry.getRelayFlags()) {
String flagLowerCase = flag.toLowerCase();
- if (!newRelaysByFlag.containsKey(flagLowerCase)) {
- newRelaysByFlag.put(flagLowerCase, new HashSet<>());
- }
+ newRelaysByFlag.putIfAbsent(flagLowerCase, new HashSet<>());
newRelaysByFlag.get(flagLowerCase).add(fingerprint);
newRelaysByFlag.get(flagLowerCase).add(hashedFingerprint);
}
@@ -258,42 +249,31 @@ public class NodeIndexer implements ServletContextListener, Runnable {
int daysSinceFirstSeen = (int) ((
(specialTime < 0 ? System.currentTimeMillis() : specialTime)
- entry.getFirstSeenMillis()) / ONE_DAY);
- if (!newRelaysByFirstSeenDays.containsKey(daysSinceFirstSeen)) {
- newRelaysByFirstSeenDays.put(daysSinceFirstSeen,
- new HashSet<>());
- }
+ newRelaysByFirstSeenDays.putIfAbsent(daysSinceFirstSeen, new HashSet<>());
newRelaysByFirstSeenDays.get(daysSinceFirstSeen).add(fingerprint);
newRelaysByFirstSeenDays.get(daysSinceFirstSeen).add(
hashedFingerprint);
int daysSinceLastSeen = (int) ((
(specialTime < 0 ? System.currentTimeMillis() : specialTime)
- entry.getLastSeenMillis()) / ONE_DAY);
- if (!newRelaysByLastSeenDays.containsKey(daysSinceLastSeen)) {
- newRelaysByLastSeenDays.put(daysSinceLastSeen,
- new HashSet<>());
- }
+ newRelaysByLastSeenDays.putIfAbsent(daysSinceLastSeen, new HashSet<>());
newRelaysByLastSeenDays.get(daysSinceLastSeen).add(fingerprint);
newRelaysByLastSeenDays.get(daysSinceLastSeen).add(
hashedFingerprint);
String contact = entry.getContact();
- if (!newRelaysByContact.containsKey(contact)) {
- newRelaysByContact.put(contact, new HashSet<>());
- }
+ newRelaysByContact.putIfAbsent(contact, new HashSet<>());
newRelaysByContact.get(contact).add(fingerprint);
newRelaysByContact.get(contact).add(hashedFingerprint);
String version = entry.getVersion();
if (null != version) {
- if (!newRelaysByVersion.containsKey(version)) {
- newRelaysByVersion.put(version, new HashSet<>());
- }
+ newRelaysByVersion.putIfAbsent(version, new HashSet<>());
newRelaysByVersion.get(version).add(fingerprint);
newRelaysByVersion.get(version).add(hashedFingerprint);
}
String operatingSystem = entry.getOperatingSystem();
if (null != operatingSystem) {
- if (!newRelaysByOperatingSystem.containsKey(operatingSystem)) {
- newRelaysByOperatingSystem.put(operatingSystem, new HashSet<>());
- }
+ newRelaysByOperatingSystem.putIfAbsent(operatingSystem,
+ new HashSet<>());
newRelaysByOperatingSystem.get(operatingSystem).add(fingerprint);
newRelaysByOperatingSystem.get(operatingSystem).add(hashedFingerprint);
}
@@ -308,9 +288,7 @@ public class NodeIndexer implements ServletContextListener, Runnable {
}
for (String hostName : allHostNames) {
String hostNameLowerCase = hostName.toLowerCase();
- if (!newRelaysByHostName.containsKey(hostNameLowerCase)) {
- newRelaysByHostName.put(hostNameLowerCase, new HashSet<>());
- }
+ newRelaysByHostName.putIfAbsent(hostNameLowerCase, new HashSet<>());
newRelaysByHostName.get(hostNameLowerCase).add(fingerprint);
newRelaysByHostName.get(hostNameLowerCase).add(hashedFingerprint);
}
@@ -346,9 +324,7 @@ public class NodeIndexer implements ServletContextListener, Runnable {
entry);
for (String flag : entry.getRelayFlags()) {
String flagLowerCase = flag.toLowerCase();
- if (!newBridgesByFlag.containsKey(flagLowerCase)) {
- newBridgesByFlag.put(flagLowerCase, new HashSet<>());
- }
+ newBridgesByFlag.putIfAbsent(flagLowerCase, new HashSet<>());
newBridgesByFlag.get(flagLowerCase).add(hashedFingerprint);
newBridgesByFlag.get(flagLowerCase).add(
hashedHashedFingerprint);
@@ -356,10 +332,8 @@ public class NodeIndexer implements ServletContextListener, Runnable {
int daysSinceFirstSeen = (int) ((
(specialTime < 0 ? System.currentTimeMillis() : specialTime)
- entry.getFirstSeenMillis()) / ONE_DAY);
- if (!newBridgesByFirstSeenDays.containsKey(daysSinceFirstSeen)) {
- newBridgesByFirstSeenDays.put(daysSinceFirstSeen,
- new HashSet<>());
- }
+ newBridgesByFirstSeenDays.putIfAbsent(daysSinceFirstSeen,
+ new HashSet<>());
newBridgesByFirstSeenDays.get(daysSinceFirstSeen).add(
hashedFingerprint);
newBridgesByFirstSeenDays.get(daysSinceFirstSeen).add(
@@ -367,27 +341,21 @@ public class NodeIndexer implements ServletContextListener, Runnable {
int daysSinceLastSeen = (int) ((
(specialTime < 0 ? System.currentTimeMillis() : specialTime)
- entry.getLastSeenMillis()) / ONE_DAY);
- if (!newBridgesByLastSeenDays.containsKey(daysSinceLastSeen)) {
- newBridgesByLastSeenDays.put(daysSinceLastSeen,
- new HashSet<>());
- }
+ newBridgesByLastSeenDays.putIfAbsent(daysSinceLastSeen, new HashSet<>());
newBridgesByLastSeenDays.get(daysSinceLastSeen).add(
hashedFingerprint);
newBridgesByLastSeenDays.get(daysSinceLastSeen).add(
hashedHashedFingerprint);
String version = entry.getVersion();
if (null != version) {
- if (!newBridgesByVersion.containsKey(version)) {
- newBridgesByVersion.put(version, new HashSet<>());
- }
+ newBridgesByVersion.putIfAbsent(version, new HashSet<>());
newBridgesByVersion.get(version).add(hashedFingerprint);
newBridgesByVersion.get(version).add(hashedHashedFingerprint);
}
String operatingSystem = entry.getOperatingSystem();
if (null != operatingSystem) {
- if (!newBridgesByOperatingSystem.containsKey(operatingSystem)) {
- newBridgesByOperatingSystem.put(operatingSystem, new HashSet<>());
- }
+ newBridgesByOperatingSystem.putIfAbsent(operatingSystem,
+ new HashSet<>());
newBridgesByOperatingSystem.get(operatingSystem)
.add(hashedFingerprint);
newBridgesByOperatingSystem.get(operatingSystem)
diff --git a/src/main/java/org/torproject/onionoo/updater/ClientsStatusUpdater.java b/src/main/java/org/torproject/onionoo/updater/ClientsStatusUpdater.java
index 205e391..e7ccd0b 100644
--- a/src/main/java/org/torproject/onionoo/updater/ClientsStatusUpdater.java
+++ b/src/main/java/org/torproject/onionoo/updater/ClientsStatusUpdater.java
@@ -114,12 +114,8 @@ public class ClientsStatusUpdater implements DescriptorListener,
ClientsHistory newResponseHistory = new ClientsHistory(
startMillis, endMillis, totalResponses, responsesByCountry,
responsesByTransport, responsesByVersion);
- if (!this.newResponses.containsKey(hashedFingerprint)) {
- this.newResponses.put(hashedFingerprint,
- new TreeSet<>());
- }
- this.newResponses.get(hashedFingerprint).add(
- newResponseHistory);
+ this.newResponses.putIfAbsent(hashedFingerprint, new TreeSet<>());
+ this.newResponses.get(hashedFingerprint).add(newResponseHistory);
}
}
diff --git a/src/main/java/org/torproject/onionoo/updater/DescriptorSource.java b/src/main/java/org/torproject/onionoo/updater/DescriptorSource.java
index 65d342a..afa27a5 100644
--- a/src/main/java/org/torproject/onionoo/updater/DescriptorSource.java
+++ b/src/main/java/org/torproject/onionoo/updater/DescriptorSource.java
@@ -81,10 +81,7 @@ public class DescriptorSource {
/** Registers a descriptor listener for a given descriptor type. */
public void registerDescriptorListener(DescriptorListener listener,
DescriptorType descriptorType) {
- if (!this.descriptorListeners.containsKey(descriptorType)) {
- this.descriptorListeners.put(descriptorType,
- new HashSet<>());
- }
+ this.descriptorListeners.putIfAbsent(descriptorType, new HashSet<>());
this.descriptorListeners.get(descriptorType).add(listener);
}
diff --git a/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java b/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java
index 1cd989d..9bb4ab7 100644
--- a/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java
+++ b/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java
@@ -223,16 +223,11 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
if (scanMillis < this.now - DateTimeHelper.ONE_DAY) {
continue;
}
- if (!this.exitListEntries.containsKey(fingerprint)) {
- this.exitListEntries.put(fingerprint, new HashMap<>());
- }
+ this.exitListEntries.putIfAbsent(fingerprint, new HashMap<>());
String exitAddress = exitAddressScanMillis.getKey();
- if (!this.exitListEntries.get(fingerprint).containsKey(
- exitAddress)
- || this.exitListEntries.get(fingerprint).get(exitAddress)
+ if (this.exitListEntries.get(fingerprint).getOrDefault(exitAddress, 0L)
< scanMillis) {
- this.exitListEntries.get(fingerprint).put(exitAddress,
- scanMillis);
+ this.exitListEntries.get(fingerprint).put(exitAddress, scanMillis);
}
}
}
@@ -288,14 +283,12 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
nodeStatus.setVersion(version);
}
if (entry.getUnmeasured()) {
- if (!this.lastSeenUnmeasured.containsKey(fingerprint)
- || this.lastSeenUnmeasured.get(fingerprint)
+ if (this.lastSeenUnmeasured.getOrDefault(fingerprint, 0L)
< validAfterMillis) {
this.lastSeenUnmeasured.put(fingerprint, validAfterMillis);
}
} else if (consensus.getConsensusMethod() >= 17) {
- if (!this.lastSeenMeasured.containsKey(fingerprint)
- || this.lastSeenMeasured.get(fingerprint)
+ if (this.lastSeenMeasured.getOrDefault(fingerprint, 0L)
< validAfterMillis) {
this.lastSeenMeasured.put(fingerprint, validAfterMillis);
}
@@ -846,8 +839,7 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
this.exitListEntries.get(fingerprint).entrySet()) {
String exitAddress = e.getKey();
long scanMillis = e.getValue();
- if (!exitAddresses.containsKey(exitAddress)
- || exitAddresses.get(exitAddress) < scanMillis) {
+ if (exitAddresses.getOrDefault(exitAddress, 0L) < scanMillis) {
exitAddresses.put(exitAddress, scanMillis);
}
}
diff --git a/src/main/java/org/torproject/onionoo/updater/UptimeStatusUpdater.java b/src/main/java/org/torproject/onionoo/updater/UptimeStatusUpdater.java
index f1ff574..58cd2fb 100644
--- a/src/main/java/org/torproject/onionoo/updater/UptimeStatusUpdater.java
+++ b/src/main/java/org/torproject/onionoo/updater/UptimeStatusUpdater.java
@@ -103,10 +103,7 @@ public class UptimeStatusUpdater implements DescriptorListener,
for (NetworkStatusEntry entry :
consensus.getStatusEntries().values()) {
String fingerprint = entry.getFingerprint();
- if (!this.newRunningRelays.containsKey(fingerprint)) {
- this.newRunningRelays.put(fingerprint,
- new TreeMap<>());
- }
+ this.newRunningRelays.putIfAbsent(fingerprint, new TreeMap<>());
this.newRunningRelays.get(fingerprint).put(dateHourMillis,
new Flags(entry.getFlags()));
}
@@ -124,9 +121,7 @@ public class UptimeStatusUpdater implements DescriptorListener,
long dateHourMillis = (status.getPublishedMillis()
/ DateTimeHelper.ONE_HOUR) * DateTimeHelper.ONE_HOUR;
for (String fingerprint : fingerprints) {
- if (!this.newRunningBridges.containsKey(fingerprint)) {
- this.newRunningBridges.put(fingerprint, new TreeSet<>());
- }
+ this.newRunningBridges.putIfAbsent(fingerprint, new TreeSet<>());
this.newRunningBridges.get(fingerprint).add(dateHourMillis);
}
this.newBridgeStatuses.add(dateHourMillis);
diff --git a/src/test/java/org/torproject/onionoo/docs/DummyDocumentStore.java b/src/test/java/org/torproject/onionoo/docs/DummyDocumentStore.java
index 3c79235..a8f51ae 100644
--- a/src/test/java/org/torproject/onionoo/docs/DummyDocumentStore.java
+++ b/src/test/java/org/torproject/onionoo/docs/DummyDocumentStore.java
@@ -19,9 +19,7 @@ public class DummyDocumentStore extends DocumentStore {
private <T extends Document> SortedMap<String, Document>
getStoredDocumentsByClass(Class<T> documentType) {
- if (!this.storedDocuments.containsKey(documentType)) {
- this.storedDocuments.put(documentType, new TreeMap<>());
- }
+ this.storedDocuments.putIfAbsent(documentType, new TreeMap<>());
return this.storedDocuments.get(documentType);
}
diff --git a/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java b/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java
index 022381b..a6042b1 100644
--- a/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java
+++ b/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java
@@ -335,10 +335,7 @@ public class ResourceServletTest {
new HashMap<>();
for (String parameter : uriParts[1].split("&")) {
String[] parameterParts = parameter.split("=");
- if (!parameterLists.containsKey(parameterParts[0])) {
- parameterLists.put(parameterParts[0],
- new ArrayList<>());
- }
+ parameterLists.putIfAbsent(parameterParts[0], new ArrayList<>());
parameterLists.get(parameterParts[0]).add(parameterParts[1]);
}
parameters = new HashMap<>();
diff --git a/src/test/java/org/torproject/onionoo/updater/DummyDescriptorSource.java b/src/test/java/org/torproject/onionoo/updater/DummyDescriptorSource.java
index 22ae477..e31585d 100644
--- a/src/test/java/org/torproject/onionoo/updater/DummyDescriptorSource.java
+++ b/src/test/java/org/torproject/onionoo/updater/DummyDescriptorSource.java
@@ -31,9 +31,7 @@ public class DummyDescriptorSource extends DescriptorSource {
private Set<Descriptor> getDescriptorsByType(
DescriptorType descriptorType) {
- if (!this.descriptors.containsKey(descriptorType)) {
- this.descriptors.put(descriptorType, new HashSet<>());
- }
+ this.descriptors.putIfAbsent(descriptorType, new HashSet<>());
return this.descriptors.get(descriptorType);
}
@@ -43,10 +41,7 @@ public class DummyDescriptorSource extends DescriptorSource {
/** Register a listener to receive descriptors of the demanded type. */
public void registerDescriptorListener(DescriptorListener listener,
DescriptorType descriptorType) {
- if (!this.descriptorListeners.containsKey(descriptorType)) {
- this.descriptorListeners.put(descriptorType,
- new HashSet<>());
- }
+ this.descriptorListeners.putIfAbsent(descriptorType, new HashSet<>());
this.descriptorListeners.get(descriptorType).add(listener);
}
More information about the tor-commits
mailing list