From 6b2182dec6d77fe29c29bb563e637a31060b9fae Mon Sep 17 00:00:00 2001 From: Jacob Laursen Date: Sun, 7 Jan 2024 20:51:46 +0100 Subject: [PATCH] Refactor java.util.Date usages to java.time.Instant (#4026) Signed-off-by: Jacob Laursen --- .../config/discovery/AbstractDiscoveryService.java | 8 ++++---- .../discovery/internal/DiscoveryResultImpl.java | 10 +++++----- .../config/discovery/internal/PersistentInbox.java | 13 +++++++------ .../console/InboxConsoleCommandExtension.java | 4 ++-- .../config/discovery/internal/InboxOSGiTest.java | 8 ++++---- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/AbstractDiscoveryService.java b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/AbstractDiscoveryService.java index 2f5fb4f3db0..5ea6830b5ab 100644 --- a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/AbstractDiscoveryService.java +++ b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/AbstractDiscoveryService.java @@ -12,9 +12,9 @@ */ package org.openhab.core.config.discovery; +import java.time.Instant; import java.util.Arrays; import java.util.Collection; -import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -69,7 +69,7 @@ public abstract class AbstractDiscoveryService implements DiscoveryService { private final Set supportedThingTypes; private final int timeout; - private long timestampOfLastScan = 0L; + private Instant timestampOfLastScan = Instant.MIN; private @Nullable ScheduledFuture scheduledStop; @@ -190,7 +190,7 @@ public synchronized void startScan(@Nullable ScanListener listener) { } }, getScanTimeout(), TimeUnit.SECONDS); } - timestampOfLastScan = new Date().getTime(); + timestampOfLastScan = Instant.now(); try { startScan(); @@ -421,7 +421,7 @@ protected void stopBackgroundDiscovery() { * @return timestamp as long */ protected long getTimestampOfLastScan() { - return timestampOfLastScan; + return Instant.MIN.equals(timestampOfLastScan) ? 0 : timestampOfLastScan.toEpochMilli(); } private String inferKey(DiscoveryResult discoveryResult, String lastSegment) { diff --git a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/DiscoveryResultImpl.java b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/DiscoveryResultImpl.java index a0e462aabfb..90353626519 100644 --- a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/DiscoveryResultImpl.java +++ b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/DiscoveryResultImpl.java @@ -12,8 +12,8 @@ */ package org.openhab.core.config.discovery.internal; +import java.time.Instant; import java.util.Collections; -import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -43,7 +43,7 @@ public class DiscoveryResultImpl implements DiscoveryResult { private @Nullable String representationProperty; private @NonNullByDefault({}) DiscoveryResultFlag flag; private @NonNullByDefault({}) String label; - private long timestamp; + private Instant timestamp = Instant.MIN; private long timeToLive = TTL_UNLIMITED; /** @@ -86,7 +86,7 @@ public DiscoveryResultImpl(@Nullable ThingTypeUID thingTypeUID, ThingUID thingUI this.representationProperty = representationProperty; this.label = label == null ? "" : label; - this.timestamp = new Date().getTime(); + this.timestamp = Instant.now(); this.timeToLive = timeToLive; this.flag = DiscoveryResultFlag.NEW; @@ -157,7 +157,7 @@ public void synchronize(@Nullable DiscoveryResult sourceResult) { this.properties = sourceResult.getProperties(); this.representationProperty = sourceResult.getRepresentationProperty(); this.label = sourceResult.getLabel(); - this.timestamp = new Date().getTime(); + this.timestamp = Instant.now(); this.timeToLive = sourceResult.getTimeToLive(); } } @@ -221,7 +221,7 @@ public String toString() { @Override public long getTimestamp() { - return timestamp; + return Instant.MIN.equals(timestamp) ? 0 : timestamp.toEpochMilli(); } @Override diff --git a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/PersistentInbox.java b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/PersistentInbox.java index 87a41bc16a2..f9408a530c4 100644 --- a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/PersistentInbox.java +++ b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/PersistentInbox.java @@ -15,9 +15,9 @@ import static org.openhab.core.config.discovery.inbox.InboxPredicates.forThingUID; import java.net.URI; +import java.time.Instant; import java.util.ArrayList; import java.util.Collection; -import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -112,7 +112,7 @@ public TimeToLiveCheckingThread(PersistentInbox inbox) { @Override public void run() { - long now = new Date().getTime(); + Instant now = Instant.now(); for (DiscoveryResult result : inbox.getAll()) { if (isResultExpired(result, now)) { logger.debug("Inbox entry for thing '{}' is expired and will be removed.", result.getThingUID()); @@ -121,11 +121,12 @@ public void run() { } } - private boolean isResultExpired(DiscoveryResult result, long now) { - if (result.getTimeToLive() == DiscoveryResult.TTL_UNLIMITED) { + private boolean isResultExpired(DiscoveryResult result, Instant now) { + long ttl = result.getTimeToLive(); + if (ttl == DiscoveryResult.TTL_UNLIMITED) { return false; } - return (result.getTimestamp() + result.getTimeToLive() * 1000 < now); + return Instant.ofEpochMilli(result.getTimestamp()).plusSeconds(ttl).isBefore(now); } } @@ -442,7 +443,7 @@ public void thingRemoved(DiscoveryService source, ThingUID thingUID) { removedThings.add(thingUID); remove(thingUID); logger.debug("Removed thing '{}' from inbox because it was older than {}.", thingUID, - new Date(timestamp)); + Instant.ofEpochMilli(timestamp)); } } } diff --git a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/console/InboxConsoleCommandExtension.java b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/console/InboxConsoleCommandExtension.java index 65c138f3a75..58ec6d3030b 100644 --- a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/console/InboxConsoleCommandExtension.java +++ b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/console/InboxConsoleCommandExtension.java @@ -14,7 +14,7 @@ import static org.openhab.core.config.discovery.inbox.InboxPredicates.*; -import java.util.Date; +import java.time.Instant; import java.util.List; import java.util.Map; import java.util.Objects; @@ -163,7 +163,7 @@ private void printInboxEntries(Console console, List discoveryR ThingUID bridgeId = discoveryResult.getBridgeUID(); Map properties = discoveryResult.getProperties(); String representationProperty = discoveryResult.getRepresentationProperty(); - String timestamp = new Date(discoveryResult.getTimestamp()).toString(); + String timestamp = Instant.ofEpochMilli(discoveryResult.getTimestamp()).toString(); String timeToLive = discoveryResult.getTimeToLive() == DiscoveryResult.TTL_UNLIMITED ? "UNLIMITED" : "" + discoveryResult.getTimeToLive(); console.println(String.format( diff --git a/itests/org.openhab.core.config.discovery.tests/src/main/java/org/openhab/core/config/discovery/internal/InboxOSGiTest.java b/itests/org.openhab.core.config.discovery.tests/src/main/java/org/openhab/core/config/discovery/internal/InboxOSGiTest.java index 05a7e56e8e4..c3fc9fa15af 100644 --- a/itests/org.openhab.core.config.discovery.tests/src/main/java/org/openhab/core/config/discovery/internal/InboxOSGiTest.java +++ b/itests/org.openhab.core.config.discovery.tests/src/main/java/org/openhab/core/config/discovery/internal/InboxOSGiTest.java @@ -20,9 +20,9 @@ import java.math.BigDecimal; import java.net.URI; +import java.time.Instant; import java.util.ArrayList; import java.util.Collection; -import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -148,7 +148,7 @@ protected void startScan() { put("pnr", 1234455); put("snr", 12345); put("manufacturer", "huawei"); - put("manufactured", new Date(12344)); + put("manufactured", Instant.ofEpochMilli(12344)); } }; @@ -1019,7 +1019,7 @@ public Collection getConfigDescriptions(@Nullable Locale loca @Test public void assertThatRemoveOlderResultsOnlyRemovesResultsFromTheSameDiscoveryService() { inbox.thingDiscovered(discoveryService1, testDiscoveryResult); - long now = new Date().getTime() + 1; + long now = Instant.now().toEpochMilli() + 1; assertThat(inbox.getAll().size(), is(1)); // should not remove a result @@ -1034,7 +1034,7 @@ public void assertThatRemoveOlderResultsOnlyRemovesResultsFromTheSameDiscoverySe @Test public void assertThatRemoveOlderResultsRemovesResultsWithoutAsource() { inbox.add(testDiscoveryResult); - long now = new Date().getTime() + 1; + long now = Instant.now().toEpochMilli() + 1; assertThat(inbox.getAll().size(), is(1)); // should remove a result