class ConnectionImpl extends AbstractConnection {

    @Override
    public CloseableIterator<ObjectEntry> listObjects(StorageListRequest request) throws StorageDriverException {
        ParametersChecker.checkParameter(REQUEST_IS_A_MANDATORY_PARAMETER, request);
        ParametersChecker.checkParameter(TENANT_IS_A_MANDATORY_PARAMETER, request.getTenantId());
        ParametersChecker.checkParameter(TYPE_IS_A_MANDATORY_PARAMETER, request.getType());

        VitamRequestBuilder requestBuilder = get()
            .withPath(OBJECTS_PATH + "/" + DataCategory.getByFolder(request.getType()))
            .withHeader(GlobalDataRest.X_TENANT_ID, request.getTenantId())
            .withJsonAccept();

        try {
            Response response = make(requestBuilder);
            try {
                checkStorageException(response);
            } catch (Exception e) {
                StreamUtils.consumeAnyEntityAndClose(response);
                throw e;
            }
            InputStream rawResponseInputStream = response.readEntity(InputStream.class);
            return new ObjectEntryReader(rawResponseInputStream);
        } catch (Exception exc) {
            LOGGER.error(VitamCodeHelper.getLogMessage(VitamCode.STORAGE_TECHNICAL_INTERNAL_ERROR), exc);
            throw new StorageDriverException(getDriverName(), true, exc);
        }
    }

      ConnectionImpl(String driverName, VitamClientFactoryInterface<? extends AbstractConnection> factory);

}