diff --git a/grpc-adapter/src/main/java/de/cotto/lndmanagej/grpc/GrpcClosedChannels.java b/grpc-adapter/src/main/java/de/cotto/lndmanagej/grpc/GrpcClosedChannels.java index d33535a5..88d35590 100644 --- a/grpc-adapter/src/main/java/de/cotto/lndmanagej/grpc/GrpcClosedChannels.java +++ b/grpc-adapter/src/main/java/de/cotto/lndmanagej/grpc/GrpcClosedChannels.java @@ -87,6 +87,7 @@ public class GrpcClosedChannels extends GrpcChannelsBase { .withRemotePubkey(Pubkey.create(channelCloseSummary.getRemotePubkey())) .withCloseTransactionHash(channelCloseSummary.getClosingTxHash()) .withOpenInitiator(openInitiator) + .withCloseHeight(channelCloseSummary.getCloseHeight()) .build() ); } diff --git a/grpc-adapter/src/test/java/de/cotto/lndmanagej/grpc/GrpcClosedChannelsTest.java b/grpc-adapter/src/test/java/de/cotto/lndmanagej/grpc/GrpcClosedChannelsTest.java index 97269e22..95877978 100644 --- a/grpc-adapter/src/test/java/de/cotto/lndmanagej/grpc/GrpcClosedChannelsTest.java +++ b/grpc-adapter/src/test/java/de/cotto/lndmanagej/grpc/GrpcClosedChannelsTest.java @@ -25,6 +25,7 @@ import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID_SHORT; import static de.cotto.lndmanagej.model.ChannelPointFixtures.CHANNEL_POINT; import static de.cotto.lndmanagej.model.ChannelPointFixtures.TRANSACTION_HASH; import static de.cotto.lndmanagej.model.ChannelPointFixtures.TRANSACTION_HASH_2; +import static de.cotto.lndmanagej.model.ClosedChannelFixtures.CLOSE_HEIGHT; import static de.cotto.lndmanagej.model.CoopClosedChannelFixtures.CLOSED_CHANNEL; import static de.cotto.lndmanagej.model.CoopClosedChannelFixtures.CLOSED_CHANNEL_2; import static de.cotto.lndmanagej.model.ForceClosedChannelFixtures.FORCE_CLOSED_CHANNEL_BREACH; @@ -202,6 +203,7 @@ class GrpcClosedChannelsTest { .setCloseType(closeType) .setOpenInitiator(openInitiator) .setCloseInitiator(closeInitiator) + .setCloseHeight(CLOSE_HEIGHT) .build(); } diff --git a/model/src/main/java/de/cotto/lndmanagej/model/BreachForceClosedChannel.java b/model/src/main/java/de/cotto/lndmanagej/model/BreachForceClosedChannel.java index 1c40afe7..9ad050f4 100644 --- a/model/src/main/java/de/cotto/lndmanagej/model/BreachForceClosedChannel.java +++ b/model/src/main/java/de/cotto/lndmanagej/model/BreachForceClosedChannel.java @@ -6,7 +6,8 @@ public class BreachForceClosedChannel extends ForceClosedChannel { Pubkey ownPubkey, Pubkey remotePubkey, String closeTransactionHash, - OpenInitiator openInitiator + OpenInitiator openInitiator, + int closeHeight ) { super( channelCoreInformation, @@ -14,7 +15,8 @@ public class BreachForceClosedChannel extends ForceClosedChannel { remotePubkey, closeTransactionHash, openInitiator, - CloseInitiator.REMOTE + CloseInitiator.REMOTE, + closeHeight ); } } diff --git a/model/src/main/java/de/cotto/lndmanagej/model/BreachForceClosedChannelBuilder.java b/model/src/main/java/de/cotto/lndmanagej/model/BreachForceClosedChannelBuilder.java index d2c87826..25d4c084 100644 --- a/model/src/main/java/de/cotto/lndmanagej/model/BreachForceClosedChannelBuilder.java +++ b/model/src/main/java/de/cotto/lndmanagej/model/BreachForceClosedChannelBuilder.java @@ -14,7 +14,8 @@ public class BreachForceClosedChannelBuilder extends ClosedChannelBuilder { @Nullable CloseInitiator closeInitiator; + int closeHeight; + public ClosedChannelBuilder() { // default constructor } @@ -73,6 +75,11 @@ public abstract class ClosedChannelBuilder { return this; } + public ClosedChannelBuilder withCloseHeight(int closeHeight) { + this.closeHeight = closeHeight; + return this; + } + protected ChannelCoreInformation getChannelCoreInformation() { return new ChannelCoreInformation( requireNonNull(channelId), diff --git a/model/src/main/java/de/cotto/lndmanagej/model/CoopClosedChannel.java b/model/src/main/java/de/cotto/lndmanagej/model/CoopClosedChannel.java index b681089d..143a5ffa 100644 --- a/model/src/main/java/de/cotto/lndmanagej/model/CoopClosedChannel.java +++ b/model/src/main/java/de/cotto/lndmanagej/model/CoopClosedChannel.java @@ -7,7 +7,8 @@ public class CoopClosedChannel extends ClosedChannel { Pubkey remotePubkey, String closeTransactionHash, OpenInitiator openInitiator, - CloseInitiator closeInitiator + CloseInitiator closeInitiator, + int closeHeight ) { super( channelCoreInformation, @@ -15,7 +16,8 @@ public class CoopClosedChannel extends ClosedChannel { remotePubkey, closeTransactionHash, openInitiator, - closeInitiator + closeInitiator, + closeHeight ); } } diff --git a/model/src/main/java/de/cotto/lndmanagej/model/CoopClosedChannelBuilder.java b/model/src/main/java/de/cotto/lndmanagej/model/CoopClosedChannelBuilder.java index 39a6341e..bff0595a 100644 --- a/model/src/main/java/de/cotto/lndmanagej/model/CoopClosedChannelBuilder.java +++ b/model/src/main/java/de/cotto/lndmanagej/model/CoopClosedChannelBuilder.java @@ -15,7 +15,8 @@ public class CoopClosedChannelBuilder extends ClosedChannelBuilder new CoopClosedChannel( + channelCoreInformation, + PUBKEY, + PUBKEY_2, + TRANSACTION_HASH, + OpenInitiator.LOCAL, + CloseInitiator.LOCAL, + 0 + )).withMessage("Close height must be set"); + } + @Test void getId() { assertThat(CLOSED_CHANNEL.getId()).isEqualTo(CHANNEL_ID); @@ -81,6 +99,11 @@ class CoopClosedChannelTest { assertThat(CLOSED_CHANNEL.getCloseInitiator()).isEqualTo(CloseInitiator.REMOTE); } + @Test + void getCloseHeight() { + assertThat(CLOSED_CHANNEL.getCloseHeight()).isEqualTo(987_654); + } + @Test void getStatus() { assertThat(CLOSED_CHANNEL.getStatus()) diff --git a/model/src/test/java/de/cotto/lndmanagej/model/ForceClosedChannelTest.java b/model/src/test/java/de/cotto/lndmanagej/model/ForceClosedChannelTest.java index 7e3db2ca..0678f766 100644 --- a/model/src/test/java/de/cotto/lndmanagej/model/ForceClosedChannelTest.java +++ b/model/src/test/java/de/cotto/lndmanagej/model/ForceClosedChannelTest.java @@ -7,6 +7,7 @@ import static de.cotto.lndmanagej.model.ChannelFixtures.CAPACITY; import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID; import static de.cotto.lndmanagej.model.ChannelPointFixtures.CHANNEL_POINT; import static de.cotto.lndmanagej.model.ChannelPointFixtures.TRANSACTION_HASH_2; +import static de.cotto.lndmanagej.model.ClosedChannelFixtures.CLOSE_HEIGHT; import static de.cotto.lndmanagej.model.ForceClosedChannelFixtures.FORCE_CLOSED_CHANNEL; import static de.cotto.lndmanagej.model.ForceClosedChannelFixtures.FORCE_CLOSED_CHANNEL_REMOTE; import static de.cotto.lndmanagej.model.OpenCloseStatus.CLOSED; @@ -26,6 +27,7 @@ class ForceClosedChannelTest { .withCloseTransactionHash(TRANSACTION_HASH_2) .withOpenInitiator(OpenInitiator.LOCAL) .withCloseInitiator(CloseInitiator.REMOTE) + .withCloseHeight(CLOSE_HEIGHT) .build() ).isEqualTo(FORCE_CLOSED_CHANNEL); } @@ -80,6 +82,11 @@ class ForceClosedChannelTest { assertThat(FORCE_CLOSED_CHANNEL_REMOTE.getCloseInitiator()).isEqualTo(CloseInitiator.REMOTE); } + @Test + void getCloseHeight() { + assertThat(FORCE_CLOSED_CHANNEL_REMOTE.getCloseHeight()).isEqualTo(987_654); + } + @Test void getStatus() { assertThat(FORCE_CLOSED_CHANNEL_REMOTE.getStatus()) diff --git a/model/src/testFixtures/java/de/cotto/lndmanagej/model/ClosedChannelFixtures.java b/model/src/testFixtures/java/de/cotto/lndmanagej/model/ClosedChannelFixtures.java index 35100f10..57ed0ece 100644 --- a/model/src/testFixtures/java/de/cotto/lndmanagej/model/ClosedChannelFixtures.java +++ b/model/src/testFixtures/java/de/cotto/lndmanagej/model/ClosedChannelFixtures.java @@ -8,6 +8,8 @@ import static de.cotto.lndmanagej.model.PubkeyFixtures.PUBKEY; import static de.cotto.lndmanagej.model.PubkeyFixtures.PUBKEY_2; public final class ClosedChannelFixtures { + public static final int CLOSE_HEIGHT = 987_654; + private ClosedChannelFixtures() { // do not instantiate } @@ -20,6 +22,7 @@ public final class ClosedChannelFixtures { .withRemotePubkey(PUBKEY_2) .withCloseTransactionHash(TRANSACTION_HASH_2) .withOpenInitiator(OpenInitiator.LOCAL) - .withCloseInitiator(CloseInitiator.REMOTE); + .withCloseInitiator(CloseInitiator.REMOTE) + .withCloseHeight(CLOSE_HEIGHT); } }