From b57c4c43889f721fa0a7c4668bd308f5373d8c00 Mon Sep 17 00:00:00 2001 From: David Smith Date: Fri, 30 May 2014 12:09:15 -0700 Subject: [PATCH] Added a deserializer to BoundHostVolumes. --- .../docker/client/model/BoundHostVolumes.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/main/java/com/kpelykh/docker/client/model/BoundHostVolumes.java b/src/main/java/com/kpelykh/docker/client/model/BoundHostVolumes.java index 9a912439..fbc165c1 100644 --- a/src/main/java/com/kpelykh/docker/client/model/BoundHostVolumes.java +++ b/src/main/java/com/kpelykh/docker/client/model/BoundHostVolumes.java @@ -19,12 +19,19 @@ package com.kpelykh.docker.client.model; import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -32,6 +39,7 @@ * */ @JsonSerialize(using=BoundHostVolumes.Serializer.class) +@JsonDeserialize(using=BoundHostVolumes.Deserializer.class) public class BoundHostVolumes { private static final String[] STRING_ARRAY = new String[0]; private final String[] dests, binds; @@ -89,4 +97,71 @@ public void serialize(final BoundHostVolumes volumes, final JsonGenerator jg, fi volumes.writeVolumes(jg); } } + + public static class Deserializer extends JsonDeserializer { + @Override + public BoundHostVolumes deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + BoundHostVolumes volumes = null; + /* + boolean started = false; + String name, map; + ArrayList specs = new ArrayList(); + + while ( !jsonParser.isClosed() ) { + JsonToken token = jsonParser.nextToken(); + if ( token != null ) { + System.out.println( token ); + if ( !started ) { + if ( JsonToken.START_OBJECT.equals(token) ) { + started = true; + } + else if ( JsonToken.VALUE_NULL.equals(token) ) { + specs = null; + break; + } + } + else { + if ( JsonToken.FIELD_NAME.equals(token) ) { + name = jsonParser.getCurrentName(); + specs.add( name ); + token = jsonParser.nextToken(); + if ( JsonToken.START_OBJECT.equals(token) ) { + jsonParser.skipChildren(); + } + } + else if ( JsonToken.END_OBJECT.equals(token) ) { + break; + } + } + } + else { + break; + } + } + + if ( specs != null ) { + volumes = new BoundHostVolumes( specs ); + } + */ + while ( !jsonParser.isClosed() ) { + JsonToken token = jsonParser.getCurrentToken(); + if (token != null) { + if (JsonToken.START_OBJECT.equals(token) || JsonToken.START_ARRAY.equals(token)) { + jsonParser.skipChildren(); + break; + } + else if ( JsonToken.END_OBJECT.equals(token) || JsonToken.END_ARRAY.equals(token) ) { + break; + } + else { + System.out.println( "Unexpected volume object token: " + token + ", " + + "name=" + jsonParser.getCurrentName() ); + jsonParser.nextToken(); + } + } + } + volumes = new BoundHostVolumes( new ArrayList() ); + return volumes; + } + } }