Skip to content

Commit 7d96c1c

Browse files
authored
Add static qualifiers to json creators for onCompletion enum serialization. (#221)
1 parent e9871a5 commit 7d96c1c

File tree

2 files changed

+47
-3
lines changed

2 files changed

+47
-3
lines changed

src/main/java/com/algorand/algosdk/transaction/Transaction.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,8 +1165,7 @@ public enum OnCompletion {
11651165
this.serializedName = serializedName;
11661166
}
11671167

1168-
@JsonCreator
1169-
public OnCompletion String(String name) {
1168+
public static OnCompletion String(String name) {
11701169
for(OnCompletion oc : values()) {
11711170
if (oc.serializedName.equalsIgnoreCase(name)) {
11721171
return oc;
@@ -1176,7 +1175,7 @@ public OnCompletion String(String name) {
11761175
}
11771176

11781177
@JsonCreator
1179-
public OnCompletion String(int value) {
1178+
public static OnCompletion forValue(int value) {
11801179
for(OnCompletion oc : values()) {
11811180
if (oc.serializedValue == value) {
11821181
return oc;

src/test/java/com/algorand/algosdk/transaction/TestTransaction.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55
import com.algorand.algosdk.mnemonic.Mnemonic;
66
import com.algorand.algosdk.util.Encoder;
77
import com.algorand.algosdk.util.TestUtil;
8+
import com.fasterxml.jackson.annotation.JsonCreator;
9+
import com.fasterxml.jackson.annotation.JsonProperty;
10+
import com.fasterxml.jackson.databind.ObjectMapper;
11+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
812
import org.junit.jupiter.api.Test;
913

1014
import java.io.*;
1115
import java.math.BigInteger;
1216
import java.nio.charset.StandardCharsets;
1317
import java.security.NoSuchAlgorithmException;
1418
import java.util.Arrays;
19+
import java.util.Objects;
1520

1621
import static org.assertj.core.api.Assertions.*;
1722

@@ -65,6 +70,46 @@ public void testSerialization() throws Exception {
6570
assertEqual(o, tx);
6671
}
6772

73+
@Test
74+
public void testPaymentTransactionJsonSerialization() throws Exception {
75+
Address from = new Address("VKM6KSCTDHEM6KGEAMSYCNEGIPFJMHDSEMIRAQLK76CJDIRMMDHKAIRMFQ");
76+
Address to = new Address("CQW2QBBUW5AGFDXMURQBRJN2AM3OHHQWXXI4PEJXRCVTEJ3E5VBTNRTEAE");
77+
Transaction tx = Transaction.PaymentTransactionBuilder()
78+
.sender(from)
79+
.receiver(to)
80+
.amount(100)
81+
.firstValid(301)
82+
.lastValid(1300)
83+
.genesisHash(new Digest())
84+
.build();
85+
86+
ObjectMapper objectMapper = new ObjectMapper();
87+
String transactionJson = objectMapper.writeValueAsString(tx);
88+
final Transaction transaction = objectMapper.readValue(transactionJson, Transaction.class);
89+
assertEqual(tx, transaction);
90+
String transactionJson1 = objectMapper.writeValueAsString(transaction);
91+
assertThat(transactionJson).isEqualTo(transactionJson1);
92+
}
93+
94+
@Test
95+
public void testApplicationTransactionJsonSerialization() throws Exception {
96+
Address from = new Address("VKM6KSCTDHEM6KGEAMSYCNEGIPFJMHDSEMIRAQLK76CJDIRMMDHKAIRMFQ");
97+
Transaction tx = Transaction.ApplicationUpdateTransactionBuilder()
98+
.sender(from)
99+
.applicationId(100000L)
100+
.firstValid(301)
101+
.lastValid(1300)
102+
.genesisHash(new Digest())
103+
.build();
104+
105+
ObjectMapper objectMapper = new ObjectMapper();
106+
String transactionJson = objectMapper.writeValueAsString(tx);
107+
final Transaction transaction = objectMapper.readValue(transactionJson, Transaction.class);
108+
assertEqual(tx, transaction);
109+
String transactionJson1 = objectMapper.writeValueAsString(transaction);
110+
assertThat(transactionJson).isEqualTo(transactionJson1);
111+
}
112+
68113
@Test
69114
public void testSerializationMsgpack() throws Exception {
70115
Address from = new Address("VKM6KSCTDHEM6KGEAMSYCNEGIPFJMHDSEMIRAQLK76CJDIRMMDHKAIRMFQ");

0 commit comments

Comments
 (0)