Skip to content

Commit a390a24

Browse files
committed
issues/349 - Migrated Effect key field from String to Key class
1 parent 48ea350 commit a390a24

File tree

10 files changed

+69
-74
lines changed

10 files changed

+69
-74
lines changed

src/main/java/com/casper/sdk/model/contract/NamedKey.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.casper.sdk.model.contract;
22

3+
import com.casper.sdk.model.key.Key;
34
import com.fasterxml.jackson.annotation.JsonProperty;
45
import lombok.AllArgsConstructor;
56
import lombok.Builder;
@@ -25,7 +26,7 @@ public class NamedKey {
2526
* key(String) The value of the entry: a casper `Key` type.
2627
*/
2728
@JsonProperty("key")
28-
private String key;
29+
private Key key;
2930

3031
/**
3132
* name(String) The name of the entry.

src/main/java/com/casper/sdk/model/deploy/executionresult/Success.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.casper.sdk.model.deploy.executionresult;
22

33
import com.casper.sdk.model.deploy.ExecutionEffect;
4+
import com.casper.sdk.model.key.Key;
45
import com.fasterxml.jackson.annotation.JsonTypeName;
56
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
67
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -30,7 +31,7 @@ public class Success {
3031
private ExecutionEffect effect;
3132

3233
/** List of Hex-encoded transfer address. */
33-
private List<String> transfers;
34+
private List<Key> transfers;
3435

3536
/** The cost of executing the deploy. */
3637
@JsonSerialize(using = ToStringSerializer.class)

src/main/java/com/casper/sdk/model/entity/Account.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.casper.sdk.model.entity;
22

33
import com.casper.sdk.exception.NoSuchKeyTagException;
4+
import com.casper.sdk.model.key.AccountHashKey;
45
import com.casper.sdk.model.key.Key;
56
import com.fasterxml.jackson.annotation.JsonTypeName;
67
import com.fasterxml.jackson.annotation.JsonValue;
@@ -20,9 +21,9 @@
2021
public class Account implements EntityAddressKind {
2122

2223
@JsonValue
23-
private Key account;
24+
private AccountHashKey account;
2425

2526
public Account(final String accountSt) throws NoSuchKeyTagException {
26-
this.account = Key.create(accountSt);
27+
this.account = (AccountHashKey) Key.create(accountSt);
2728
}
2829
}

src/main/java/com/casper/sdk/model/key/ByteCodeKey.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ protected void fromStringCustom(final String strKey) {
3333
final byte[] key = new byte[33];
3434
final String[] split = strKey.split("-");
3535
key[0] = byteCodeAddr.getByteTag();
36-
System.arraycopy(Hex.decode(split[split.length - 1]), 0, key, 1, 32);
36+
final byte[] decode = Hex.decode(split[split.length - 1]);
37+
System.arraycopy(decode, 0, key, 1, decode.length);
3738
setKey(key);
3839
}
3940

src/main/java/com/casper/sdk/model/transaction/execution/Effect.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.casper.sdk.model.transaction.execution;
22

3+
import com.casper.sdk.model.key.Key;
34
import com.casper.sdk.model.transaction.kind.Kind;
45
import com.fasterxml.jackson.annotation.JsonProperty;
56
import lombok.*;
@@ -16,9 +17,8 @@
1617
@Builder
1718
public class Effect {
1819

19-
// TODO convert EntityAddr
2020
@JsonProperty("key")
21-
private String key;
21+
private Key key;
2222
@JsonProperty("kind")
2323
private Kind kind;
2424

src/main/java/com/casper/sdk/model/transfer/TransferV1.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.casper.sdk.model.transfer;
22

33
import com.casper.sdk.annotation.ExcludeFromJacocoGeneratedReport;
4+
import com.casper.sdk.model.key.AccountHashKey;
45
import com.fasterxml.jackson.annotation.JsonIgnore;
56
import com.fasterxml.jackson.annotation.JsonProperty;
67
import lombok.*;
@@ -25,11 +26,11 @@ public class TransferV1 {
2526

2627
/** Hex-encoded account hash. */
2728
@JsonProperty("to")
28-
private String to;
29+
private AccountHashKey to;
2930

3031
/** Hex-encoded account hash. */
3132
@JsonProperty("from")
32-
private String from;
33+
private AccountHashKey from;
3334

3435
/** Amount transferred */
3536
@JsonIgnore

src/test/java/com/HowTo.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.casper.sdk.model.entity.AddressableEntity;
2222
import com.casper.sdk.model.entity.StateEntityResult;
2323
import com.casper.sdk.model.era.EraInfoData;
24+
import com.casper.sdk.model.key.Key;
2425
import com.casper.sdk.model.key.PublicKey;
2526
import com.casper.sdk.model.reward.GetRewardResult;
2627
import com.casper.sdk.model.stateroothash.StateRootHashData;
@@ -288,8 +289,8 @@ void getStateEntity() {
288289
assert stateEntityPublicKey.getEntity() != null;
289290

290291
//By contract identifier
291-
final String contractKey = ((AddressableEntity) stateEntityPublicKey.getEntity()).getNamedKeys().get(0).getKey();
292-
final StateEntityResult stateEntityContract = casperService.getStateEntity(new EntityAddrIdentifier(contractKey), null);
292+
final Key contractKey = ((AddressableEntity) stateEntityPublicKey.getEntity()).getNamedKeys().get(0).getKey();
293+
final StateEntityResult stateEntityContract = casperService.getStateEntity(new EntityAddrIdentifier(contractKey.toString()), null);
293294
assert stateEntityContract.getEntity() != null;
294295

295296
}

src/test/java/com/casper/sdk/model/transaction/EffectTest.java

Lines changed: 39 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
import com.casper.sdk.model.entity.contract.ByteCode;
1515
import com.casper.sdk.model.entity.contract.NamedKey;
1616
import com.casper.sdk.model.entity.contract.Package;
17-
import com.casper.sdk.model.key.AccountHashKey;
18-
import com.casper.sdk.model.key.PublicKey;
17+
import com.casper.sdk.model.key.*;
1918
import com.casper.sdk.model.transaction.execution.Effect;
2019
import com.casper.sdk.model.transaction.kind.*;
2120
import com.casper.sdk.model.uref.URef;
@@ -51,7 +50,8 @@ void pruneKindEffect() throws JsonProcessingException {
5150
"}";
5251

5352
final Effect pruneEffect = new ObjectMapper().readValue(json, Effect.class);
54-
assertThat(pruneEffect.getKey(), is("balance-hold-01fe139a5aa36aa69c04a6b630c9993bc03d868ffde46d3f60c3fbe6e6e762016f78bec10c90010000"));
53+
assertThat(pruneEffect.getKey(), is(instanceOf(BalanceHoldKey.class)));
54+
assertThat(pruneEffect.getKey().toString(), is("balance-hold-01fe139a5aa36aa69c04a6b630c9993bc03d868ffde46d3f60c3fbe6e6e762016f78bec10c90010000"));
5555
assertThat(pruneEffect, is(notNullValue()));
5656
assertThat(pruneEffect.getKind(), is(instanceOf(PruneKind.class)));
5757
assertThat(((PruneKind) pruneEffect.getKind()).getPrune(), is("balance-hold-01fe139a5aa36aa69c04a6b630c9993bc03d868ffde46d3f60c3fbe6e6e762016f78bec10c90010000"));
@@ -104,11 +104,11 @@ void writeKindBidKindCreditEffect() throws JsonProcessingException, NoSuchAlgori
104104
final Effect writeEffect = new ObjectMapper().readValue(json, Effect.class);
105105
assertThat(writeEffect, is(notNullValue()));
106106
assertThat(writeEffect.getKind(), is(instanceOf(WriteKind.class)));
107-
WriteKind<?> kind = writeEffect.getKind();
107+
final WriteKind<?> kind = writeEffect.getKind();
108108
assertThat(kind.getWrite().getValue(), is(instanceOf(BidKind.class)));
109109
assertThat(kind.getWrite().getValue(), is(instanceOf(BidKind.class)));
110110
assertThat(kind.getWrite().getValue(), is(instanceOf(ValidatorCredit.class)));
111-
ValidatorCredit value = (ValidatorCredit) kind.getWrite().getValue();
111+
final ValidatorCredit value = (ValidatorCredit) kind.getWrite().getValue();
112112
assertThat(value.getValidatorPublicKey(), is(PublicKey.fromTaggedHexString("01284a8cd097808afdea9876ccb91f28702143c04266dea057cc19b8fc382cc258")));
113113
assertThat(value.getEraId(), is(377L));
114114
assertThat(value.getAmount(), is(new BigInteger("10000")));
@@ -134,11 +134,11 @@ void writeKindBidKindBridgeEffect() throws JsonProcessingException, NoSuchAlgori
134134
final Effect writeEffect = new ObjectMapper().readValue(json, Effect.class);
135135
assertThat(writeEffect, is(notNullValue()));
136136
assertThat(writeEffect.getKind(), is(instanceOf(WriteKind.class)));
137-
WriteKind<?> kind = writeEffect.getKind();
137+
final WriteKind<?> kind = writeEffect.getKind();
138138
assertThat(kind.getWrite().getValue(), is(instanceOf(BidKind.class)));
139139
assertThat(kind.getWrite().getValue(), is(instanceOf(BidKind.class)));
140140
assertThat(kind.getWrite().getValue(), is(instanceOf(Bridge.class)));
141-
Bridge value = (Bridge) kind.getWrite().getValue();
141+
final Bridge value = (Bridge) kind.getWrite().getValue();
142142
assertThat(value.getOldValidatorPublicKey(), is(PublicKey.fromTaggedHexString("01284a8cd097808afdea9876ccb91f28702143c04266dea057cc19b8fc382cc258")));
143143
assertThat(value.getNewValidatorPublicKey(), is(PublicKey.fromTaggedHexString("01026ca707c348ed8012ac6a1f28db031fadd6eb67203501a353b867a08c8b9a80")));
144144
assertThat(value.getEraId(), is(378L));
@@ -207,7 +207,8 @@ void identityKindEffect() throws JsonProcessingException {
207207
"}";
208208

209209
final Effect identityEffect = new ObjectMapper().readValue(json, Effect.class);
210-
assertThat(identityEffect.getKey(), is("entity-system-86c4525a60cb6532342f5f598666711219f3bdcc6a8936152ec1c670c510c75f"));
210+
assertThat(identityEffect.getKey(), is(instanceOf(AddressableEntityKey.class)));
211+
assertThat(identityEffect.getKey().toString(), is("entity-system-86c4525a60cb6532342f5f598666711219f3bdcc6a8936152ec1c670c510c75f"));
211212
assertThat(identityEffect, is(notNullValue()));
212213
assertThat(identityEffect.getKind(), is(instanceOf(IdentityKind.class)));
213214
}
@@ -218,22 +219,22 @@ void identityKindAddUint512() throws JsonProcessingException {
218219
final String json = "{\n" +
219220
" \"key\": \"balance-1c29560834540520e147468c3bf86f09e5bd60cda2cb8380d94ee1c348a4281d\",\n" +
220221
" \"kind\": {\n" +
221-
" \"AddUInt512\" : 2500000000\n" +
222-
"}\n" +
222+
" \"AddUInt512\" : 2500000000\n" +
223+
"}\n" +
223224
"}";
224225

225226
final Effect identityEffect = new ObjectMapper().readValue(json, Effect.class);
226-
assertThat(identityEffect.getKey(), is("balance-1c29560834540520e147468c3bf86f09e5bd60cda2cb8380d94ee1c348a4281d"));
227+
assertThat(identityEffect.getKey(), is(instanceOf(Key.class)));
228+
assertThat(identityEffect.getKey().toString(), is("balance-1c29560834540520e147468c3bf86f09e5bd60cda2cb8380d94ee1c348a4281d"));
227229
assertThat(identityEffect, is(notNullValue()));
228230
assertThat(identityEffect.getKind(), is(instanceOf(Transform.class)));
229-
230231
}
231232

232233
@Test
233234
void writeKindByteCode() throws JsonProcessingException {
234235

235236
final String json = "{\n" +
236-
" \"key\": \"byte-code-v1-wasm-aaa0345086a4f80601ec93d78053c13f5599afeb752d3d9b88fe5878b611675\",\n" +
237+
" \"key\": \"byte-code-v1-wasm-3beb396c91ff7ae62d08857cc8a787146cd4f0771b8a21d385b3f4ac6077854a\",\n" +
237238
" \"kind\": {\n" +
238239
" \"Write\": {\n" +
239240
" \"ByteCode\": {\n" +
@@ -245,19 +246,17 @@ void writeKindByteCode() throws JsonProcessingException {
245246
"}";
246247

247248
final Effect writeEffect = new ObjectMapper().readValue(json, Effect.class);
249+
assertThat(writeEffect.getKey().toString(), is("byte-code-v1-wasm-3beb396c91ff7ae62d08857cc8a787146cd4f0771b8a21d385b3f4ac6077854a"));
248250

249-
assertThat(writeEffect.getKey(), is("byte-code-v1-wasm-aaa0345086a4f80601ec93d78053c13f5599afeb752d3d9b88fe5878b611675"));
250-
WriteKind<?> kind = writeEffect.getKind();
251-
251+
final WriteKind<?> kind = writeEffect.getKind();
252252
assertThat(kind.getWrite(), is(instanceOf(ByteCodeKind.class)));
253253
assertThat(kind.getWrite().getValue(), is(instanceOf(ByteCode.class)));
254254

255-
ByteCode byteCodeKind = (ByteCode) kind.getWrite().getValue();
256-
255+
final ByteCode byteCodeKind = (ByteCode) kind.getWrite().getValue();
257256
assertThat(byteCodeKind.getBytes(), is("0061736d01000000017f106002"));
258257
assertThat(byteCodeKind.getKind(), is(ByteCode.ByteCodes.V1CasperWasm));
259-
260258
}
259+
261260
@Test
262261
void writeKindNamedKey() throws JsonProcessingException {
263262

@@ -285,25 +284,25 @@ void writeKindNamedKey() throws JsonProcessingException {
285284

286285
final Effect writeEffect = new ObjectMapper().readValue(json, Effect.class);
287286

288-
assertThat(writeEffect.getKey(), is("named-key-entity-account-a897e2e1c25b1149e96b774bdfd758d4a44ec392bd914a19ff780d3905ff45c0-e8265cd5ef8e0275971c6d4ff28263ef787412f034631a11bbc508761ffd7119"));
289-
WriteKind<?> kind = writeEffect.getKind();
287+
assertThat(writeEffect.getKey(), is(instanceOf(NamedKeyKey.class)));
288+
assertThat(writeEffect.getKey().toString(), is("named-key-entity-account-a897e2e1c25b1149e96b774bdfd758d4a44ec392bd914a19ff780d3905ff45c0-e8265cd5ef8e0275971c6d4ff28263ef787412f034631a11bbc508761ffd7119"));
290289

290+
final WriteKind<?> kind = writeEffect.getKind();
291291
assertThat(kind.getWrite(), is(instanceOf(NamedKeyKind.class)));
292292
assertThat(kind.getWrite().getValue(), is(instanceOf(NamedKey.class)));
293293

294-
NamedKey namedKeyKind = (NamedKey) kind.getWrite().getValue();
295-
296-
AbstractCLValue<?,?> namedKey = namedKeyKind.getNamedKey();
294+
final NamedKey namedKeyKind = (NamedKey) kind.getWrite().getValue();
295+
final AbstractCLValue<?, ?> namedKey = namedKeyKind.getNamedKey();
297296
assertThat(namedKey.getBytes(), is("028c5da3dd186f82c27dd4689dca3f838ac17f93ef10a5159fa40a30ca78f9e93207"));
298297
assertThat(namedKey.getParsed(), is("uref-8c5da3dd186f82c27dd4689dca3f838ac17f93ef10a5159fa40a30ca78f9e932-007"));
299298
assertThat(namedKey.getClType().getTypeName(), is("Key"));
300299

301-
AbstractCLValue<?,?> name = namedKeyKind.getName();
300+
final AbstractCLValue<?, ?> name = namedKeyKind.getName();
302301
assertThat(name.getBytes(), is("2800000063657031385f636f6e74726163745f7061636b6167655f6163636573735f41636d6520546f6b656e"));
303302
assertThat(name.getParsed(), is("cep18_contract_package_access_Acme Token"));
304303
assertThat(name.getClType().getTypeName(), is("String"));
305-
306304
}
305+
307306
@Test
308307
void writeKindEntryPoint() throws JsonProcessingException {
309308

@@ -336,16 +335,15 @@ void writeKindEntryPoint() throws JsonProcessingException {
336335

337336

338337
final Effect writeEffect = new ObjectMapper().readValue(json, Effect.class);
338+
assertThat(writeEffect.getKey(), is(instanceOf(EntryPointKey.class)));
339+
assertThat(writeEffect.getKey().toString(), is("entry-point-v1-entity-contract-3b6b4d8a3d815372508faa92f3a05dcb50c9c98de05d9a7668cb94b04f1ef9af-768c370eb010604bd19029a409dca8b5fbf9af9bc14a36c2b294a2a7a922161e"));
339340

340-
assertThat(writeEffect.getKey(), is("entry-point-v1-entity-contract-3b6b4d8a3d815372508faa92f3a05dcb50c9c98de05d9a7668cb94b04f1ef9af-768c370eb010604bd19029a409dca8b5fbf9af9bc14a36c2b294a2a7a922161e"));
341-
WriteKind<?> kind = writeEffect.getKind();
342-
341+
final WriteKind<?> kind = writeEffect.getKind();
343342
assertThat(kind.getWrite(), is(instanceOf(EntryPointKind.class)));
344343
assertThat(kind.getWrite().getValue(), is(instanceOf(EntryPointValue.class)));
345344

346-
EntryPointValue entryPointValue = (EntryPointValue) kind.getWrite().getValue();
347-
EntryPoint entryPoint = entryPointValue.getV1();
348-
345+
final EntryPointValue entryPointValue = (EntryPointValue) kind.getWrite().getValue();
346+
final EntryPoint entryPoint = entryPointValue.getV1();
349347
assertThat(entryPoint.getName(), is("burn"));
350348
assertThat(entryPoint.getArgs().size(), is(2));
351349
assertThat(entryPoint.getArgs().get(0).getName(), is("owner"));
@@ -354,8 +352,8 @@ void writeKindEntryPoint() throws JsonProcessingException {
354352
assertThat(entryPoint.getAccess().getValue(), is(EntryPoint.EntryPointAccessEnum.PUBLIC));
355353
assertThat(entryPoint.getType(), is(EntryPoint.EntryPointType.CALLED));
356354
assertThat(entryPoint.getPayment(), is(EntryPoint.EntryPointPayment.CALLER));
357-
358355
}
356+
359357
@Test
360358
void writeKindPackage() throws JsonProcessingException {
361359

@@ -400,28 +398,24 @@ void writeKindPackage() throws JsonProcessingException {
400398

401399
final Effect writeEffect = new ObjectMapper().readValue(json, Effect.class);
402400

403-
assertThat(writeEffect.getKey(), is("package-ef39f3794dfde8641acc43a8f63d4c0a72a4b33bbb2e4eed29421ee6cfd0d87e"));
404-
WriteKind<?> kind = writeEffect.getKind();
401+
assertThat(writeEffect.getKey(), is(instanceOf(Key.class)));
402+
assertThat(writeEffect.getKey().toString(), is("package-ef39f3794dfde8641acc43a8f63d4c0a72a4b33bbb2e4eed29421ee6cfd0d87e"));
405403

404+
final WriteKind<?> kind = writeEffect.getKind();
406405
assertThat(kind.getWrite(), is(instanceOf(PackageKind.class)));
407406
assertThat(kind.getWrite().getValue(), is(instanceOf(Package.class)));
408407

409-
Package contractPackage = (Package) kind.getWrite().getValue();
410-
408+
final Package contractPackage = (Package) kind.getWrite().getValue();
411409
assertThat(contractPackage.getVersions().get(0).getAddressableEntityHash(), is("addressable-entity-3b6b4d8a3d815372508faa92f3a05dcb50c9c98de05d9a7668cb94b04f1ef9af"));
412410
assertThat(contractPackage.getVersions().get(0).getEntityVersionKey().getEntityVersion(), is(3));
413411
assertThat(contractPackage.getVersions().get(0).getEntityVersionKey().getProtocolVersionMajor(), is(2));
414-
415412
assertThat(contractPackage.getDisabledVersions().size(), is(2));
416413
assertThat(contractPackage.getDisabledVersions().get(1).getAddressableEntityHash(), is("addressable-entity-aab0da01340446cee477f28410f8af5d6e0f3a88fb26c0cafb8d1625f5cc9c10"));
417414
assertThat(contractPackage.getDisabledVersions().get(1).getEntityVersionKey().getEntityVersion(), is(2));
418415
assertThat(contractPackage.getDisabledVersions().get(1).getEntityVersionKey().getProtocolVersionMajor(), is(2));
419-
420416
assertThat(contractPackage.getGroups().size(), is(3));
421417
assertThat(contractPackage.getGroups().get(1), is("group_B"));
422-
423418
assertThat(contractPackage.getLockStatus(), is(Package.PackageStatus.Unlocked));
424-
425419
}
426420

427421
@Test
@@ -457,15 +451,14 @@ void writeKindAddressableEntity() throws JsonProcessingException {
457451
"}";
458452

459453
final Effect writeEffect = new ObjectMapper().readValue(json, Effect.class);
460-
assertThat(writeEffect.getKey(), is("entity-contract-3b6b4d8a3d815372508faa92f3a05dcb50c9c98de05d9a7668cb94b04f1ef9af"));
461-
462-
WriteKind<?> kind = writeEffect.getKind();
454+
assertThat(writeEffect.getKey(), is(instanceOf(AddressableEntityKey.class)));
455+
assertThat(writeEffect.getKey().toString(), is("entity-contract-3b6b4d8a3d815372508faa92f3a05dcb50c9c98de05d9a7668cb94b04f1ef9af"));
463456

457+
final WriteKind<?> kind = writeEffect.getKind();
464458
assertThat(kind.getWrite(), is(instanceOf(AddressableEntityKind.class)));
465459
assertThat(kind.getWrite().getValue(), is(instanceOf(Entity.class)));
466460

467-
Entity entity = (Entity) kind.getWrite().getValue();
468-
461+
final Entity entity = (Entity) kind.getWrite().getValue();
469462
assertThat(entity.getProtocolVersion(), is("2.0.0"));
470463
assertThat(((SmartContract) entity.getEntityAddressKind()).getSmartContract().name(), is(SmartContract.TransactionRuntime.VMCASPERV1.name()));
471464
assertThat(entity.getPackageHash(), is("package-ef39f3794dfde8641acc43a8f63d4c0a72a4b33bbb2e4eed29421ee6cfd0d87e"));
@@ -478,6 +471,5 @@ void writeKindAddressableEntity() throws JsonProcessingException {
478471
assertThat(entity.getActionThresholds().getUpgradeManagement(), is(1));
479472
assertThat(entity.getActionThresholds().getUpgradeManagement(), is(1));
480473
assertThat(entity.getMessageTopics().size(), is(0));
481-
482474
}
483475
}

0 commit comments

Comments
 (0)