super(BodyDTO.class);
}
@Override
public BodyDTO deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException {
JsonToken currentToken = jsonParser.getCurrentToken();
if (currentToken == JsonToken.START_OBJECT) {
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME && jsonParser.getText().equals("type")) {
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.VALUE_STRING) {
Body.Type type = Body.Type.valueOf(jsonParser.getText());
jsonParser.nextToken();
switch (type) {
case STRING:
case REGEX:
case JSON:
case XPATH:
if (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME && jsonParser.getText().equals("value")) {
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.VALUE_STRING) {
String value = jsonParser.getText();
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.END_OBJECT) {
return new StringBodyDTO(new StringBody(value, type));
}
}
}
break;
case BINARY:
if (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME && jsonParser.getText().equals("value")) {
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.VALUE_STRING) {
String value = jsonParser.getText();
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.END_OBJECT) {
return new BinaryBodyDTO(new BinaryBody(Base64Converter.base64StringToBytes(value)));
}
}
}
break;
case PARAMETERS:
if (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME && jsonParser.getText().equals("parameters")) {
jsonParser.nextToken();
if (jsonParser.isExpectedStartArrayToken()) {
List<Parameter> parameters = new ArrayList<Parameter>();
boolean inObject = false;
while (inObject || jsonParser.getCurrentToken() != JsonToken.END_ARRAY) {
JsonToken token = jsonParser.nextToken();
switch (token) {
case START_OBJECT:
inObject = true;
break;
case END_OBJECT: