From e1188ccc63eae5bc5f200d14893773e062d0af07 Mon Sep 17 00:00:00 2001 From: Leumor <116955025+leumor@users.noreply.github.com> Date: Tue, 24 Mar 2026 19:21:43 +0000 Subject: [PATCH 1/2] refactor(runtime): Rehome legacy admin adapters Move the page-oriented legacy runtime adapters into network.crypta.runtime.admin and construct them through AdminRuntimePortsFactory. Update LegacyRuntimePorts to consume the bundle, move the direct adapter tests into the new package, and keep LegacyRuntimePortsTest verifying the relocated concrete types without widening adapter visibility. Also add doclint-clean Javadoc for the newly added admin package files. --- .../node/runtime/LegacyRuntimePorts.java | 38 ++++---- .../admin/AdminRuntimePortsBundle.java | 73 +++++++++++++++ .../admin/AdminRuntimePortsFactory.java | 56 ++++++++++++ .../admin}/LegacyConnectionsPagePort.java | 2 +- .../admin}/LegacyConnectionsSupportPort.java | 2 +- .../admin}/LegacyDarknetConnectionsPort.java | 2 +- .../admin}/LegacyDarknetMessagingPort.java | 2 +- .../admin}/LegacyDarknetPeerResolver.java | 2 +- .../admin}/LegacyDiagnosticPort.java | 2 +- .../admin}/LegacyFirstTimeWizardPort.java | 2 +- .../admin}/LegacyPageChromePort.java | 2 +- .../admin}/LegacyQueueCompletionPort.java | 2 +- .../admin}/LegacyQueueDownloadPort.java | 2 +- .../admin}/LegacyQueueInsertPort.java | 2 +- .../admin}/LegacyQueueMutationPort.java | 2 +- .../admin}/LegacyQueuePagePort.java | 2 +- .../admin}/LegacyQueueSupportPort.java | 2 +- .../admin}/LegacyStatisticsPort.java | 2 +- .../admin}/LegacyToadletSymlinkPort.java | 2 +- .../admin}/LegacyWelcomeActionPort.java | 4 +- .../admin}/LegacyWelcomePagePort.java | 2 +- .../crypta/runtime/admin/package-info.java | 15 +++ .../node/runtime/LegacyRuntimePortsTest.java | 91 +++++++++++++++---- .../admin}/LegacyConnectionsPagePortTest.java | 2 +- .../LegacyConnectionsSupportPortTest.java | 2 +- .../LegacyDarknetConnectionsPortTest.java | 2 +- .../LegacyDarknetMessagingPortTest.java | 2 +- .../admin}/LegacyDarknetPeerResolverTest.java | 2 +- .../admin}/LegacyDiagnosticPortTest.java | 2 +- .../admin}/LegacyFirstTimeWizardPortTest.java | 2 +- .../admin}/LegacyPageChromePortTest.java | 2 +- .../admin}/LegacyQueueCompletionPortTest.java | 2 +- .../admin}/LegacyQueueDownloadPortTest.java | 2 +- .../admin}/LegacyQueueInsertPortTest.java | 2 +- .../admin}/LegacyQueueMutationPortTest.java | 2 +- .../admin}/LegacyQueuePagePortTest.java | 2 +- .../admin}/LegacyQueueSupportPortTest.java | 2 +- .../admin}/LegacyStatisticsPortTest.java | 2 +- .../admin}/LegacyToadletSymlinkPortTest.java | 2 +- .../admin}/LegacyWelcomeActionPortTest.java | 2 +- .../admin}/LegacyWelcomePagePortTest.java | 2 +- 41 files changed, 276 insertions(+), 71 deletions(-) create mode 100644 src/main/java/network/crypta/runtime/admin/AdminRuntimePortsBundle.java create mode 100644 src/main/java/network/crypta/runtime/admin/AdminRuntimePortsFactory.java rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyConnectionsPagePort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyConnectionsSupportPort.java (98%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyDarknetConnectionsPort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyDarknetMessagingPort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyDarknetPeerResolver.java (98%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyDiagnosticPort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyFirstTimeWizardPort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyPageChromePort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueCompletionPort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueDownloadPort.java (98%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueInsertPort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueMutationPort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueuePagePort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueSupportPort.java (98%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyStatisticsPort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyToadletSymlinkPort.java (99%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyWelcomeActionPort.java (98%) rename src/main/java/network/crypta/{node/runtime => runtime/admin}/LegacyWelcomePagePort.java (98%) create mode 100644 src/main/java/network/crypta/runtime/admin/package-info.java rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyConnectionsPagePortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyConnectionsSupportPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyDarknetConnectionsPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyDarknetMessagingPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyDarknetPeerResolverTest.java (98%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyDiagnosticPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyFirstTimeWizardPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyPageChromePortTest.java (98%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueCompletionPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueDownloadPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueInsertPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueMutationPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueuePagePortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyQueueSupportPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyStatisticsPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyToadletSymlinkPortTest.java (98%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyWelcomeActionPortTest.java (99%) rename src/test/java/network/crypta/{node/runtime => runtime/admin}/LegacyWelcomePagePortTest.java (98%) diff --git a/src/main/java/network/crypta/node/runtime/LegacyRuntimePorts.java b/src/main/java/network/crypta/node/runtime/LegacyRuntimePorts.java index 0983810325..40a456e7cc 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyRuntimePorts.java +++ b/src/main/java/network/crypta/node/runtime/LegacyRuntimePorts.java @@ -4,6 +4,8 @@ import java.util.Random; import network.crypta.node.Node; import network.crypta.node.NodeClientCore; +import network.crypta.runtime.admin.AdminRuntimePortsBundle; +import network.crypta.runtime.admin.AdminRuntimePortsFactory; import network.crypta.runtime.spi.ConfigPort; import network.crypta.runtime.spi.ConnectionsPagePort; import network.crypta.runtime.spi.ConnectionsSupportPort; @@ -165,28 +167,30 @@ public long startupTimeMillis() { }; this.configPort = new LegacyConfigPort(node, core); this.connectivityPort = new LegacyConnectivityPort(node); - this.connectionsPagePort = new LegacyConnectionsPagePort(node, core); - this.connectionsSupportPort = new LegacyConnectionsSupportPort(node); - this.darknetConnectionsPort = new LegacyDarknetConnectionsPort(node); - this.darknetMessagingPort = new LegacyDarknetMessagingPort(node); - this.diagnosticPort = new LegacyDiagnosticPort(node, core); - this.pageChromePort = new LegacyPageChromePort(node); this.coreUpdateActionPort = new LegacyCoreUpdateActionPort(node); - this.queueCompletionPort = new LegacyQueueCompletionPort(core); - this.queuePagePort = new LegacyQueuePagePort(core); - this.queueDownloadPort = new LegacyQueueDownloadPort(core); - this.queueInsertPort = new LegacyQueueInsertPort(core); - this.queueMutationPort = new LegacyQueueMutationPort(core); - this.queueSupportPort = new LegacyQueueSupportPort(core); - this.statisticsPort = new LegacyStatisticsPort(node, core); this.securityLevelsPort = new LegacySecurityLevelsPort(node); - this.firstTimeWizardPort = new LegacyFirstTimeWizardPort(node, core); - this.toadletSymlinkPort = new LegacyToadletSymlinkPort(node, core); - this.welcomePagePort = new LegacyWelcomePagePort(node); - this.welcomeActionPort = new LegacyWelcomeActionPort(node); this.requestQueuePort = new LegacyRequestQueuePort(core); this.nodeInfoPort = new LegacyNodeInfoPort(node); this.peerPort = new LegacyPeerPort(node); + + AdminRuntimePortsBundle adminRuntimePorts = AdminRuntimePortsFactory.create(node, core); + this.connectionsPagePort = adminRuntimePorts.connectionsPage(); + this.connectionsSupportPort = adminRuntimePorts.connectionsSupport(); + this.darknetConnectionsPort = adminRuntimePorts.darknetConnections(); + this.darknetMessagingPort = adminRuntimePorts.darknetMessaging(); + this.diagnosticPort = adminRuntimePorts.diagnostic(); + this.pageChromePort = adminRuntimePorts.pageChrome(); + this.queueCompletionPort = adminRuntimePorts.queueCompletion(); + this.queuePagePort = adminRuntimePorts.queuePage(); + this.queueDownloadPort = adminRuntimePorts.queueDownload(); + this.queueInsertPort = adminRuntimePorts.queueInsert(); + this.queueMutationPort = adminRuntimePorts.queueMutation(); + this.queueSupportPort = adminRuntimePorts.queueSupport(); + this.statisticsPort = adminRuntimePorts.statistics(); + this.firstTimeWizardPort = adminRuntimePorts.firstTimeWizard(); + this.toadletSymlinkPort = adminRuntimePorts.toadletSymlinks(); + this.welcomePagePort = adminRuntimePorts.welcomePage(); + this.welcomeActionPort = adminRuntimePorts.welcomeAction(); } /** diff --git a/src/main/java/network/crypta/runtime/admin/AdminRuntimePortsBundle.java b/src/main/java/network/crypta/runtime/admin/AdminRuntimePortsBundle.java new file mode 100644 index 0000000000..92965e79af --- /dev/null +++ b/src/main/java/network/crypta/runtime/admin/AdminRuntimePortsBundle.java @@ -0,0 +1,73 @@ +package network.crypta.runtime.admin; + +import network.crypta.runtime.spi.ConnectionsPagePort; +import network.crypta.runtime.spi.ConnectionsSupportPort; +import network.crypta.runtime.spi.DarknetConnectionsPort; +import network.crypta.runtime.spi.DarknetMessagingPort; +import network.crypta.runtime.spi.DiagnosticPort; +import network.crypta.runtime.spi.FirstTimeWizardPort; +import network.crypta.runtime.spi.PageChromePort; +import network.crypta.runtime.spi.QueueCompletionPort; +import network.crypta.runtime.spi.QueueDownloadPort; +import network.crypta.runtime.spi.QueueInsertPort; +import network.crypta.runtime.spi.QueueMutationPort; +import network.crypta.runtime.spi.QueuePagePort; +import network.crypta.runtime.spi.QueueSupportPort; +import network.crypta.runtime.spi.StatisticsPort; +import network.crypta.runtime.spi.ToadletSymlinkPort; +import network.crypta.runtime.spi.WelcomeActionPort; +import network.crypta.runtime.spi.WelcomePagePort; + +/** + * Groups the admin and page-oriented runtime SPI adapters owned by this package. + * + *
This record is the package-local handoff between {@link AdminRuntimePortsFactory} and {@link + * network.crypta.node.runtime.LegacyRuntimePorts}. It lets the admin adapter cluster move together + * without forcing the node-runtime nucleus to know which concrete classes implement the various + * page, queue, and welcome flows. Callers typically create one bundle during runtime-port assembly + * and then keep the individual port references in longer-lived wiring objects. + * + *
The record is immutable, but the contained ports are still live adapters over the mutable + * daemon state. Holding a bundle does not snapshot node data, queue state, or welcome-page values. + * It only preserves a stable set of adapter instances, so the surrounding wiring can pass them + * around as one explicit ownership boundary. + * + * @param connectionsPage adapter that renders detached connections-page snapshots for admin pages + * @param connectionsSupport adapter that exposes installer and peer-offer helpers for connections + * UI + * @param darknetConnections adapter that resolves detached darknet friend actions against live + * peers + * @param darknetMessaging adapter that sends detached darknet messages and file offers on demand + * @param diagnostic adapter that exports detached diagnostic and report-oriented admin snapshots + * @param pageChrome adapter that exposes shared page-shell status for admin toadlets and page maker + * @param queueCompletion adapter that serves queue-completion exports and completion-oriented + * actions + * @param queuePage adapter that renders detached queue-page snapshots and key-list exports + * @param queueDownload adapter that performs queue download mutations through detached inputs + * @param queueInsert adapter that performs queue insert mutations through detached inputs + * @param queueMutation adapter that applies generic queue item mutation and removal operations + * @param queueSupport adapter that exposes queue availability, persistence state, and panic helpers + * @param statistics adapter that renders detached statistics-page snapshots for the admin UI + * @param firstTimeWizard adapter that exports and applies first-time-wizard detached state + * @param toadletSymlinks adapter that persists detached symlink configuration for admin toadlets + * @param welcomePage adapter that exports detached welcome-page read state and log excerpts + * @param welcomeAction adapter that applies detached welcome-page action and bandwidth submissions + */ +public record AdminRuntimePortsBundle( + ConnectionsPagePort connectionsPage, + ConnectionsSupportPort connectionsSupport, + DarknetConnectionsPort darknetConnections, + DarknetMessagingPort darknetMessaging, + DiagnosticPort diagnostic, + PageChromePort pageChrome, + QueueCompletionPort queueCompletion, + QueuePagePort queuePage, + QueueDownloadPort queueDownload, + QueueInsertPort queueInsert, + QueueMutationPort queueMutation, + QueueSupportPort queueSupport, + StatisticsPort statistics, + FirstTimeWizardPort firstTimeWizard, + ToadletSymlinkPort toadletSymlinks, + WelcomePagePort welcomePage, + WelcomeActionPort welcomeAction) {} diff --git a/src/main/java/network/crypta/runtime/admin/AdminRuntimePortsFactory.java b/src/main/java/network/crypta/runtime/admin/AdminRuntimePortsFactory.java new file mode 100644 index 0000000000..9361c8d792 --- /dev/null +++ b/src/main/java/network/crypta/runtime/admin/AdminRuntimePortsFactory.java @@ -0,0 +1,56 @@ +package network.crypta.runtime.admin; + +import network.crypta.node.Node; +import network.crypta.node.NodeClientCore; + +/** + * Creates the legacy admin and page-oriented runtime SPI adapters as one package-owned bundle. + * + *
This factory keeps the construction details for the transitional admin cluster inside {@code + * network.crypta.runtime.admin}. The surrounding node-runtime wiring only needs to know that there + * is one coherent group of page, queue, statistics, and welcome adapters that depend on the live + * daemon {@link Node} and {@link NodeClientCore}. That keeps the move mechanical in this PR while + * making the ownership boundary explicit for later extraction work. + * + *
The factory is intentionally small. It does not cache adapters, interpret the daemon state, or + * add policy on top of the existing constructors. Each call creates a fresh immutable {@link + * AdminRuntimePortsBundle} whose members preserve the legacy adapter behavior and lifecycle + * expectations. + */ +public final class AdminRuntimePortsFactory { + private AdminRuntimePortsFactory() {} + + /** + * Creates the admin/page runtime-port bundle backed by the current daemon node and client core. + * + *
Callers normally invoke this once while assembling {@link + * network.crypta.node.runtime.LegacyRuntimePorts}. The returned bundle contains the exact legacy + * adapter set that was moved out of {@code network.crypta.node.runtime}, with queue-oriented + * adapters bound to {@code core} and page or node-state adapters bound to {@code node}. The + * method performs no validation beyond the constructors it delegates to. + * + * @param node live daemon node used by node-backed admin adapters and page state lookups + * @param core live client core used by queue, wizard, and persistence-oriented adapters + * @return immutable bundle containing the moved admin and page-oriented runtime adapters + */ + public static AdminRuntimePortsBundle create(Node node, NodeClientCore core) { + return new AdminRuntimePortsBundle( + new LegacyConnectionsPagePort(node, core), + new LegacyConnectionsSupportPort(node), + new LegacyDarknetConnectionsPort(node), + new LegacyDarknetMessagingPort(node), + new LegacyDiagnosticPort(node, core), + new LegacyPageChromePort(node), + new LegacyQueueCompletionPort(core), + new LegacyQueuePagePort(core), + new LegacyQueueDownloadPort(core), + new LegacyQueueInsertPort(core), + new LegacyQueueMutationPort(core), + new LegacyQueueSupportPort(core), + new LegacyStatisticsPort(node, core), + new LegacyFirstTimeWizardPort(node, core), + new LegacyToadletSymlinkPort(node, core), + new LegacyWelcomePagePort(node), + new LegacyWelcomeActionPort(node)); + } +} diff --git a/src/main/java/network/crypta/node/runtime/LegacyConnectionsPagePort.java b/src/main/java/network/crypta/runtime/admin/LegacyConnectionsPagePort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyConnectionsPagePort.java rename to src/main/java/network/crypta/runtime/admin/LegacyConnectionsPagePort.java index 8e8cb0fd64..555bcdd3ae 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyConnectionsPagePort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyConnectionsPagePort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.text.DecimalFormat; import java.util.ArrayList; diff --git a/src/main/java/network/crypta/node/runtime/LegacyConnectionsSupportPort.java b/src/main/java/network/crypta/runtime/admin/LegacyConnectionsSupportPort.java similarity index 98% rename from src/main/java/network/crypta/node/runtime/LegacyConnectionsSupportPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyConnectionsSupportPort.java index 64006b9e2f..ea2fd3f244 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyConnectionsSupportPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyConnectionsSupportPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.io.IOException; diff --git a/src/main/java/network/crypta/node/runtime/LegacyDarknetConnectionsPort.java b/src/main/java/network/crypta/runtime/admin/LegacyDarknetConnectionsPort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyDarknetConnectionsPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyDarknetConnectionsPort.java index 54e9912be3..7f9c1d2849 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyDarknetConnectionsPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyDarknetConnectionsPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.ArrayList; import java.util.LinkedHashMap; diff --git a/src/main/java/network/crypta/node/runtime/LegacyDarknetMessagingPort.java b/src/main/java/network/crypta/runtime/admin/LegacyDarknetMessagingPort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyDarknetMessagingPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyDarknetMessagingPort.java index caa54bd177..d3945b9dcb 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyDarknetMessagingPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyDarknetMessagingPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.DataOutputStream; import java.io.File; diff --git a/src/main/java/network/crypta/node/runtime/LegacyDarknetPeerResolver.java b/src/main/java/network/crypta/runtime/admin/LegacyDarknetPeerResolver.java similarity index 98% rename from src/main/java/network/crypta/node/runtime/LegacyDarknetPeerResolver.java rename to src/main/java/network/crypta/runtime/admin/LegacyDarknetPeerResolver.java index 64400a7659..c41a53ad6b 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyDarknetPeerResolver.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyDarknetPeerResolver.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.Objects; import network.crypta.node.DarknetPeerNode; diff --git a/src/main/java/network/crypta/node/runtime/LegacyDiagnosticPort.java b/src/main/java/network/crypta/runtime/admin/LegacyDiagnosticPort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyDiagnosticPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyDiagnosticPort.java index b026d1b969..4effad6b61 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyDiagnosticPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyDiagnosticPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.text.DecimalFormat; diff --git a/src/main/java/network/crypta/node/runtime/LegacyFirstTimeWizardPort.java b/src/main/java/network/crypta/runtime/admin/LegacyFirstTimeWizardPort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyFirstTimeWizardPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyFirstTimeWizardPort.java index 29f81d0d33..8c31e07fdd 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyFirstTimeWizardPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyFirstTimeWizardPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.io.IOException; diff --git a/src/main/java/network/crypta/node/runtime/LegacyPageChromePort.java b/src/main/java/network/crypta/runtime/admin/LegacyPageChromePort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyPageChromePort.java rename to src/main/java/network/crypta/runtime/admin/LegacyPageChromePort.java index 60adb8cc29..8e758fea65 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyPageChromePort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyPageChromePort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.Objects; import network.crypta.node.DarknetPeerNode; diff --git a/src/main/java/network/crypta/node/runtime/LegacyQueueCompletionPort.java b/src/main/java/network/crypta/runtime/admin/LegacyQueueCompletionPort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyQueueCompletionPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyQueueCompletionPort.java index 4ae1dfaebd..eb7d00749c 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyQueueCompletionPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyQueueCompletionPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.BufferedInputStream; import java.io.BufferedReader; diff --git a/src/main/java/network/crypta/node/runtime/LegacyQueueDownloadPort.java b/src/main/java/network/crypta/runtime/admin/LegacyQueueDownloadPort.java similarity index 98% rename from src/main/java/network/crypta/node/runtime/LegacyQueueDownloadPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyQueueDownloadPort.java index df48722258..2ad67c8169 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyQueueDownloadPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyQueueDownloadPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.IOException; import java.util.Objects; diff --git a/src/main/java/network/crypta/node/runtime/LegacyQueueInsertPort.java b/src/main/java/network/crypta/runtime/admin/LegacyQueueInsertPort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyQueueInsertPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyQueueInsertPort.java index 22799d658f..6c9aa1f28b 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyQueueInsertPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyQueueInsertPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.FileNotFoundException; import java.io.IOException; diff --git a/src/main/java/network/crypta/node/runtime/LegacyQueueMutationPort.java b/src/main/java/network/crypta/runtime/admin/LegacyQueueMutationPort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyQueueMutationPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyQueueMutationPort.java index 122d69cf22..f400dd6ca8 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyQueueMutationPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyQueueMutationPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.List; import java.util.Objects; diff --git a/src/main/java/network/crypta/node/runtime/LegacyQueuePagePort.java b/src/main/java/network/crypta/runtime/admin/LegacyQueuePagePort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyQueuePagePort.java rename to src/main/java/network/crypta/runtime/admin/LegacyQueuePagePort.java index acc2a891a5..525bcde544 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyQueuePagePort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyQueuePagePort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.time.Instant; diff --git a/src/main/java/network/crypta/node/runtime/LegacyQueueSupportPort.java b/src/main/java/network/crypta/runtime/admin/LegacyQueueSupportPort.java similarity index 98% rename from src/main/java/network/crypta/node/runtime/LegacyQueueSupportPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyQueueSupportPort.java index 8ef4a05a34..20aadd367f 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyQueueSupportPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyQueueSupportPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.IOException; import java.util.Objects; diff --git a/src/main/java/network/crypta/node/runtime/LegacyStatisticsPort.java b/src/main/java/network/crypta/runtime/admin/LegacyStatisticsPort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyStatisticsPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyStatisticsPort.java index 47130b49f8..2b494a85e0 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyStatisticsPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyStatisticsPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; diff --git a/src/main/java/network/crypta/node/runtime/LegacyToadletSymlinkPort.java b/src/main/java/network/crypta/runtime/admin/LegacyToadletSymlinkPort.java similarity index 99% rename from src/main/java/network/crypta/node/runtime/LegacyToadletSymlinkPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyToadletSymlinkPort.java index 2305569814..c5d0fafbd3 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyToadletSymlinkPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyToadletSymlinkPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/network/crypta/node/runtime/LegacyWelcomeActionPort.java b/src/main/java/network/crypta/runtime/admin/LegacyWelcomeActionPort.java similarity index 98% rename from src/main/java/network/crypta/node/runtime/LegacyWelcomeActionPort.java rename to src/main/java/network/crypta/runtime/admin/LegacyWelcomeActionPort.java index a41634d080..da2a755fb3 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyWelcomeActionPort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyWelcomeActionPort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.Objects; import network.crypta.config.InvalidConfigValueException; @@ -25,7 +25,7 @@ * present, writes the same config keys, and swallows restart-required exceptions exactly as the * legacy welcome toadlet did. The class is package-private because it is an implementation detail * behind {@link WelcomeActionPort}; callers should depend on the SPI surface exposed through {@link - * LegacyRuntimePorts} instead of constructing this adapter directly. + * network.crypta.node.runtime.LegacyRuntimePorts} instead of constructing this adapter directly. */ final class LegacyWelcomeActionPort implements WelcomeActionPort { /** Small delay that lets the HTTP layer finish its redirect before shutdown or restart begins. */ diff --git a/src/main/java/network/crypta/node/runtime/LegacyWelcomePagePort.java b/src/main/java/network/crypta/runtime/admin/LegacyWelcomePagePort.java similarity index 98% rename from src/main/java/network/crypta/node/runtime/LegacyWelcomePagePort.java rename to src/main/java/network/crypta/runtime/admin/LegacyWelcomePagePort.java index fc52636e99..608959c2d7 100644 --- a/src/main/java/network/crypta/node/runtime/LegacyWelcomePagePort.java +++ b/src/main/java/network/crypta/runtime/admin/LegacyWelcomePagePort.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.io.IOException; diff --git a/src/main/java/network/crypta/runtime/admin/package-info.java b/src/main/java/network/crypta/runtime/admin/package-info.java new file mode 100644 index 0000000000..d11f3d8fcf --- /dev/null +++ b/src/main/java/network/crypta/runtime/admin/package-info.java @@ -0,0 +1,15 @@ +/** + * Legacy admin and page-oriented runtime SPI adapters. + * + *
This package intentionally groups the transitional runtime adapters that back the legacy admin + * pages, queue views, statistics reports, and welcome or first-time-wizard flows. The adapters + * still depend on daemon-local services such as {@code Node}, {@code NodeClientCore}, HTTP helper + * classes, and queue/reporting internals, but they present the detached {@code runtime-spi} + * interfaces expected by higher-level wiring. + * + *
Keeping these classes here makes the ownership boundary explicit. The narrower {@code + * network.crypta.node.runtime} package can keep the core runtime nucleus, while this package + * carries the page-oriented compatibility layer that may later be extracted or reshaped as a more + * focused adapter cluster. + */ +package network.crypta.runtime.admin; diff --git a/src/test/java/network/crypta/node/runtime/LegacyRuntimePortsTest.java b/src/test/java/network/crypta/node/runtime/LegacyRuntimePortsTest.java index 75ed0314a9..d4545f030a 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyRuntimePortsTest.java +++ b/src/test/java/network/crypta/node/runtime/LegacyRuntimePortsTest.java @@ -111,27 +111,76 @@ void getters_whenRequested_expectLegacyAdapterTypes() { assertAll( () -> assertInstanceOf(LegacyConfigPort.class, snapshot.configPort()), () -> assertInstanceOf(LegacyConnectivityPort.class, snapshot.connectivityPort()), - () -> assertInstanceOf(LegacyConnectionsPagePort.class, snapshot.connectionsPagePort()), () -> - assertInstanceOf(LegacyConnectionsSupportPort.class, snapshot.connectionsSupportPort()), + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyConnectionsPagePort"), + snapshot.connectionsPagePort()), () -> - assertInstanceOf(LegacyDarknetConnectionsPort.class, snapshot.darknetConnectionsPort()), - () -> assertInstanceOf(LegacyDarknetMessagingPort.class, snapshot.darknetMessagingPort()), - () -> assertInstanceOf(LegacyDiagnosticPort.class, snapshot.diagnosticPort()), - () -> assertInstanceOf(LegacyPageChromePort.class, snapshot.pageChromePort()), + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyConnectionsSupportPort"), + snapshot.connectionsSupportPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyDarknetConnectionsPort"), + snapshot.darknetConnectionsPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyDarknetMessagingPort"), + snapshot.darknetMessagingPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyDiagnosticPort"), + snapshot.diagnosticPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyPageChromePort"), + snapshot.pageChromePort()), () -> assertInstanceOf(LegacyCoreUpdateActionPort.class, snapshot.coreUpdateActionPort()), - () -> assertInstanceOf(LegacyQueueSupportPort.class, snapshot.queueSupportPort()), - () -> assertInstanceOf(LegacyQueueCompletionPort.class, snapshot.queueCompletionPort()), - () -> assertInstanceOf(LegacyQueuePagePort.class, snapshot.queuePagePort()), - () -> assertInstanceOf(LegacyQueueDownloadPort.class, snapshot.queueDownloadPort()), - () -> assertInstanceOf(LegacyQueueInsertPort.class, snapshot.queueInsertPort()), - () -> assertInstanceOf(LegacyQueueMutationPort.class, snapshot.queueMutationPort()), - () -> assertInstanceOf(LegacyStatisticsPort.class, snapshot.statisticsPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyQueueSupportPort"), + snapshot.queueSupportPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyQueueCompletionPort"), + snapshot.queueCompletionPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyQueuePagePort"), + snapshot.queuePagePort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyQueueDownloadPort"), + snapshot.queueDownloadPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyQueueInsertPort"), + snapshot.queueInsertPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyQueueMutationPort"), + snapshot.queueMutationPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyStatisticsPort"), + snapshot.statisticsPort()), () -> assertInstanceOf(LegacySecurityLevelsPort.class, snapshot.securityLevelsPort()), - () -> assertInstanceOf(LegacyFirstTimeWizardPort.class, snapshot.firstTimeWizardPort()), - () -> assertInstanceOf(LegacyToadletSymlinkPort.class, snapshot.toadletSymlinkPort()), - () -> assertInstanceOf(LegacyWelcomePagePort.class, snapshot.welcomePagePort()), - () -> assertInstanceOf(LegacyWelcomeActionPort.class, snapshot.welcomeActionPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyFirstTimeWizardPort"), + snapshot.firstTimeWizardPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyToadletSymlinkPort"), + snapshot.toadletSymlinkPort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyWelcomePagePort"), + snapshot.welcomePagePort()), + () -> + assertInstanceOf( + loadClass("network.crypta.runtime.admin.LegacyWelcomeActionPort"), + snapshot.welcomeActionPort()), () -> assertInstanceOf(LegacyRequestQueuePort.class, snapshot.requestQueuePort()), () -> assertInstanceOf(LegacyNodeInfoPort.class, snapshot.nodeInfoPort()), () -> assertInstanceOf(LegacyPeerPort.class, snapshot.peerPort())); @@ -221,6 +270,14 @@ private PortsSnapshot capturePorts() { ports.peer()); } + private static Class> loadClass(String className) { + try { + return Class.forName(className); + } catch (ClassNotFoundException exception) { + throw new AssertionError(exception); + } + } + private record PortsSnapshot( Object executionPort, Object randomnessPort, diff --git a/src/test/java/network/crypta/node/runtime/LegacyConnectionsPagePortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyConnectionsPagePortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyConnectionsPagePortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyConnectionsPagePortTest.java index cd01030b52..2a0f75ca73 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyConnectionsPagePortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyConnectionsPagePortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.lang.reflect.Field; diff --git a/src/test/java/network/crypta/node/runtime/LegacyConnectionsSupportPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyConnectionsSupportPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyConnectionsSupportPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyConnectionsSupportPortTest.java index cc80a2ba5f..dca0f86ed3 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyConnectionsSupportPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyConnectionsSupportPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.nio.charset.StandardCharsets; diff --git a/src/test/java/network/crypta/node/runtime/LegacyDarknetConnectionsPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyDarknetConnectionsPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyDarknetConnectionsPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyDarknetConnectionsPortTest.java index 270ce1a1e2..1b42594e6f 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyDarknetConnectionsPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyDarknetConnectionsPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.List; import java.util.Map; diff --git a/src/test/java/network/crypta/node/runtime/LegacyDarknetMessagingPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyDarknetMessagingPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyDarknetMessagingPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyDarknetMessagingPortTest.java index d07ccb1449..58a59549de 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyDarknetMessagingPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyDarknetMessagingPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.ByteArrayInputStream; import java.io.File; diff --git a/src/test/java/network/crypta/node/runtime/LegacyDarknetPeerResolverTest.java b/src/test/java/network/crypta/runtime/admin/LegacyDarknetPeerResolverTest.java similarity index 98% rename from src/test/java/network/crypta/node/runtime/LegacyDarknetPeerResolverTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyDarknetPeerResolverTest.java index 0ea480f1f2..663d469df5 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyDarknetPeerResolverTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyDarknetPeerResolverTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import network.crypta.node.DarknetPeerNode; import network.crypta.node.Node; diff --git a/src/test/java/network/crypta/node/runtime/LegacyDiagnosticPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyDiagnosticPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyDiagnosticPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyDiagnosticPortTest.java index 01f93d7b3d..b1c2bacc75 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyDiagnosticPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyDiagnosticPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.List; import java.util.Map; diff --git a/src/test/java/network/crypta/node/runtime/LegacyFirstTimeWizardPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyFirstTimeWizardPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyFirstTimeWizardPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyFirstTimeWizardPortTest.java index 83deedeefd..1aa5802db4 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyFirstTimeWizardPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyFirstTimeWizardPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.util.Locale; diff --git a/src/test/java/network/crypta/node/runtime/LegacyPageChromePortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyPageChromePortTest.java similarity index 98% rename from src/test/java/network/crypta/node/runtime/LegacyPageChromePortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyPageChromePortTest.java index c0743e4877..0d58c7ac02 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyPageChromePortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyPageChromePortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import network.crypta.node.DarknetPeerNode; import network.crypta.node.Node; diff --git a/src/test/java/network/crypta/node/runtime/LegacyQueueCompletionPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyQueueCompletionPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyQueueCompletionPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyQueueCompletionPortTest.java index 7d1399439a..8329c9b060 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyQueueCompletionPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyQueueCompletionPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.net.MalformedURLException; diff --git a/src/test/java/network/crypta/node/runtime/LegacyQueueDownloadPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyQueueDownloadPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyQueueDownloadPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyQueueDownloadPortTest.java index fcb0df3079..6064c25138 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyQueueDownloadPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyQueueDownloadPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import network.crypta.client.async.PersistenceDisabledException; diff --git a/src/test/java/network/crypta/node/runtime/LegacyQueueInsertPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyQueueInsertPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyQueueInsertPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyQueueInsertPortTest.java index 02f632b596..abb09f81bd 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyQueueInsertPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyQueueInsertPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/src/test/java/network/crypta/node/runtime/LegacyQueueMutationPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyQueueMutationPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyQueueMutationPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyQueueMutationPortTest.java index 395f8aa042..7a6b229d46 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyQueueMutationPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyQueueMutationPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.List; import network.crypta.client.async.PersistenceDisabledException; diff --git a/src/test/java/network/crypta/node/runtime/LegacyQueuePagePortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyQueuePagePortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyQueuePagePortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyQueuePagePortTest.java index 584a785c32..159f201b68 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyQueuePagePortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyQueuePagePortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.lang.reflect.Field; diff --git a/src/test/java/network/crypta/node/runtime/LegacyQueueSupportPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyQueueSupportPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyQueueSupportPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyQueueSupportPortTest.java index 3a8639b680..7792209365 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyQueueSupportPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyQueueSupportPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.io.File; import java.nio.file.Path; diff --git a/src/test/java/network/crypta/node/runtime/LegacyStatisticsPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyStatisticsPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyStatisticsPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyStatisticsPortTest.java index 41242301b5..94060d38bc 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyStatisticsPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyStatisticsPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.lang.reflect.Field; import java.util.Map; diff --git a/src/test/java/network/crypta/node/runtime/LegacyToadletSymlinkPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyToadletSymlinkPortTest.java similarity index 98% rename from src/test/java/network/crypta/node/runtime/LegacyToadletSymlinkPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyToadletSymlinkPortTest.java index ac2c90af59..5937befeca 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyToadletSymlinkPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyToadletSymlinkPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.util.List; import network.crypta.config.Option; diff --git a/src/test/java/network/crypta/node/runtime/LegacyWelcomeActionPortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyWelcomeActionPortTest.java similarity index 99% rename from src/test/java/network/crypta/node/runtime/LegacyWelcomeActionPortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyWelcomeActionPortTest.java index defdf25808..007fb2bc7b 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyWelcomeActionPortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyWelcomeActionPortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import network.crypta.config.NodeNeedRestartException; import network.crypta.config.PersistentConfig; diff --git a/src/test/java/network/crypta/node/runtime/LegacyWelcomePagePortTest.java b/src/test/java/network/crypta/runtime/admin/LegacyWelcomePagePortTest.java similarity index 98% rename from src/test/java/network/crypta/node/runtime/LegacyWelcomePagePortTest.java rename to src/test/java/network/crypta/runtime/admin/LegacyWelcomePagePortTest.java index 05c9514d51..ee875fbd5f 100644 --- a/src/test/java/network/crypta/node/runtime/LegacyWelcomePagePortTest.java +++ b/src/test/java/network/crypta/runtime/admin/LegacyWelcomePagePortTest.java @@ -1,4 +1,4 @@ -package network.crypta.node.runtime; +package network.crypta.runtime.admin; import java.nio.charset.StandardCharsets; import java.nio.file.Files; From b318af96a1d55f82c2959e7a9a3da82df99c1843 Mon Sep 17 00:00:00 2001 From: Leumor <116955025+leumor@users.noreply.github.com> Date: Tue, 24 Mar 2026 20:06:20 +0000 Subject: [PATCH 2/2] test(useralerts): restore NodeL10n state Preserve the original NodeL10n base around UserAlertManagerTest's test translation setup so the suite does not leak a test-only bundle into later runtime/admin tests. This makes the full Gradle test run order-independent again. --- .../node/useralerts/UserAlertManagerTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/test/java/network/crypta/node/useralerts/UserAlertManagerTest.java b/src/test/java/network/crypta/node/useralerts/UserAlertManagerTest.java index 9daa8bfb79..094195ffd3 100644 --- a/src/test/java/network/crypta/node/useralerts/UserAlertManagerTest.java +++ b/src/test/java/network/crypta/node/useralerts/UserAlertManagerTest.java @@ -1,6 +1,7 @@ package network.crypta.node.useralerts; import java.io.StringReader; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -13,11 +14,14 @@ import network.crypta.client.async.ClientContext; import network.crypta.clients.fcp.FCPConnectionHandler; import network.crypta.clients.fcp.FCPMessage; +import network.crypta.l10n.BaseL10n; import network.crypta.l10n.L10nTestUtils; +import network.crypta.l10n.NodeL10n; import network.crypta.node.Node; import network.crypta.node.NodeClientCore; import network.crypta.support.HTMLNode; import network.crypta.support.PriorityAwareExecutor; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -57,9 +61,11 @@ class UserAlertManagerTest { @Mock private PriorityAwareExecutor executor; private UserAlertManager userAlertManager; + private BaseL10n originalBase; @BeforeEach void setUp() { + originalBase = NodeL10n.getBase(); L10nTestUtils.useTestTranslation(); lenient().when(nodeClientCore.getNode()).thenReturn(node); lenient().when(node.network().darknetPubKeyHash()).thenReturn(new byte[] {1, 2, 3, 4}); @@ -87,6 +93,11 @@ void setUp() { userAlertManager = new UserAlertManager(nodeClientCore); } + @AfterEach + void tearDown() throws ReflectiveOperationException { + installBase(originalBase); + } + @Test void getAtom_whenGenerated_expectFeedMetadataPresent() throws Exception { // Arrange @@ -875,6 +886,12 @@ public Type getEventType() { } } + private static void installBase(BaseL10n base) throws ReflectiveOperationException { + Method setBase = NodeL10n.class.getDeclaredMethod("setBase", BaseL10n.class); + setBase.setAccessible(true); + setBase.invoke(null, base); + } + private record EntrySnapshot( String id, String link, String updated, String title, String summary, String content) {} }