package alien4cloud.json.deserializer;
import org.alien4cloud.tosca.model.definitions.AbstractPropertyValue;
import org.alien4cloud.tosca.model.definitions.ComplexPropertyValue;
import org.alien4cloud.tosca.model.definitions.FunctionPropertyValue;
import org.alien4cloud.tosca.model.definitions.ListPropertyValue;
import org.alien4cloud.tosca.model.definitions.ScalarPropertyValue;
import com.fasterxml.jackson.databind.node.JsonNodeType;
/**
* Custom deserializer to handle multiple IOperationParameter types.
*/
public class PropertyValueDeserializer extends AbstractDiscriminatorPolymorphicDeserializer<AbstractPropertyValue> {
public PropertyValueDeserializer() {
super(AbstractPropertyValue.class);
addToRegistry("function", FunctionPropertyValue.class);
// let's handle null with a scalar deserializer.
addToRegistry("value", JsonNodeType.NULL.toString(), ScalarPropertyValue.class);
addToRegistry("value", JsonNodeType.STRING.toString(), ScalarPropertyValue.class);
addToRegistry("value", JsonNodeType.ARRAY.toString(), ListPropertyValue.class);
addToRegistry("value", JsonNodeType.OBJECT.toString(), ComplexPropertyValue.class);
setValueStringClass(ScalarPropertyValue.class);
}
}