/*
* (c) Copyright Reserved EVRYTHNG Limited 2016. All rights reserved.
* Use of this material is subject to license.
* Copying and unauthorised use of this material strictly prohibited.
*/
package com.evrythng.java.wrapper.mapping;
import com.evrythng.java.wrapper.util.JSONUtils;
import com.evrythng.thng.resource.model.store.action.Actions;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import java.io.IOException;
/**
* Base class for deserializers with a type map.
*/
public final class ActionsDeserializer extends Deserializer<Actions> {
private static final long serialVersionUID = 154194441824112030L;
private static final class ActionsImpl extends Actions {
private static final long serialVersionUID = 7999055054999253850L;
}
public ActionsDeserializer() {
super(Actions.class);
}
@Override
public Actions deserialize(final JsonParser jp, final DeserializationContext ctxt)
throws IOException {
ObjectMapper mapper = JSONUtils.OBJECT_MAPPER;
JsonNode node = mapper.readTree(jp);
if (node.isArray()) {
return mapper.readValue(node.toString(), ActionsImpl.class);
} else {
ArrayNode array = mapper.createArrayNode();
array.add(node);
return mapper.readValue(array.toString(), ActionsImpl.class);
}
}
}