diff --git a/rskj-core/src/main/java/co/rsk/peg/Bridge.java b/rskj-core/src/main/java/co/rsk/peg/Bridge.java index 852615eefb..0343a03768 100644 --- a/rskj-core/src/main/java/co/rsk/peg/Bridge.java +++ b/rskj-core/src/main/java/co/rsk/peg/Bridge.java @@ -1037,14 +1037,14 @@ public String getLockWhitelistAddress(Object[] args) { logger.trace("getLockWhitelistAddress"); int index = ((BigInteger) args[0]).intValue(); - LockWhitelistEntry entry = bridgeSupport.getLockWhitelistEntryByIndex(index); + Optional entry = bridgeSupport.getLockWhitelistEntryByIndex(index); - if (entry == null) { + if (entry.isEmpty()) { // Empty string is returned when address is not found return ""; } - return entry.address().toBase58(); + return entry.get().address().toBase58(); } public long getLockWhitelistEntryByAddress(Object[] args) { diff --git a/rskj-core/src/main/java/co/rsk/peg/BridgeSupport.java b/rskj-core/src/main/java/co/rsk/peg/BridgeSupport.java index 33b16264ec..62b75831b6 100644 --- a/rskj-core/src/main/java/co/rsk/peg/BridgeSupport.java +++ b/rskj-core/src/main/java/co/rsk/peg/BridgeSupport.java @@ -2121,7 +2121,7 @@ public Integer getLockWhitelistSize() { return whitelistSupport.getLockWhitelistSize(); } - public LockWhitelistEntry getLockWhitelistEntryByIndex(int index) { + public Optional getLockWhitelistEntryByIndex(int index) { return whitelistSupport.getLockWhitelistEntryByIndex(index); } diff --git a/rskj-core/src/main/java/co/rsk/peg/whitelist/WhitelistSupport.java b/rskj-core/src/main/java/co/rsk/peg/whitelist/WhitelistSupport.java index 762d1a7cc1..c388dfd9ee 100644 --- a/rskj-core/src/main/java/co/rsk/peg/whitelist/WhitelistSupport.java +++ b/rskj-core/src/main/java/co/rsk/peg/whitelist/WhitelistSupport.java @@ -28,7 +28,7 @@ public interface WhitelistSupport { * @return the whitelist entry stored at the given index, or null if index is out of * bounds */ - LockWhitelistEntry getLockWhitelistEntryByIndex(int index); + Optional getLockWhitelistEntryByIndex(int index); /** * Returns the lock whitelist entry for a given address, or null if the address is not whitelisted diff --git a/rskj-core/src/main/java/co/rsk/peg/whitelist/WhitelistSupportImpl.java b/rskj-core/src/main/java/co/rsk/peg/whitelist/WhitelistSupportImpl.java index bdae7d85b5..7c5864ec99 100644 --- a/rskj-core/src/main/java/co/rsk/peg/whitelist/WhitelistSupportImpl.java +++ b/rskj-core/src/main/java/co/rsk/peg/whitelist/WhitelistSupportImpl.java @@ -45,16 +45,16 @@ public int getLockWhitelistSize() { } @Override - public LockWhitelistEntry getLockWhitelistEntryByIndex(int index) { + public Optional getLockWhitelistEntryByIndex(int index) { List entries = storageProvider.getLockWhitelist( activations, networkParameters ).getAll(); if (index < 0 || index >= entries.size()) { - return null; + return Optional.empty(); } - return entries.get(index); + return Optional.ofNullable(entries.get(index)); } @Override diff --git a/rskj-core/src/test/java/co/rsk/peg/BridgeSupportTest.java b/rskj-core/src/test/java/co/rsk/peg/BridgeSupportTest.java index a276720305..5ed38a544e 100644 --- a/rskj-core/src/test/java/co/rsk/peg/BridgeSupportTest.java +++ b/rskj-core/src/test/java/co/rsk/peg/BridgeSupportTest.java @@ -203,9 +203,11 @@ void getLockWhitelistSize() { @Test void getLockWhitelistEntryByIndex() { LockWhitelistEntry entry = mock(LockWhitelistEntry.class); - when(whitelistSupport.getLockWhitelistEntryByIndex(0)).thenReturn(entry); + when(whitelistSupport.getLockWhitelistEntryByIndex(0)).thenReturn(Optional.of(entry)); - assertEquals(entry, bridgeSupport.getLockWhitelistEntryByIndex(0)); + Optional lockWhitelistEntryByIndex = bridgeSupport.getLockWhitelistEntryByIndex(0); + assertTrue(lockWhitelistEntryByIndex.isPresent()); + assertEquals(entry, lockWhitelistEntryByIndex.get()); } @Test diff --git a/rskj-core/src/test/java/co/rsk/peg/whitelist/WhitelistSupportImplTest.java b/rskj-core/src/test/java/co/rsk/peg/whitelist/WhitelistSupportImplTest.java index bd1259f26c..e5ec5654c7 100644 --- a/rskj-core/src/test/java/co/rsk/peg/whitelist/WhitelistSupportImplTest.java +++ b/rskj-core/src/test/java/co/rsk/peg/whitelist/WhitelistSupportImplTest.java @@ -68,27 +68,27 @@ void getLockWhitelistSize_whenLockWhitelistHasEntries_shouldReturnOne() { @Test void getLockWhitelistEntryByIndex_whenLockWhitelistIsEmpty_shouldReturnNull() { - LockWhitelistEntry actualEntry = whitelistSupport.getLockWhitelistEntryByIndex(0); + Optional actualEntry = whitelistSupport.getLockWhitelistEntryByIndex(0); - assertNull(actualEntry); + assertTrue(actualEntry.isEmpty()); } @Test void getLockWhitelistEntryByIndex_whenLockWhitelistHasEntries_shouldReturnOneOffWhiteListEntry() { saveInMemoryStorageOneOffWhiteListEntry(); - LockWhitelistEntry actualLockWhitelistEntry = whitelistSupport.getLockWhitelistEntryByIndex(0); + Optional actualLockWhitelistEntry = whitelistSupport.getLockWhitelistEntryByIndex(0); - assertEquals(btcAddress, actualLockWhitelistEntry.address()); + assertEquals(btcAddress, actualLockWhitelistEntry.get().address()); } @Test void getLockWhitelistEntryByIndex_whenIndexIsOutOfBounds_shouldReturnNull() { saveInMemoryStorageOneOffWhiteListEntry(); - LockWhitelistEntry actualLockWhitelistEntry = whitelistSupport.getLockWhitelistEntryByIndex(1); + Optional actualLockWhitelistEntry = whitelistSupport.getLockWhitelistEntryByIndex(1); - assertNull(actualLockWhitelistEntry); + assertTrue(actualLockWhitelistEntry.isEmpty()); } @Test @@ -318,8 +318,8 @@ void save_whenLockWhitelistIsNull_shouldReturnZeroEntries() { int actualSize = whitelistSupport.getLockWhitelistSize(); assertEquals(0, actualSize); - assertNull(whitelistSupport.getLockWhitelistEntryByIndex(0)); - assertNull(whitelistSupport.getLockWhitelistEntryByIndex(1)); + assertTrue(whitelistSupport.getLockWhitelistEntryByIndex(0).isEmpty()); + assertTrue(whitelistSupport.getLockWhitelistEntryByIndex(1).isEmpty()); } @Test