11package com .github .dockerjava .api .model ;
22
3- import java .io .IOException ;
43import java .io .Serializable ;
5- import java .util .ArrayList ;
6- import java .util .Iterator ;
74import java .util .List ;
85import java .util .Map ;
6+ import java .util .stream .Collectors ;
7+ import java .util .stream .Stream ;
98
10- import com .fasterxml .jackson .core .JsonGenerator ;
11- import com .fasterxml .jackson .core .JsonParser ;
12- import com .fasterxml .jackson .core .JsonProcessingException ;
13- import com .fasterxml .jackson .core .ObjectCodec ;
14- import com .fasterxml .jackson .databind .DeserializationContext ;
15- import com .fasterxml .jackson .databind .JsonDeserializer ;
16- import com .fasterxml .jackson .databind .JsonNode ;
17- import com .fasterxml .jackson .databind .JsonSerializer ;
18- import com .fasterxml .jackson .databind .SerializerProvider ;
19- import com .fasterxml .jackson .databind .annotation .JsonDeserialize ;
20- import com .fasterxml .jackson .databind .annotation .JsonSerialize ;
21- import com .fasterxml .jackson .databind .node .NullNode ;
9+ import com .fasterxml .jackson .annotation .JsonCreator ;
10+ import com .fasterxml .jackson .annotation .JsonValue ;
2211
23- @ JsonSerialize (using = ExposedPorts .Serializer .class )
24- @ JsonDeserialize (using = ExposedPorts .Deserializer .class )
2512public class ExposedPorts implements Serializable {
2613 private static final long serialVersionUID = 1L ;
2714
@@ -39,40 +26,19 @@ public ExposedPort[] getExposedPorts() {
3926 return exposedPorts ;
4027 }
4128
42- public static class Serializer extends JsonSerializer <ExposedPorts > {
43-
44- @ Override
45- public void serialize (ExposedPorts exposedPorts , JsonGenerator jsonGen , SerializerProvider serProvider )
46- throws IOException , JsonProcessingException {
47-
48- jsonGen .writeStartObject ();
49- for (ExposedPort exposedPort : exposedPorts .getExposedPorts ()) {
50- jsonGen .writeFieldName (exposedPort .toString ());
51- jsonGen .writeStartObject ();
52- jsonGen .writeEndObject ();
53- }
54- jsonGen .writeEndObject ();
55- }
56-
29+ @ JsonCreator
30+ public static ExposedPorts fromPrimitive (Map <String , Object > object ) {
31+ return new ExposedPorts (
32+ object .keySet ().stream ().map (ExposedPort ::parse ).toArray (ExposedPort []::new )
33+ );
5734 }
5835
59- public static class Deserializer extends JsonDeserializer <ExposedPorts > {
60- @ Override
61- public ExposedPorts deserialize (JsonParser jsonParser , DeserializationContext deserializationContext )
62- throws IOException , JsonProcessingException {
63-
64- List <ExposedPort > exposedPorts = new ArrayList <>();
65- ObjectCodec oc = jsonParser .getCodec ();
66- JsonNode node = oc .readTree (jsonParser );
67- for (Iterator <Map .Entry <String , JsonNode >> it = node .fields (); it .hasNext ();) {
68-
69- Map .Entry <String , JsonNode > field = it .next ();
70- if (!field .getValue ().equals (NullNode .getInstance ())) {
71- exposedPorts .add (ExposedPort .parse (field .getKey ()));
72- }
73- }
74- return new ExposedPorts (exposedPorts .toArray (new ExposedPort [0 ]));
75- }
36+ @ JsonValue
37+ public Map <String , Object > toPrimitive () {
38+ return Stream .of (exposedPorts ).collect (Collectors .toMap (
39+ ExposedPort ::toString ,
40+ __ -> new Object ()
41+ ));
7642 }
7743
7844}
0 commit comments