odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonErrorDocumentDeserializer.java [134:233]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if (!codeFound) {
      throw new EntityProviderException(
          EntityProviderException.MISSING_PROPERTY.addContent("Mandatory 'code' property not found.'"));
    }
    if (!messageFound) {
      throw new EntityProviderException(
          EntityProviderException.MISSING_PROPERTY.addContent("Mandatory 'message' property not found.'"));
    }

    reader.endObject();
    return errorContext;
  }

  /**
   * 
   * @param reader
   * @param errorContext
   * @throws IOException
   */
  private void parseInnerError(final JsonReader reader, final ODataErrorContext errorContext) throws IOException {
    JsonToken token = reader.peek();
    if (token == JsonToken.STRING) {
      // implementation for parse content as provided by JsonErrorDocumentProducer
      String innerError = reader.nextString();
      errorContext.setInnerError(innerError);
    } else if (token == JsonToken.BEGIN_OBJECT) {
      // implementation for OData v2 Section 2.2.8.1.2 JSON Error Response
      // (RFC4627 Section 2.2 -> https://www.ietf.org/rfc/rfc4627.txt))
      // currently partial provided
      errorContext.setInnerError(readJson(reader));
    }
  }

  /**
   * 
   * @param reader
   * @return String
   * @throws IOException
   */
  private String readJson(final JsonReader reader) throws IOException {
    StringBuilder sb = new StringBuilder();

    while (reader.hasNext()) {
      JsonToken token = reader.peek();
      if (token == JsonToken.NAME) {
        if (sb.length() > 0) {
          sb.append(",");
        }
        String name = reader.nextName();
        sb.append("\"").append(name).append("\"").append(":");
      } else if (token == JsonToken.BEGIN_OBJECT) {
        reader.beginObject();
        sb.append("{")
            .append(readJson(reader))
            .append("}");
        reader.endObject();
      } else if (token == JsonToken.BEGIN_ARRAY) {
        reader.beginArray();
        sb.append("[")
            .append(readJson(reader))
            .append("]");
        reader.endArray();
      } else {
        sb.append("\"")
            .append(reader.nextString())
            .append("\"");
      }
    }

    return sb.toString();
  }

  /**
   * 
   * @param reader
   * @param errorContext
   * @throws IOException
   * @throws EntityProviderException
   */
  private void parseMessage(final JsonReader reader, final ODataErrorContext errorContext)
      throws IOException, EntityProviderException {

    reader.beginObject();
    boolean valueFound = false;
    boolean langFound = false;
    String currentName;

    while (reader.hasNext()) {
      currentName = reader.nextName();
      if (FormatJson.LANG.equals(currentName)) {
        langFound = true;
        String langValue = getValue(reader);
        if (langValue != null) {
          errorContext.setLocale(getLocale(langValue));
        }
      } else if (FormatJson.VALUE.equals(currentName)) {
        valueFound = true;
        errorContext.setMessage(getValue(reader));
      } else {
        throw new EntityProviderException(EntityProviderException.INVALID_STATE.addContent("Invalid name '" +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonErrorDocumentConsumer.java [119:199]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if (!codeFound) {
      throw new EntityProviderException(
          EntityProviderException.MISSING_PROPERTY.addContent("Mandatory 'code' property not found.'"));
    }
    if (!messageFound) {
      throw new EntityProviderException(
          EntityProviderException.MISSING_PROPERTY.addContent("Mandatory 'message' property not found.'"));
    }

    reader.endObject();
    return errorContext;
  }

  private void parseInnerError(final JsonReader reader, final ODataErrorContext errorContext) throws IOException {
    JsonToken token = reader.peek();
    if (token == JsonToken.STRING) {
      // implementation for parse content as provided by JsonErrorDocumentProducer
      String innerError = reader.nextString();
      errorContext.setInnerError(innerError);
    } else if (token == JsonToken.BEGIN_OBJECT) {
      // implementation for OData v2 Section 2.2.8.1.2 JSON Error Response
      // (RFC4627 Section 2.2 -> https://www.ietf.org/rfc/rfc4627.txt))
      // currently partial provided
      errorContext.setInnerError(readJson(reader));
    }
  }

  private String readJson(final JsonReader reader) throws IOException {
    StringBuilder sb = new StringBuilder();

    while (reader.hasNext()) {
      JsonToken token = reader.peek();
      if (token == JsonToken.NAME) {
        if (sb.length() > 0) {
          sb.append(",");
        }
        String name = reader.nextName();
        sb.append("\"").append(name).append("\"").append(":");
      } else if (token == JsonToken.BEGIN_OBJECT) {
        reader.beginObject();
        sb.append("{")
            .append(readJson(reader))
            .append("}");
        reader.endObject();
      } else if (token == JsonToken.BEGIN_ARRAY) {
        reader.beginArray();
        sb.append("[")
            .append(readJson(reader))
            .append("]");
        reader.endArray();
      } else {
        sb.append("\"")
            .append(reader.nextString())
            .append("\"");
      }
    }

    return sb.toString();
  }

  private void parseMessage(final JsonReader reader, final ODataErrorContext errorContext)
      throws IOException, EntityProviderException {

    reader.beginObject();
    boolean valueFound = false;
    boolean langFound = false;
    String currentName;

    while (reader.hasNext()) {
      currentName = reader.nextName();
      if (FormatJson.LANG.equals(currentName)) {
        langFound = true;
        String langValue = getValue(reader);
        if (langValue != null) {
          errorContext.setLocale(getLocale(langValue));
        }
      } else if (FormatJson.VALUE.equals(currentName)) {
        valueFound = true;
        errorContext.setMessage(getValue(reader));
      } else {
        throw new EntityProviderException(EntityProviderException.INVALID_STATE.addContent("Invalid name '" +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



