Skip to content

Commit dc3ae72

Browse files
committed
make types of rpc-api overridable
1 parent 2907b3b commit dc3ae72

File tree

17 files changed

+59
-79
lines changed

17 files changed

+59
-79
lines changed

api/src/test/java/com/strategyobject/substrateclient/api/ApiTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void getSystemPalletAndCall() throws Exception { // TODO move the test out of th
3636
.get(WAIT_TIMEOUT, TimeUnit.SECONDS);
3737

3838
assertNotNull(blockHash);
39-
assertNotEquals(BigInteger.ZERO, new BigInteger(blockHash.getData()));
39+
assertNotEquals(BigInteger.ZERO, new BigInteger(blockHash.getValue()));
4040
}
4141
}
4242
}

pallet/src/main/java/com/strategyobject/substrateclient/pallet/storage/StorageNMapImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import com.strategyobject.substrateclient.common.types.tuple.Pair;
44
import com.strategyobject.substrateclient.rpc.api.BlockHash;
55
import com.strategyobject.substrateclient.rpc.api.Hash;
6-
import com.strategyobject.substrateclient.rpc.api.section.State;
76
import com.strategyobject.substrateclient.rpc.api.StorageKey;
7+
import com.strategyobject.substrateclient.rpc.api.section.State;
88
import com.strategyobject.substrateclient.scale.ScaleReader;
99
import lombok.NonNull;
1010
import lombok.RequiredArgsConstructor;

pallet/src/test/java/com/strategyobject/substrateclient/pallet/storage/IdentityTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.strategyobject.substrateclient.pallet.storage;
22

33
import com.strategyobject.substrateclient.rpc.api.BlockHash;
4+
import com.strategyobject.substrateclient.rpc.api.impl.Hash256;
45
import com.strategyobject.substrateclient.scale.ScaleWriter;
56
import com.strategyobject.substrateclient.scale.registries.ScaleWriterRegistry;
67
import lombok.SneakyThrows;
@@ -19,7 +20,7 @@ class IdentityTests {
1920
private static Stream<byte[]> getTestCasesForGetHash() {
2021
return Stream.of(
2122
encode(Integer.class, -175),
22-
encode(BlockHash.class, BlockHash.fromBytes(random(32))),
23+
encode(BlockHash.class, Hash256.fromBytes(random(32))),
2324
"TestString".getBytes(StandardCharsets.UTF_8),
2425
random(new Random().nextInt(128) + 1));
2526
}

pallet/src/test/java/com/strategyobject/substrateclient/pallet/storage/KeyHasherTests.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.strategyobject.substrateclient.crypto.ss58.SS58Codec;
55
import com.strategyobject.substrateclient.rpc.api.AccountId;
66
import com.strategyobject.substrateclient.rpc.api.BlockHash;
7+
import com.strategyobject.substrateclient.rpc.api.impl.Hash256;
78
import com.strategyobject.substrateclient.scale.ScaleReader;
89
import com.strategyobject.substrateclient.scale.ScaleWriter;
910
import com.strategyobject.substrateclient.scale.readers.CompactIntegerReader;
@@ -44,7 +45,7 @@ private static Stream<Arguments> getTestCasesForGetHash() {
4445
"0x4f9aea1afa791265fae359272badc1cf8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48"
4546
),
4647
Arguments.of(
47-
BlockHash.fromBytes(HexConverter.toBytes("0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")),
48+
Hash256.fromBytes(HexConverter.toBytes("0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")),
4849
ScaleReaderRegistry.getInstance().resolve(BlockHash.class),
4950
ScaleWriterRegistry.getInstance().resolve(BlockHash.class),
5051
Identity.getInstance(),
@@ -115,7 +116,7 @@ private static Stream<Arguments> getTestCasesForExtractKey() {
115116
ScaleReaderRegistry.getInstance().resolve(BlockHash.class),
116117
ScaleWriterRegistry.getInstance().resolve(BlockHash.class),
117118
Identity.getInstance(),
118-
BlockHash.fromBytes(HexConverter.toBytes("0xabcdef98765432100123456789abcdefabcdef98765432100123456789abcdef")),
119+
Hash256.fromBytes(HexConverter.toBytes("0xabcdef98765432100123456789abcdefabcdef98765432100123456789abcdef")),
119120
0
120121
),
121122
Arguments.of(

pallet/src/test/java/com/strategyobject/substrateclient/pallet/storage/StorageMapImplTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void systemBlockHash() throws Exception {
4646

4747
val actual = storage.get(0).get();
4848

49-
assertNotEquals(BigInteger.ZERO, new BigInteger(actual.getData()));
49+
assertNotEquals(BigInteger.ZERO, new BigInteger(actual.getValue()));
5050
}
5151
}
5252
}

pallet/src/test/java/com/strategyobject/substrateclient/pallet/storage/StorageNMapImplTests.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ void keys() throws Exception {
8686
assertEquals(1, list.size());
8787

8888
val block = (BlockHash) list.stream().findFirst().orElseThrow(RuntimeException::new);
89-
assertNotEquals(BigInteger.ZERO, new BigInteger(block.getData()));
89+
assertNotEquals(BigInteger.ZERO, new BigInteger(block.getValue()));
9090
}
9191
}
9292

