code: public ListObjectsResponse listObjects(ListObjectsRequest request) {
          checkNotNull(request, "request should not be null.");
  
          InternalRequest internalRequest = this.createRequest(request, HttpMethodName.GET);
          if (request.getPrefix() != null) {
              internalRequest.addParameter("prefix", request.getPrefix());
          }
          if (request.getMarker() != null) {
              internalRequest.addParameter("marker", request.getMarker());
          }
          if (request.getDelimiter() != null) {
              internalRequest.addParameter("delimiter", request.getDelimiter());
          }
          if (request.getMaxKeys() >= 0) {
              internalRequest.addParameter("maxKeys", String.valueOf(request.getMaxKeys()));
          }
  
          ListObjectsResponse response = this.invokeHttpClient(internalRequest, ListObjectsResponse.class);
  
          response.setBucketName(request.getBucketName());
          List<BosObjectSummary> contents = response.getContents();
          for (BosObjectSummary object : contents) {
              object.setBucketName(request.getBucketName());
          }
  
          return response;
      }
docs: Returns ListObjectsResponse containing a list of summary information about the objects in the specified buckets.
  List results are <i>always</i> returned in lexicographic (alphabetical) order.
  
  @param request The request object containing all options for listing the objects in a specified bucket.
  @return ListObjectsResponse containing a listing of the objects in the specified bucket, along with any
  other associated information, such as common prefixes (if a delimiter was specified), the original
  request parameters, etc.