| package com.fasterxml.jackson.core.util; |
| |
| import java.io.IOException; |
| |
| /** |
| * Container object used to contain optional information on content |
| * being parsed, passed to {@link com.fasterxml.jackson.core.JsonParseException} in case of |
| * exception being thrown; this may be useful for caller to display |
| * information on failure. |
| * |
| * @since 2.8 |
| */ |
| public class RequestPayload |
| implements java.io.Serializable // just in case, even though likely included as transient |
| { |
| private static final long serialVersionUID = 1L; |
| |
| // request payload as byte[] |
| protected byte[] _payloadAsBytes; |
| |
| // request payload as String |
| protected CharSequence _payloadAsText; |
| |
| // Charset if the request payload is set in bytes |
| protected String _charset; |
| |
| public RequestPayload(byte[] bytes, String charset) { |
| if (bytes == null) { |
| throw new IllegalArgumentException(); |
| } |
| _payloadAsBytes = bytes; |
| _charset = (charset == null || charset.isEmpty()) ? "UTF-8" : charset; |
| } |
| |
| public RequestPayload(CharSequence str) { |
| if (str == null) { |
| throw new IllegalArgumentException(); |
| } |
| _payloadAsText = str; |
| } |
| |
| /** |
| * Returns the raw request payload object i.e, either byte[] or String |
| * |
| * @return Object which is a raw request payload i.e, either byte[] or |
| * String |
| */ |
| public Object getRawPayload() { |
| if (_payloadAsBytes != null) { |
| return _payloadAsBytes; |
| } |
| |
| return _payloadAsText; |
| } |
| |
| @Override |
| public String toString() { |
| if (_payloadAsBytes != null) { |
| try { |
| return new String(_payloadAsBytes, _charset); |
| } catch (IOException e) { |
| throw new RuntimeException(e); |
| } |
| } |
| return _payloadAsText.toString(); |
| } |
| } |