From 5ce4bea2eda03f777d4badae02a6b9fc13bd4798 Mon Sep 17 00:00:00 2001 From: dorman <37854724+dormanze@users.noreply.github.com> Date: Thu, 16 Jan 2025 17:50:51 +0800 Subject: [PATCH] Update missing XML fields in AndOperator, Expiration and RuleFilter (#1613) --- .../java/io/minio/messages/AndOperator.java | 33 +++++++++++++++++++ .../java/io/minio/messages/Expiration.java | 19 +++++++++++ .../java/io/minio/messages/RuleFilter.java | 26 +++++++++++++++ 3 files changed, 78 insertions(+) diff --git a/api/src/main/java/io/minio/messages/AndOperator.java b/api/src/main/java/io/minio/messages/AndOperator.java index 7824254e6..370a7acc4 100644 --- a/api/src/main/java/io/minio/messages/AndOperator.java +++ b/api/src/main/java/io/minio/messages/AndOperator.java @@ -31,6 +31,12 @@ public class AndOperator { @Convert(PrefixConverter.class) private String prefix; + @Element(name = "ObjectSizeLessThan", required = false) + private Integer objectSizeLessThan; + + @Element(name = "ObjectSizeGreaterThan", required = false) + private Integer objectSizeGreaterThan; + @ElementMap( attribute = false, entry = "Tag", @@ -67,10 +73,37 @@ public AndOperator( this.tags = (tags != null) ? Collections.unmodifiableMap(tags) : null; } + public AndOperator( + @Nullable @Element(name = "Prefix", required = false) String prefix, + @Nullable + @ElementMap( + attribute = false, + entry = "Tag", + inline = true, + key = "Key", + value = "Value", + required = false) + Map<String, String> tags, + @Nullable @Element(name = "ObjectSizeLessThan", required = false) Integer objectSizeLessThan, + @Nullable @Element(name = "ObjectSizeGreaterThan", required = false) + Integer objectSizeGreaterThan) { + this(prefix, tags); + this.objectSizeLessThan = objectSizeLessThan; + this.objectSizeGreaterThan = objectSizeGreaterThan; + } + public String prefix() { return this.prefix; } + public Integer objectSizeLessThan() { + return this.objectSizeLessThan; + } + + public Integer objectSizeGreaterThan() { + return this.objectSizeGreaterThan; + } + public Map<String, String> tags() { return this.tags; } diff --git a/api/src/main/java/io/minio/messages/Expiration.java b/api/src/main/java/io/minio/messages/Expiration.java index f269cd4d7..a410b7929 100644 --- a/api/src/main/java/io/minio/messages/Expiration.java +++ b/api/src/main/java/io/minio/messages/Expiration.java @@ -27,6 +27,9 @@ public class Expiration extends DateDays { @Element(name = "ExpiredObjectDeleteMarker", required = false) private Boolean expiredObjectDeleteMarker; + @Element(name = "ExpiredObjectAllVersions", required = false) + private Boolean expiredObjectAllVersions; + public Expiration( @Nullable @Element(name = "Date", required = false) ResponseDate date, @Nullable @Element(name = "Days", required = false) Integer days, @@ -51,7 +54,23 @@ public Expiration(ZonedDateTime date, Integer days, Boolean expiredObjectDeleteM this(date == null ? null : new ResponseDate(date), days, expiredObjectDeleteMarker); } + public Expiration( + @Nullable @Element(name = "Date", required = false) ResponseDate date, + @Nullable @Element(name = "Days", required = false) Integer days, + @Nullable @Element(name = "ExpiredObjectDeleteMarker", required = false) + Boolean expiredObjectDeleteMarker, + @Element(name = "ExpiredObjectAllVersions", required = false) + Boolean expiredObjectAllVersions) { + this(date, days, expiredObjectDeleteMarker); + this.expiredObjectAllVersions = expiredObjectAllVersions; + } + public Boolean expiredObjectDeleteMarker() { return expiredObjectDeleteMarker; } + + /** This is MinIO specific extension. */ + public Boolean expiredObjectAllVersions() { + return expiredObjectAllVersions; + } } diff --git a/api/src/main/java/io/minio/messages/RuleFilter.java b/api/src/main/java/io/minio/messages/RuleFilter.java index 413b62f9f..f6de06f09 100644 --- a/api/src/main/java/io/minio/messages/RuleFilter.java +++ b/api/src/main/java/io/minio/messages/RuleFilter.java @@ -38,6 +38,12 @@ public class RuleFilter { @Element(name = "Tag", required = false) private Tag tag; + @Element(name = "ObjectSizeLessThan", required = false) + private Integer objectSizeLessThan; + + @Element(name = "ObjectSizeGreaterThan", required = false) + private Integer objectSizeGreaterThan; + public RuleFilter( @Nullable @Element(name = "And", required = false) AndOperator andOperator, @Nullable @Element(name = "Prefix", required = false) String prefix, @@ -51,6 +57,18 @@ public RuleFilter( } } + public RuleFilter( + @Nullable @Element(name = "And", required = false) AndOperator andOperator, + @Nullable @Element(name = "Prefix", required = false) String prefix, + @Nullable @Element(name = "Tag", required = false) Tag tag, + @Nullable @Element(name = "ObjectSizeLessThan", required = false) Integer objectSizeLessThan, + @Nullable @Element(name = "ObjectSizeGreaterThan", required = false) + Integer objectSizeGreaterThan) { + this(andOperator, prefix, tag); + this.objectSizeLessThan = objectSizeLessThan; + this.objectSizeGreaterThan = objectSizeGreaterThan; + } + public RuleFilter(@Nonnull AndOperator andOperator) { this.andOperator = Objects.requireNonNull(andOperator, "And operator must not be null"); } @@ -74,4 +92,12 @@ public String prefix() { public Tag tag() { return this.tag; } + + public Integer objectSizeLessThan() { + return this.objectSizeLessThan; + } + + public Integer objectSizeGreaterThan() { + return this.objectSizeGreaterThan; + } }