@@ -138,7 +138,7 @@ void entries() throws Exception {
138138
}));
139139

140140
assertEquals(0, blockNumber.get());
141-
assertNotEquals(BigInteger.ZERO, new BigInteger(blockHash.get().getData()));
141+
assertNotEquals(BigInteger.ZERO, new BigInteger(blockHash.get().getValue()));
142142
}
143143
}
144144

@@ -157,7 +157,7 @@ void multi() throws Exception {
157157
assertEquals(2, list.size());
158158

159159
assertEquals(0, list.get(0).getValue0());
160-
assertNotEquals(BigInteger.ZERO, new BigInteger(list.get(0).getValue1().getData()));
160+
assertNotEquals(BigInteger.ZERO, new BigInteger(list.get(0).getValue1().getValue()));
161161

162162
assertEquals(1, list.get(1).getValue0());
163163
assertNull(list.get(1).getValue1());
@@ -208,7 +208,7 @@ void entriesPaged() throws Exception {
208208
while (pages.moveNext().join()) {
209209
pages.current().iterator().forEachRemaining(e -> e.consume((value, keys) -> {
210210
val key = (Integer) keys.get(0);
211-
assertNotEquals(BigInteger.ZERO, new BigInteger(value.getData()));
211+
assertNotEquals(BigInteger.ZERO, new BigInteger(value.getValue()));
212212

213213
pairs.add(Pair.of(key, value));
214214
}));
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,4 @@
11
package com.strategyobject.substrateclient.rpc.api;
22

3-
import com.strategyobject.substrateclient.common.types.FixedBytes;
4-
import com.strategyobject.substrateclient.common.types.Size;
5-
import com.strategyobject.substrateclient.scale.ScaleSelfWritable;
6-
import lombok.NonNull;
7-
8-
public class BlockHash
9-
extends FixedBytes<Size.Of32>
10-
implements ScaleSelfWritable<BlockHash> {
11-
protected BlockHash(byte[] data) {
12-
super(data, Size.of32);
13-
}
14-
15-
public static BlockHash fromBytes(byte @NonNull [] data) {
16-
return new BlockHash(data);
17-
}
3+
public interface BlockHash extends Hash {
184
}

rpc/rpc-api/src/main/java/com/strategyobject/substrateclient/rpc/api/BlockHashReader.java

-21
This file was deleted.

rpc/rpc-api/src/main/java/com/strategyobject/substrateclient/rpc/api/Number.java rpc/rpc-api/src/main/java/com/strategyobject/substrateclient/rpc/api/BlockNumber.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77

88
@RequiredArgsConstructor(staticName = "of")
99
@Getter
10-
public class Number {
10+
public class BlockNumber {
1111
private final BigInteger value;
1212
}

rpc/rpc-api/src/main/java/com/strategyobject/substrateclient/rpc/api/NumberDecoder.java rpc/rpc-api/src/main/java/com/strategyobject/substrateclient/rpc/api/BlockNumberDecoder.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88

99
import java.math.BigInteger;
1010

11-
@AutoRegister(types = Number.class)
12-
public class NumberDecoder extends AbstractDecoder<Number> {
11+
@AutoRegister(types = BlockNumber.class)
12+
public class BlockNumberDecoder extends AbstractDecoder<BlockNumber> {
1313
@Override
14-
protected Number decodeNonNull(RpcObject value, DecoderPair<?>[] decoders) {
14+
protected BlockNumber decodeNonNull(RpcObject value, DecoderPair<?>[] decoders) {
1515
val stringValue = value.asString();
1616
val number = new BigInteger(stringValue.substring(2), 16);
1717

18-
return Number.of(number);
18+
return BlockNumber.of(number);
1919
}
2020
}

rpc/rpc-api/src/main/java/com/strategyobject/substrateclient/rpc/api/FixedBytesWriter.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.strategyobject.substrateclient.common.types.Size;
77
import com.strategyobject.substrateclient.crypto.PublicKey;
88
import com.strategyobject.substrateclient.crypto.SignatureData;
9+
import com.strategyobject.substrateclient.rpc.api.impl.Hash256;
910
import com.strategyobject.substrateclient.scale.ScaleWriter;
1011
import com.strategyobject.substrateclient.scale.annotation.AutoRegister;
1112
import lombok.NonNull;
@@ -16,8 +17,9 @@
1617
@AutoRegister(
1718
types = {
1819
AccountId.class,
19-
BlockHash.class,
20+
Hash256.class,
2021
Hash.class,
22+
BlockHash.class,
2123
PublicKey.class,
2224
SignatureData.class
2325
})
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,5 @@
11
package com.strategyobject.substrateclient.rpc.api;
22

3-
import com.strategyobject.substrateclient.common.types.FixedBytes;
4-
import com.strategyobject.substrateclient.common.types.Size;
5-
import com.strategyobject.substrateclient.scale.ScaleSelfWritable;
6-
import lombok.NonNull;
7-
8-
public class Hash extends FixedBytes<Size.Of32> implements ScaleSelfWritable<Hash> {
9-
private Hash(byte[] data) {
10-
super(data, Size.of32);
11-
}
12-
13-
public static Hash fromBytes(byte @NonNull [] data) {
14-
return new Hash(data);
15-
}
3+
public interface Hash {
4+
byte[] getValue();
165
}

rpc/rpc-api/src/main/java/com/strategyobject/substrateclient/rpc/api/Header.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,5 @@ public class Header { // TODO add rest fields
1212
@Scale
1313
private BlockHash parentHash;
1414

15-
private Number number; /* TODO probably it would be better to change the type to BigInteger
16-
and support specific decoders */
15+
private BlockNumber number;
1716
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.strategyobject.substrateclient.rpc.api.impl;
2+
3+
import com.strategyobject.substrateclient.common.types.FixedBytes;
4+
import com.strategyobject.substrateclient.common.types.Size;
5+
import com.strategyobject.substrateclient.rpc.api.BlockHash;
6+
import com.strategyobject.substrateclient.rpc.api.Hash;
7+
import lombok.NonNull;
8+
9+
public class Hash256 extends FixedBytes<Size.Of32> implements Hash, BlockHash {
10+
private Hash256(byte[] data) {
11+
super(data, Size.of32);
12+
}
13+
14+
@Override
15+
public byte[] getValue() {
16+
return getData();
17+
}
18+
19+
public static Hash256 fromBytes(byte @NonNull [] data) {
20+
return new Hash256(data);
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
1-
package com.strategyobject.substrateclient.rpc.api;
1+
package com.strategyobject.substrateclient.rpc.api.impl;
22

33
import com.google.common.base.Preconditions;
44
import com.strategyobject.substrateclient.common.io.Streamer;
55
import com.strategyobject.substrateclient.common.types.Size;
6+
import com.strategyobject.substrateclient.rpc.api.BlockHash;
7+
import com.strategyobject.substrateclient.rpc.api.Hash;
68
import com.strategyobject.substrateclient.scale.ScaleReader;
79
import com.strategyobject.substrateclient.scale.annotation.AutoRegister;
810
import lombok.NonNull;
911

1012
import java.io.IOException;
1113
import java.io.InputStream;
1214

13-
@AutoRegister(types = Hash.class)
14-
public class HashReader implements ScaleReader<Hash> {
15+
@AutoRegister(types = {Hash256.class, Hash.class, BlockHash.class})
16+
public class Hash256Reader implements ScaleReader<Hash> {
1517
@Override
1618
public Hash read(@NonNull InputStream stream, ScaleReader<?>... readers) throws IOException {
1719
Preconditions.checkArgument(readers == null || readers.length == 0);
1820

19-
return Hash.fromBytes(Streamer.readBytes(Size.of32.getValue(), stream));
21+
return Hash256.fromBytes(Streamer.readBytes(Size.of32.getValue(), stream));
2022
}
2123
}

rpc/rpc-api/src/test/java/com/strategyobject/substrateclient/rpc/api/section/ChainTests.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.strategyobject.substrateclient.rpc.RpcGeneratedSectionFactory;
44
import com.strategyobject.substrateclient.rpc.api.BlockHash;
5-
import com.strategyobject.substrateclient.rpc.api.section.Chain;
65
import com.strategyobject.substrateclient.tests.containers.SubstrateVersion;
76
import com.strategyobject.substrateclient.tests.containers.TestSubstrateContainer;
87
import com.strategyobject.substrateclient.transport.ws.WsProvider;
@@ -39,7 +38,7 @@ void getFinalizedHead() throws Exception {
3938
val chain = RpcGeneratedSectionFactory.create(Chain.class, wsProvider);
4039
val result = chain.getFinalizedHead().get(WAIT_TIMEOUT, TimeUnit.SECONDS);
4140

42-
assertNotEquals(BigInteger.ZERO, new BigInteger(result.getData()));
41+
assertNotEquals(BigInteger.ZERO, new BigInteger(result.getValue()));
4342
}
4443
}
4544

@@ -63,7 +62,7 @@ void subscribeNewHeads() throws Exception {
6362
.atMost(WAIT_TIMEOUT * 2, TimeUnit.SECONDS)
6463
.untilAtomic(blockCount, greaterThan(2));
6564

66-
assertNotEquals(BigInteger.ZERO, new BigInteger(blockHash.get().getData()));
65+
assertNotEquals(BigInteger.ZERO, new BigInteger(blockHash.get().getValue()));
6766

6867
val result = unsubscribeFunc.get().get(WAIT_TIMEOUT, TimeUnit.SECONDS);
6968

@@ -77,7 +76,7 @@ void getBlockHash() throws Exception {
7776
val chain = RpcGeneratedSectionFactory.create(Chain.class, wsProvider);
7877
val result = chain.getBlockHash(0).get(WAIT_TIMEOUT, TimeUnit.SECONDS);
7978

80-
assertNotEquals(BigInteger.ZERO, new BigInteger(result.getData()));
79+
assertNotEquals(BigInteger.ZERO, new BigInteger(result.getValue()));
8180
}
8281
}
8382

@@ -100,11 +99,11 @@ void getBlock() throws Exception {
10099
val number = height.get();
101100
val blockHash = chain.getBlockHash(number).get(WAIT_TIMEOUT, TimeUnit.SECONDS);
102101

103-
assertNotEquals(BigInteger.ZERO, new BigInteger(blockHash.getData()));
102+
assertNotEquals(BigInteger.ZERO, new BigInteger(blockHash.getValue()));
104103

105104
val block = chain.getBlock(blockHash).get(WAIT_TIMEOUT, TimeUnit.SECONDS);
106105

107-
assertNotEquals(BigInteger.ZERO, new BigInteger(block.getBlock().getHeader().getParentHash().getData()));
106+
assertNotEquals(BigInteger.ZERO, new BigInteger(block.getBlock().getHeader().getParentHash().getValue()));
108107
Assertions.assertEquals(number, block.getBlock().getHeader().getNumber().getValue().intValue());
109108
}
110109
}

rpc/rpc-api/src/test/java/com/strategyobject/substrateclient/rpc/api/section/StateTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ void getStorageHash() throws Exception {
115115
val hash = state.getStorageHash(storageKey).get(WAIT_TIMEOUT, TimeUnit.SECONDS);
116116

117117
assertNotNull(hash);
118-
assertTrue(hash.getData().length > 0);
118+
assertTrue(hash.getValue().length > 0);
119119
}
120120
}
121121

@@ -129,7 +129,7 @@ void getStorageHashAt() throws Exception {
129129
val hash = state.getStorageHash(storageKey, blockHash).get(WAIT_TIMEOUT, TimeUnit.SECONDS);
130130

131131
assertNotNull(hash);
132-
assertTrue(hash.getData().length > 0);
132+
assertTrue(hash.getValue().length > 0);
133133
}
134134
}
135135

0 commit comments

Comments
 (0)