diff --git a/api/src/main/java/io/minio/MinioAsyncClient.java b/api/src/main/java/io/minio/MinioAsyncClient.java index 72cc5a484..dbe7d7578 100644 --- a/api/src/main/java/io/minio/MinioAsyncClient.java +++ b/api/src/main/java/io/minio/MinioAsyncClient.java @@ -890,7 +890,7 @@ public String getPresignedObjectUrl(GetPresignedObjectUrlArgs args) throws Minio } Http.QueryParameters queryParams = new Http.QueryParameters(); - if (args.versionId() == null) queryParams.put("versionId", args.versionId()); + if (args.versionId() != null) queryParams.put("versionId", args.versionId()); Credentials credentials = provider == null ? null : provider.fetch(); if (credentials != null && credentials.sessionToken() != null) { diff --git a/functional/TestMinioClient.java b/functional/TestMinioClient.java index 3741f76dd..752b03eab 100644 --- a/functional/TestMinioClient.java +++ b/functional/TestMinioClient.java @@ -126,6 +126,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import okhttp3.Headers; +import okhttp3.HttpUrl; import okhttp3.MultipartBody; import okhttp3.Request; import okhttp3.RequestBody; @@ -1270,6 +1271,23 @@ public void testGetPresignedObjectUrlForGet() throws Exception { .build(), expectedChecksum); + testTags = "[GET, versionId]"; + String versionId = "dummy-version"; + String urlString = + client.getPresignedObjectUrl( + GetPresignedObjectUrlArgs.builder() + .method(Http.Method.GET) + .bucket(bucketName) + .object(objectName) + .versionId(versionId) + .build()); + HttpUrl url = HttpUrl.parse(urlString); + Assertions.assertNotNull(url, "generated url is not valid"); + Assertions.assertEquals( + versionId, + url.queryParameter("versionId"), + "versionId query param does not match the expected value"); + testTags = "[GET, expiry, query params]"; Map queryParams = new HashMap<>(); queryParams.put("response-content-type", "application/json");