Skip to content

Commit 107e8c5

Browse files
authored
chore: minor changes in AddressBook to support planned move (#18933)
Signed-off-by: Michael Heinrichs <[email protected]>
1 parent 46f3f14 commit 107e8c5

File tree

5 files changed

+44
-61
lines changed

5 files changed

+44
-61
lines changed

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/state/address/AddressBookInitializer.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static com.swirlds.logging.legacy.LogMarker.STARTUP;
66
import static com.swirlds.platform.roster.RosterRetriever.retrieveActive;
77
import static com.swirlds.platform.roster.RosterUtils.buildAddressBook;
8+
import static com.swirlds.platform.system.address.AddressBookUtils.addressBookConfigText;
89

910
import com.swirlds.common.context.PlatformContext;
1011
import com.swirlds.platform.config.AddressBookConfig;
@@ -299,25 +300,25 @@ private synchronized void recordAddressBooks(@NonNull final AddressBook usedAddr
299300
.toFile();
300301
try (final FileWriter out = new FileWriter(debugFile)) {
301302
out.write(CONFIG_ADDRESS_BOOK_HEADER + "\n");
302-
out.write(configAddressBook.toConfigText() + "\n\n");
303+
out.write(addressBookConfigText(configAddressBook) + "\n\n");
303304
out.write(STATE_ADDRESS_BOOK_HEADER + "\n");
304305
final String text =
305-
stateAddressBook == null ? STATE_ADDRESS_BOOK_NULL : stateAddressBook.toConfigText();
306+
stateAddressBook == null ? STATE_ADDRESS_BOOK_NULL : addressBookConfigText(stateAddressBook);
306307
out.write(text + "\n\n");
307308
out.write(USED_ADDRESS_BOOK_HEADER + "\n");
308309
if (usedAddressBook == configAddressBook) {
309310
out.write(CONFIG_ADDRESS_BOOK_USED);
310311
} else if (usedAddressBook == stateAddressBook) {
311312
out.write(STATE_ADDRESS_BOOK_USED);
312313
} else {
313-
out.write(usedAddressBook.toConfigText());
314+
out.write(addressBookConfigText(usedAddressBook));
314315
}
315316
out.write("\n\n");
316317
}
317318
final File usedFile = Path.of(this.pathToAddressBookDirectory.toString(), addressBookFileName)
318319
.toFile();
319320
try (final FileWriter out = new FileWriter(usedFile)) {
320-
out.write(usedAddressBook.toConfigText());
321+
out.write(addressBookConfigText(usedAddressBook));
321322
}
322323
} catch (final IOException e) {
323324
logger.error(EXCEPTION.getMarker(), "Not able to write address book to file. ", e);

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/system/address/AddressBook.java

+31-11
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
package com.swirlds.platform.system.address;
33

44
import com.swirlds.base.state.MutabilityException;
5-
import com.swirlds.platform.system.address.internal.AddressBookIterator;
65
import edu.umd.cs.findbugs.annotations.NonNull;
76
import edu.umd.cs.findbugs.annotations.Nullable;
87
import java.io.IOException;
@@ -582,16 +581,6 @@ public Set<NodeId> getNodeIdSet() {
582581
return new HashSet<>(addresses.keySet());
583582
}
584583

585-
/**
586-
* The text form of an address book that appears in config.txt
587-
*
588-
* @return the string form of the AddressBook that would appear in config.txt
589-
*/
590-
@NonNull
591-
public String toConfigText() {
592-
return AddressBookUtils.addressBookConfigText(this);
593-
}
594-
595584
/**
596585
* {@inheritDoc}
597586
*/
@@ -649,4 +638,35 @@ public String toString() {
649638

650639
return sb.toString();
651640
}
641+
642+
/**
643+
* An iterator that walks over entries in an address book.
644+
*/
645+
public static class AddressBookIterator implements Iterator<Address> {
646+
647+
private final Iterator<NodeId> orderedNodeIds;
648+
private final Map<NodeId, Address> addresses;
649+
650+
public AddressBookIterator(
651+
@NonNull final Iterator<NodeId> orderedNodeIds, @NonNull final Map<NodeId, Address> addresses) {
652+
this.orderedNodeIds = Objects.requireNonNull(orderedNodeIds, "the orderedNodeIds cannot be null");
653+
this.addresses = Objects.requireNonNull(addresses, "the addresses cannot be null");
654+
}
655+
656+
/**
657+
* {@inheritDoc}
658+
*/
659+
@Override
660+
public boolean hasNext() {
661+
return orderedNodeIds.hasNext();
662+
}
663+
664+
/**
665+
* {@inheritDoc}
666+
*/
667+
@Override
668+
public Address next() {
669+
return Objects.requireNonNull(addresses.get(orderedNodeIds.next()));
670+
}
671+
}
652672
}

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/system/address/internal/AddressBookIterator.java

-40
This file was deleted.

platform-sdk/swirlds-platform-core/src/test/java/com/swirlds/platform/AddressBookInitializerTest.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static com.swirlds.platform.state.address.AddressBookInitializer.STATE_ADDRESS_BOOK_NULL;
99
import static com.swirlds.platform.state.address.AddressBookInitializer.STATE_ADDRESS_BOOK_USED;
1010
import static com.swirlds.platform.state.address.AddressBookInitializer.USED_ADDRESS_BOOK_HEADER;
11+
import static com.swirlds.platform.system.address.AddressBookUtils.addressBookConfigText;
1112
import static com.swirlds.platform.test.fixtures.state.TestPlatformStateFacade.TEST_PLATFORM_STATE_FACADE;
1213
import static org.junit.jupiter.api.Assertions.assertEquals;
1314
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -533,21 +534,21 @@ private void assertAddressBookFileContent(
533534
final String usedFileContent = Files.readString(usedFile.toPath());
534535

535536
// check used AddressBook content
536-
final String usedAddressBookText = usedAddressBook.toConfigText();
537+
final String usedAddressBookText = addressBookConfigText(usedAddressBook);
537538
assertEquals(
538539
usedAddressBookText,
539540
usedFileContent,
540541
"The used file content is not the same as the used address book.");
541542

542543
// check debug AddressBook content
543-
final String configText = CONFIG_ADDRESS_BOOK_HEADER + "\n" + configAddressBook.toConfigText();
544+
final String configText = CONFIG_ADDRESS_BOOK_HEADER + "\n" + addressBookConfigText(configAddressBook);
544545
assertTrue(
545546
debugFileContent.contains(configText),
546547
"The configAddressBook content is not:\n" + configText + "\n\n debugFileContent:\n" + debugFileContent);
547548

548549
// check stateAddressBook content
549550
final String stateAddressBookText =
550-
(stateAddressBook == null ? STATE_ADDRESS_BOOK_NULL : stateAddressBook.toConfigText());
551+
(stateAddressBook == null ? STATE_ADDRESS_BOOK_NULL : addressBookConfigText(stateAddressBook));
551552
final String stateText = STATE_ADDRESS_BOOK_HEADER + "\n" + stateAddressBookText;
552553

553554
assertTrue(
@@ -561,7 +562,7 @@ private void assertAddressBookFileContent(
561562
} else if (Objects.equals(usedAddressBook, stateAddressBook)) {
562563
usedText += STATE_ADDRESS_BOOK_USED;
563564
} else {
564-
usedText += usedAddressBook.toConfigText();
565+
usedText += addressBookConfigText(usedAddressBook);
565566
}
566567
assertTrue(
567568
debugFileContent.contains(usedText),

platform-sdk/swirlds-platform-core/src/test/java/com/swirlds/platform/system/address/AddressBookTests.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// SPDX-License-Identifier: Apache-2.0
22
package com.swirlds.platform.system.address;
33

4+
import static com.swirlds.platform.system.address.AddressBookUtils.addressBookConfigText;
45
import static com.swirlds.platform.system.address.AddressBookUtils.parseAddressBookText;
56
import static org.hiero.base.utility.test.fixtures.RandomUtils.getRandomPrintSeed;
67
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -396,10 +397,10 @@ void roundTripSerializeAndDeserializeCompatibleWithConfigTxt() throws ParseExcep
396397
final NodeId secondNode = addressBook.getNodeId(1);
397398
addressBook.add(addressBook.getAddress(secondNode).copySetMemo("has a memo"));
398399

399-
final String addressBookText = addressBook.toConfigText();
400+
final String addressBookText = addressBookConfigText(addressBook);
400401
final AddressBook parsedAddressBook = parseAddressBookText(addressBookText);
401402
// Equality done on toConfigText() strings since the randomly generated address book has public key data.
402-
assertEquals(addressBookText, parsedAddressBook.toConfigText(), "The AddressBooks are not equal.");
403+
assertEquals(addressBookText, addressBookConfigText(parsedAddressBook), "The AddressBooks are not equal.");
403404
assertTrue(parsedAddressBook.getAddress(firstNode).getMemo().isEmpty(), "memo is empty");
404405
assertEquals(parsedAddressBook.getAddress(secondNode).getMemo(), "has a memo", "memo matches");
405406

0 commit comments

Comments
 (0)