api_dev/src/main/java/com/google/appengine/api/blobstore/dev/ServeBlobFilter.java [98:135]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  private void calculateContentRange(BlobInfo blobInfo,
                                     HttpServletRequest request,
                                     HttpServletResponse response) throws RangeFormatException {
    ResponseWrapper responseWrapper = (ResponseWrapper) response;
    String contentRangeHeader = request.getHeader(CONTENT_RANGE_HEADER);
    long blobSize = blobInfo.getSize();
    String rangeHeader = responseWrapper.getBlobRangeHeader();
    if (rangeHeader != null) {
      if (rangeHeader.isEmpty()) {
        response.setHeader(BLOB_RANGE_HEADER, null);
        rangeHeader = null;
      }
    } else {
      rangeHeader = request.getHeader(RANGE_HEADER);
    }

    if (rangeHeader != null) {
      ByteRange byteRange = ByteRange.parse(rangeHeader);
      if (byteRange.hasEnd()) {
        contentRangeHeader = String.format(CONTENT_RANGE_FORMAT,
                                           byteRange.getStart(),
                                           byteRange.getEnd(),
                                           blobSize);
      } else {
        long contentRangeStart;
        if (byteRange.getStart() >= 0) {
          contentRangeStart = byteRange.getStart();
        } else {
          contentRangeStart = blobSize + byteRange.getStart();
        }
        contentRangeHeader = String.format(CONTENT_RANGE_FORMAT,
                                           contentRangeStart,
                                           blobSize - 1,
                                           blobSize);
      }
      response.setHeader(CONTENT_RANGE_HEADER, contentRangeHeader);
    }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



api_dev/src/main/java/com/google/appengine/api/blobstore/dev/ee10/ServeBlobFilter.java [102:139]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  private void calculateContentRange(BlobInfo blobInfo,
                                     HttpServletRequest request,
                                     HttpServletResponse response) throws RangeFormatException {
    ResponseWrapper responseWrapper = (ResponseWrapper) response;
    String contentRangeHeader = request.getHeader(CONTENT_RANGE_HEADER);
    long blobSize = blobInfo.getSize();
    String rangeHeader = responseWrapper.getBlobRangeHeader();
    if (rangeHeader != null) {
      if (rangeHeader.isEmpty()) {
        response.setHeader(BLOB_RANGE_HEADER, null);
        rangeHeader = null;
      }
    } else {
      rangeHeader = request.getHeader(RANGE_HEADER);
    }

    if (rangeHeader != null) {
      ByteRange byteRange = ByteRange.parse(rangeHeader);
      if (byteRange.hasEnd()) {
        contentRangeHeader = String.format(CONTENT_RANGE_FORMAT,
                                           byteRange.getStart(),
                                           byteRange.getEnd(),
                                           blobSize);
      } else {
        long contentRangeStart;
        if (byteRange.getStart() >= 0) {
          contentRangeStart = byteRange.getStart();
        } else {
          contentRangeStart = blobSize + byteRange.getStart();
        }
        contentRangeHeader = String.format(CONTENT_RANGE_FORMAT,
                                           contentRangeStart,
                                           blobSize - 1,
                                           blobSize);
      }
      response.setHeader(CONTENT_RANGE_HEADER, contentRangeHeader);
    }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



