diff --git a/core/src/main/java/bisq/core/btc/nodes/BtcNodesSetupPreferences.java b/core/src/main/java/bisq/core/btc/nodes/BtcNodesSetupPreferences.java index 7bc9050fc9..d8d648578c 100644 --- a/core/src/main/java/bisq/core/btc/nodes/BtcNodesSetupPreferences.java +++ b/core/src/main/java/bisq/core/btc/nodes/BtcNodesSetupPreferences.java @@ -20,24 +20,16 @@ package bisq.core.btc.nodes; import bisq.core.btc.nodes.BtcNodes.BtcNode; import bisq.core.user.Preferences; -import bisq.network.p2p.NodeAddress; - import bisq.common.config.Config; import bisq.common.util.Utilities; import java.util.Collections; -import java.util.HashSet; import java.util.List; -import java.util.Objects; import java.util.Set; -import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.jetbrains.annotations.Nullable; - - public class BtcNodesSetupPreferences { private static final Logger log = LoggerFactory.getLogger(BtcNodesSetupPreferences.class); @@ -74,24 +66,7 @@ public class BtcNodesSetupPreferences { break; case PROVIDED: default: - Set providedBtcNodes = new HashSet<>(btcNodes.getProvidedBtcNodes()); - Set filterProvidedBtcNodes = config.filterProvidedBtcNodes.stream() - .filter(n -> !n.isEmpty()) - .map(this::getNodeAddress) - .filter(Objects::nonNull) - .map(nodeAddress -> new BtcNode(null, nodeAddress.getHostName(), null, nodeAddress.getPort(), "Provided by filter")) - .collect(Collectors.toSet()); - providedBtcNodes.addAll(filterProvidedBtcNodes); - - Set bannedBtcNodeHostNames = config.bannedBtcNodes.stream() - .filter(n -> !n.isEmpty()) - .map(this::getNodeAddress) - .filter(Objects::nonNull) - .map(NodeAddress::getHostName) - .collect(Collectors.toSet()); - result = providedBtcNodes.stream() - .filter(e -> !bannedBtcNodeHostNames.contains(e.getHostName())) - .collect(Collectors.toList()); + result = FederatedBtcNodeProvider.getNodes(btcNodes, config); break; } @@ -125,14 +100,4 @@ public class BtcNodesSetupPreferences { } return result; } - - @Nullable - private NodeAddress getNodeAddress(String address) { - try { - return new NodeAddress(address); - } catch (Throwable t) { - log.error("exception when filtering banned seednodes", t); - } - return null; - } } diff --git a/core/src/main/java/bisq/core/btc/nodes/FederatedBtcNodeProvider.java b/core/src/main/java/bisq/core/btc/nodes/FederatedBtcNodeProvider.java new file mode 100644 index 0000000000..2a53760eb6 --- /dev/null +++ b/core/src/main/java/bisq/core/btc/nodes/FederatedBtcNodeProvider.java @@ -0,0 +1,50 @@ +package bisq.core.btc.nodes; + +import bisq.network.p2p.NodeAddress; + +import bisq.common.config.Config; + +import java.util.HashSet; +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; + +import lombok.extern.slf4j.Slf4j; + +import org.jetbrains.annotations.Nullable; + +@Slf4j +public class FederatedBtcNodeProvider { + + static List getNodes(BtcNodes btcNodes, Config config) { + Set providedBtcNodes = new HashSet<>(btcNodes.getProvidedBtcNodes()); + Set filterProvidedBtcNodes = config.filterProvidedBtcNodes.stream() + .filter(n -> !n.isEmpty()) + .map(FederatedBtcNodeProvider::getNodeAddress) + .filter(Objects::nonNull) + .map(nodeAddress -> new BtcNodes.BtcNode(null, nodeAddress.getHostName(), null, nodeAddress.getPort(), "Provided by filter")) + .collect(Collectors.toSet()); + providedBtcNodes.addAll(filterProvidedBtcNodes); + + Set bannedBtcNodeHostNames = config.bannedBtcNodes.stream() + .filter(n -> !n.isEmpty()) + .map(FederatedBtcNodeProvider::getNodeAddress) + .filter(Objects::nonNull) + .map(NodeAddress::getHostName) + .collect(Collectors.toSet()); + return providedBtcNodes.stream() + .filter(e -> !bannedBtcNodeHostNames.contains(e.getHostName())) + .collect(Collectors.toList()); + } + + @Nullable + private static NodeAddress getNodeAddress(String address) { + try { + return new NodeAddress(address); + } catch (Throwable t) { + log.error("exception when filtering banned seednodes", t); + } + return null; + } +}