-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathTransactionTargetSerializer.java
More file actions
65 lines (56 loc) · 2.33 KB
/
TransactionTargetSerializer.java
File metadata and controls
65 lines (56 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.casper.sdk.jackson.serializer;
import com.casper.sdk.model.transaction.target.Native;
import com.casper.sdk.model.transaction.target.Session;
import com.casper.sdk.model.transaction.target.Stored;
import com.casper.sdk.model.transaction.target.TransactionTarget;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.syntifi.crypto.key.encdec.Hex;
import java.io.IOException;
import static com.casper.sdk.model.transaction.target.TargetConstants.*;
/**
* Serializes {@link TransactionTarget} objects.
*
* @author carl@stormeye.co.uk
*/
public class TransactionTargetSerializer extends JsonSerializer<TransactionTarget> {
@Override
public void serialize(final TransactionTarget value, final JsonGenerator gen, final SerializerProvider serializers) throws IOException {
if (value instanceof Session) {
serializeSession((Session) value, gen);
} else if (value instanceof Native) {
gen.writeString(NATIVE);
} else if (value instanceof Stored) {
serializeStored((Stored) value, gen);
} else {
throw new IllegalArgumentException("Unknown transaction target type: " + value.getClass().getName());
}
}
private static void serializeStored(final Stored value, final JsonGenerator gen) throws IOException {
gen.writeStartObject();
gen.writeFieldName(STORED);
gen.writeStartObject();
gen.writeFieldName(ID);
gen.writeObject(value.getId());
if (value.getRuntime() != null) {
gen.writeFieldName(RUNTIME);
value.getRuntime().toJson(gen);
}
gen.writeEndObject();
gen.writeEndObject();
}
private static void serializeSession(final Session value, final JsonGenerator gen) throws IOException {
gen.writeStartObject();
gen.writeFieldName(SESSION);
gen.writeStartObject();
gen.writeBooleanField(IS_INSTALL_UPGRADE, value.isInstallUpgrade());
if (value.getRuntime() != null) {
gen.writeFieldName(RUNTIME);
value.getRuntime().toJson(gen);
}
gen.writeStringField(MODULE_BYTES, Hex.encode(value.getModuleBytes()));
gen.writeEndObject();
gen.writeEndObject();
}
}