Uh oh!
There was an error while loading. Please reload this page.
feat: add preview MultipartUploadClient#listParts - #3359
Conversation
Uh oh!
There was an error while loading. Please reload this page.
| @JsonCreator | ||
| public static StorageClass valueOf(String constant) { | ||
| if (constant == null || constant.isEmpty()) { | ||
| return null; | ||
| } |
There was a problem hiding this comment.
Why is this necessary?
If I remove it and run the following test, the test passes:
privatestaticfinalclassTestXmlObject2 {
@JacksonXmlProperty(localName = "storageClass")
privateStorageClassstorageClass;
}
@TestpublicvoidtestParseStringValueEnum() throwsIOException {
//language=xmlStringxml = "<TestXmlObject2>\n"
+ " <storageClass>STANDARD</storageClass>"
+ "</TestXmlObject2>";
InputStreamin = newByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8));
TestXmlObject2expected = newTestXmlObject2(StorageClass.STANDARD);
TestXmlObject2actual =
xmlObjectParser.parseAndClose(in, StandardCharsets.UTF_8, TestXmlObject2.class);
assertThat(actual).isEqualTo(expected);
}There was a problem hiding this comment.
This is required incase we have a null string. Try to run test https://paste.googleplex.com/5523315682836480 after removing it. You'll get https://paste.googleplex.com/5523315682836480 failure.
There was a problem hiding this comment.
Okay, but that is a deserialization issue not an enum resolution issue.
Enums can't have null values, and changing this method breaks that contract.
The exception explicitly states this fact:
Caused by: java.lang.IllegalArgumentException: Empty enum constants not allowed.
at com.google.cloud.StringEnumType.valueOf(StringEnumType.java:66)
at com.google.cloud.storage.StorageClass.valueOf(StorageClass.java:116)
Here is a PR that makes enum parsing work for xml without modifying any behavior or adding additional annotations: #3377
BenWhitehead
commented
Oct 28, 2025
I'll spend some time tomorrow figuring out the dependencies failing build. |
BenWhitehead
commented
Oct 29, 2025
Applying the following patch to this branch should fix the failing dependency check Index: google-cloud-storage/pom.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml--- a/google-cloud-storage/pom.xml (revision c7549b10d56e40c5576a6a7f471d7cd6f8bba397)+++ b/google-cloud-storage/pom.xml (date 1761754153688)@@ -28,6 +28,14 @@
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>+ <artifactId>jackson-databind</artifactId>+ </dependency>+ <dependency>+ <groupId>com.fasterxml.jackson.core</groupId>+ <artifactId>jackson-annotations</artifactId>+ </dependency>+ <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>The fix can be verified locally by running |
BenWhitehead
commented
Oct 30, 2025
Assuming my fixes in #3377 are included in the ultimate merge train, this PR can be considered done. |
BenWhitehead
left a comment
There was a problem hiding this comment.
ready for merge train
BEGIN_NESTED_COMMIT BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#createMultipartUpload #3356 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#listParts #3359 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#abortMultipartUpload #3361 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#uploadPart #3375 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#completeMultipartUpload #3372 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadSettings END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE END_COMMIT_OVERRIDE END_NESTED_COMMIT Other changes: 1. chore: refactor retrier creation from HttpStorageOptions to StorageOptions #3350 2. chore: refactorings for CreateMultipartUpload #3364 3. chore: fix xml parsing of StringEnumValue's so that the enum contract is not broken #3377 4. chore: add PredefinedAcl#xmlEntry Co-authored-by: BenWhitehead <BenWhitehead@users.noreply.github.com>
BEGIN_NESTED_COMMIT BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#createMultipartUpload #3356 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#listParts #3359 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#abortMultipartUpload #3361 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#uploadPart #3375 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#completeMultipartUpload #3372 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadSettings END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE END_COMMIT_OVERRIDE END_NESTED_COMMIT Other changes: 1. chore: refactor retrier creation from HttpStorageOptions to StorageOptions #3350 2. chore: refactorings for CreateMultipartUpload #3364 3. chore: fix xml parsing of StringEnumValue's so that the enum contract is not broken #3377 4. chore: add PredefinedAcl#xmlEntry Co-authored-by: BenWhitehead <BenWhitehead@users.noreply.github.com>
BEGIN_NESTED_COMMIT BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#createMultipartUpload #3356 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#listParts #3359 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#abortMultipartUpload #3361 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#uploadPart #3375 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadClient#completeMultipartUpload #3372 END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE feat: add preview MultipartUploadSettings END_COMMIT_OVERRIDE BEGIN_COMMIT_OVERRIDE END_COMMIT_OVERRIDE END_NESTED_COMMIT Other changes: 1. chore: refactor retrier creation from HttpStorageOptions to StorageOptions #3350 2. chore: refactorings for CreateMultipartUpload #3364 3. chore: fix xml parsing of StringEnumValue's so that the enum contract is not broken #3377 4. chore: add PredefinedAcl#xmlEntry Co-authored-by: BenWhitehead <BenWhitehead@users.noreply.github.com>
BenWhitehead
commented
Nov 3, 2025
merged to main in #3378 |
Refer: #3348