Skip to content

Commit d54f0c3

Browse files
committed
#110 gson serialization and deserialization with unit tests
1 parent 2d62d5a commit d54f0c3

4 files changed

Lines changed: 49 additions & 2 deletions

File tree

epics-vtype/vtype-gson/src/main/java/org/epics/vtype/gson/VTypeToGson.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.epics.vtype.VNumber;
1717
import org.epics.vtype.VNumberArray;
1818
import org.epics.vtype.VString;
19+
import org.epics.vtype.VStringArray;
1920
import org.epics.vtype.VType;
2021

2122
import java.util.List;
@@ -56,6 +57,8 @@ static VType toVType(JsonElement json) {
5657
return toVNumberArray(json);
5758
case "VString":
5859
return toVString(json);
60+
case "VStringArray":
61+
return toVStringArray(json);
5962
case "VEnum":
6063
return toVEnum(json);
6164
default:
@@ -78,6 +81,8 @@ static JsonElement toJson(VType vType) {
7881
return toJson((VNumberArray) vType);
7982
} else if (vType instanceof VString) {
8083
return toJson((VString) vType);
84+
} else if (vType instanceof VStringArray) {
85+
return toJson((VStringArray) vType);
8186
} else if (vType instanceof VEnum) {
8287
return toJson((VEnum) vType);
8388
}
@@ -132,6 +137,12 @@ static VString toVString(JsonElement json) {
132137
VTypeGsonMapper mapper = new VTypeGsonMapper(json.getAsJsonObject());
133138
return VString.of(mapper.getString("value"), mapper.getAlarm(), mapper.getTime());
134139
}
140+
141+
static VStringArray toVStringArray(JsonElement json) {
142+
VTypeGsonMapper mapper = new VTypeGsonMapper(json.getAsJsonObject());
143+
return VStringArray.of(mapper.getListString("value"), mapper.getAlarm(), mapper.getTime());
144+
145+
}
135146

136147
static VEnum toVEnum(JsonElement json) {
137148
VTypeGsonMapper mapper = new VTypeGsonMapper(json.getAsJsonObject());
@@ -207,7 +218,16 @@ static JsonElement toJson(VString vString) {
207218
.addTime(vString.getTime())
208219
.build();
209220
}
210-
221+
222+
static JsonElement toJson(VStringArray vStringArray) {
223+
return new GsonVTypeBuilder()
224+
.addType(vStringArray)
225+
.addListString("value", vStringArray.getData())
226+
.addAlarm(vStringArray.getAlarm())
227+
.addTime(vStringArray.getTime())
228+
.build();
229+
}
230+
211231
static JsonElement toJson(VEnum vEnum) {
212232
return new GsonVTypeBuilder()
213233
.addType(vEnum)

epics-vtype/vtype-gson/src/test/java/org/epics/vtype/gson/VTypeToGsonTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.epics.vtype.VShort;
5252
import org.epics.vtype.VShortArray;
5353
import org.epics.vtype.VString;
54+
import org.epics.vtype.VStringArray;
5455
import org.epics.vtype.VType;
5556
import org.epics.vtype.VUByte;
5657
import org.epics.vtype.VUByteArray;
@@ -290,6 +291,13 @@ public void vByteArray1() {
290291
testDeserialization("VByteArray1a", vByteArray1);
291292
}
292293

294+
@Test
295+
public void vStringArray1() {
296+
VStringArray vStringArray1 = VStringArray.of(List.of(new String[] {"a", "b", "c"}), Alarm.none(), Time.of(Instant.ofEpochSecond(0, 0)));
297+
testSerialization(vStringArray1, "vStringArray1");
298+
testDeserialization("vStringArray1", vStringArray1);
299+
}
300+
293301
/**
294302
* Tests serialization and de-serialization of a Double.NaN. See {@link GsonVTypeBuilder#add} and
295303
* {@link VTypeToGson#toVNumber}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"type":{
3+
"name":"VStringArray",
4+
"version":1
5+
},
6+
"value":[
7+
"a",
8+
"b",
9+
"c"
10+
],
11+
"alarm":{
12+
"severity":"NONE",
13+
"status":"NONE",
14+
"name":"None"
15+
},
16+
"time":{
17+
"unixSec":0,
18+
"nanoSec":0
19+
}
20+
}

epics-vtype/vtype-json/src/main/java/org/epics/vtype/json/VTypeToJsonV1.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ static VNumberArray toVNumberArray(JsonObject json) {
178178
}
179179
return VNumberArray.of(value, mapper.getAlarm(), mapper.getTime(), mapper.getDisplay());
180180
}
181-
182181

183182
static VStringArray toVStringArray(JsonObject json) {
184183
VTypeJsonMapper mapper = new VTypeJsonMapper(json);

0 commit comments

Comments
 (0)