From 59865e6178192871d4ad5cbbe7d655df46f96574 Mon Sep 17 00:00:00 2001 From: zekaifeng <37854724+dormanze@users.noreply.github.com> Date: Wed, 15 Jan 2025 20:28:07 +0800 Subject: [PATCH 1/5] Add param of LifecycleConfiguration --- .../java/io/minio/messages/AndOperator.java | 19 +++++++++++++++ .../java/io/minio/messages/Expiration.java | 24 ++++++++++++++++--- .../java/io/minio/messages/RuleFilter.java | 19 +++++++++++++++ examples/SetBucketLifecycle.java | 2 +- examples/SetBucketReplication.java | 2 +- functional/FunctionalTest.java | 14 +++++------ 6 files changed, 68 insertions(+), 12 deletions(-) diff --git a/api/src/main/java/io/minio/messages/AndOperator.java b/api/src/main/java/io/minio/messages/AndOperator.java index 7824254e6..d60f66f2d 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", @@ -42,6 +48,9 @@ public class AndOperator { public AndOperator( @Nullable @Element(name = "Prefix", required = false) String prefix, + @Nullable @Element(name = "ObjectSizeLessThan", required = false) Integer objectSizeLessThan, + @Nullable @Element(name = "ObjectSizeGreaterThan", required = false) + Integer objectSizeGreaterThan, @Nullable @ElementMap( attribute = false, @@ -64,6 +73,8 @@ public AndOperator( } this.prefix = prefix; + this.objectSizeLessThan = objectSizeLessThan; + this.objectSizeGreaterThan = objectSizeGreaterThan; this.tags = (tags != null) ? Collections.unmodifiableMap(tags) : null; } @@ -71,6 +82,14 @@ public String prefix() { return this.prefix; } + public Integer objectSizeLessThan() { + return this.objectSizeLessThan; + } + + public Integer objectSizeGreaterThan() { + return this.objectSizeGreaterThan; + } + public Map 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..bccc50c5d 100644 --- a/api/src/main/java/io/minio/messages/Expiration.java +++ b/api/src/main/java/io/minio/messages/Expiration.java @@ -27,11 +27,16 @@ 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, @Nullable @Element(name = "ExpiredObjectDeleteMarker", required = false) - Boolean expiredObjectDeleteMarker) { + Boolean expiredObjectDeleteMarker, + @Nullable @Element(name = "ExpiredObjectAllVersions", required = false) + Boolean expiredObjectAllVersions) { if (expiredObjectDeleteMarker != null) { if (date != null || days != null) { throw new IllegalArgumentException( @@ -45,13 +50,26 @@ public Expiration( } this.expiredObjectDeleteMarker = expiredObjectDeleteMarker; + this.expiredObjectAllVersions = expiredObjectAllVersions; } - public Expiration(ZonedDateTime date, Integer days, Boolean expiredObjectDeleteMarker) { - this(date == null ? null : new ResponseDate(date), days, expiredObjectDeleteMarker); + public Expiration( + ZonedDateTime date, + Integer days, + Boolean expiredObjectDeleteMarker, + Boolean expiredObjectAllVersions) { + this( + date == null ? null : new ResponseDate(date), + days, + expiredObjectDeleteMarker, + expiredObjectAllVersions); } public Boolean expiredObjectDeleteMarker() { return expiredObjectDeleteMarker; } + + 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..5327d8caf 100644 --- a/api/src/main/java/io/minio/messages/RuleFilter.java +++ b/api/src/main/java/io/minio/messages/RuleFilter.java @@ -38,14 +38,25 @@ 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, + @Nullable @Element(name = "ObjectSizeLessThan", required = false) Integer objectSizeLessThan, + @Nullable @Element(name = "ObjectSizeGreaterThan", required = false) + Integer objectSizeGreaterThan, @Nullable @Element(name = "Tag", required = false) Tag tag) { if (andOperator != null ^ prefix != null ^ tag != null) { this.andOperator = andOperator; this.prefix = prefix; this.tag = tag; + this.objectSizeLessThan = objectSizeLessThan; + this.objectSizeGreaterThan = objectSizeGreaterThan; } else { throw new IllegalArgumentException("Only one of And, Prefix or Tag must be set"); } @@ -74,4 +85,12 @@ public String prefix() { public Tag tag() { return this.tag; } + + public Integer objectSizeLessThan() { + return this.objectSizeLessThan; + } + + public Integer objectSizeGreaterThan() { + return this.objectSizeGreaterThan; + } } diff --git a/examples/SetBucketLifecycle.java b/examples/SetBucketLifecycle.java index 2b512a5c1..032caf419 100644 --- a/examples/SetBucketLifecycle.java +++ b/examples/SetBucketLifecycle.java @@ -53,7 +53,7 @@ public static void main(String[] args) new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null), + new Expiration((ZonedDateTime) null, 365, null, null), new RuleFilter("logs/"), "rule2", null, diff --git a/examples/SetBucketReplication.java b/examples/SetBucketReplication.java index 5f35de2ce..1c44f0f73 100644 --- a/examples/SetBucketReplication.java +++ b/examples/SetBucketReplication.java @@ -61,7 +61,7 @@ public static void main(String[] args) new ReplicationDestination( null, null, "REPLACE-WITH-ACTUAL-DESTINATION-BUCKET-ARN", null, null, null, null), null, - new RuleFilter(new AndOperator("TaxDocs", tags)), + new RuleFilter(new AndOperator("TaxDocs", null, null, tags)), "rule1", null, 1, diff --git a/functional/FunctionalTest.java b/functional/FunctionalTest.java index e7d764515..47f03e9a5 100644 --- a/functional/FunctionalTest.java +++ b/functional/FunctionalTest.java @@ -2795,7 +2795,7 @@ public static void setBucketLifecycle() throws Exception { new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null), + new Expiration((ZonedDateTime) null, 365, null, null), new RuleFilter("logs/"), "rule2", null, @@ -2828,7 +2828,7 @@ public static void deleteBucketLifecycle() throws Exception { new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null), + new Expiration((ZonedDateTime) null, 365, null, null), new RuleFilter("logs/"), "rule2", null, @@ -2864,7 +2864,7 @@ public static void getBucketLifecycle() throws Exception { new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null), + new Expiration((ZonedDateTime) null, 365, null, null), new RuleFilter("logs/"), "rule2", null, @@ -2901,7 +2901,7 @@ public static void getBucketLifecycle() throws Exception { new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null), + new Expiration((ZonedDateTime) null, 365, null, null), new RuleFilter(""), null, null, @@ -3522,7 +3522,7 @@ public static void setBucketReplication() throws Exception { new DeleteMarkerReplication(Status.DISABLED), new ReplicationDestination(null, null, replicationBucketArn, null, null, null, null), null, - new RuleFilter(new AndOperator("TaxDocs", tags)), + new RuleFilter(new AndOperator("TaxDocs", null, null, tags)), "rule1", null, 1, @@ -3571,7 +3571,7 @@ public static void getBucketReplication() throws Exception { new DeleteMarkerReplication(Status.DISABLED), new ReplicationDestination(null, null, replicationBucketArn, null, null, null, null), null, - new RuleFilter(new AndOperator("TaxDocs", tags)), + new RuleFilter(new AndOperator("TaxDocs", null, null, tags)), "rule1", null, 1, @@ -3621,7 +3621,7 @@ public static void deleteBucketReplication() throws Exception { new DeleteMarkerReplication(Status.DISABLED), new ReplicationDestination(null, null, replicationBucketArn, null, null, null, null), null, - new RuleFilter(new AndOperator("TaxDocs", tags)), + new RuleFilter(new AndOperator("TaxDocs", null, null, tags)), "rule1", null, 1, From eed92de31690c8e39f80a70c5ffc30e46c8afad5 Mon Sep 17 00:00:00 2001 From: zekaifeng <37854724+dormanze@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:04:21 +0800 Subject: [PATCH 2/5] Resolve review comments --- .../java/io/minio/messages/AndOperator.java | 27 +++++++++++++++++++ .../java/io/minio/messages/Expiration.java | 5 ++++ .../java/io/minio/messages/RuleFilter.java | 13 +++++++++ examples/SetBucketLifecycle.java | 2 +- examples/SetBucketReplication.java | 2 +- functional/FunctionalTest.java | 14 +++++----- 6 files changed, 54 insertions(+), 9 deletions(-) diff --git a/api/src/main/java/io/minio/messages/AndOperator.java b/api/src/main/java/io/minio/messages/AndOperator.java index d60f66f2d..e14e64fce 100644 --- a/api/src/main/java/io/minio/messages/AndOperator.java +++ b/api/src/main/java/io/minio/messages/AndOperator.java @@ -46,6 +46,33 @@ public class AndOperator { required = false) private Map tags; + 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 tags) { + if (prefix == null && tags == null) { + throw new IllegalArgumentException("At least Prefix or Tags must be set"); + } + + if (tags != null) { + for (String key : tags.keySet()) { + if (key.isEmpty()) { + throw new IllegalArgumentException("Tags must not contain empty key"); + } + } + } + + this.prefix = prefix; + this.tags = (tags != null) ? Collections.unmodifiableMap(tags) : null; + } + public AndOperator( @Nullable @Element(name = "Prefix", required = false) String prefix, @Nullable @Element(name = "ObjectSizeLessThan", required = false) Integer objectSizeLessThan, diff --git a/api/src/main/java/io/minio/messages/Expiration.java b/api/src/main/java/io/minio/messages/Expiration.java index bccc50c5d..d24fe2984 100644 --- a/api/src/main/java/io/minio/messages/Expiration.java +++ b/api/src/main/java/io/minio/messages/Expiration.java @@ -53,6 +53,10 @@ public Expiration( this.expiredObjectAllVersions = expiredObjectAllVersions; } + public Expiration(ZonedDateTime date, Integer days, Boolean expiredObjectDeleteMarker) { + this(date == null ? null : new ResponseDate(date), days, expiredObjectDeleteMarker, null); + } + public Expiration( ZonedDateTime date, Integer days, @@ -69,6 +73,7 @@ public Boolean expiredObjectDeleteMarker() { return expiredObjectDeleteMarker; } + /** Allow setting ILM rule for removing all versions of expired objects from command line. */ 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 5327d8caf..95c774dd9 100644 --- a/api/src/main/java/io/minio/messages/RuleFilter.java +++ b/api/src/main/java/io/minio/messages/RuleFilter.java @@ -44,6 +44,19 @@ public class RuleFilter { @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, + @Nullable @Element(name = "Tag", required = false) Tag tag) { + if (andOperator != null ^ prefix != null ^ tag != null) { + this.andOperator = andOperator; + this.prefix = prefix; + this.tag = tag; + } else { + throw new IllegalArgumentException("Only one of And, Prefix or Tag must be set"); + } + } + public RuleFilter( @Nullable @Element(name = "And", required = false) AndOperator andOperator, @Nullable @Element(name = "Prefix", required = false) String prefix, diff --git a/examples/SetBucketLifecycle.java b/examples/SetBucketLifecycle.java index 032caf419..2b512a5c1 100644 --- a/examples/SetBucketLifecycle.java +++ b/examples/SetBucketLifecycle.java @@ -53,7 +53,7 @@ public static void main(String[] args) new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null, null), + new Expiration((ZonedDateTime) null, 365, null), new RuleFilter("logs/"), "rule2", null, diff --git a/examples/SetBucketReplication.java b/examples/SetBucketReplication.java index 1c44f0f73..5f35de2ce 100644 --- a/examples/SetBucketReplication.java +++ b/examples/SetBucketReplication.java @@ -61,7 +61,7 @@ public static void main(String[] args) new ReplicationDestination( null, null, "REPLACE-WITH-ACTUAL-DESTINATION-BUCKET-ARN", null, null, null, null), null, - new RuleFilter(new AndOperator("TaxDocs", null, null, tags)), + new RuleFilter(new AndOperator("TaxDocs", tags)), "rule1", null, 1, diff --git a/functional/FunctionalTest.java b/functional/FunctionalTest.java index 47f03e9a5..e7d764515 100644 --- a/functional/FunctionalTest.java +++ b/functional/FunctionalTest.java @@ -2795,7 +2795,7 @@ public static void setBucketLifecycle() throws Exception { new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null, null), + new Expiration((ZonedDateTime) null, 365, null), new RuleFilter("logs/"), "rule2", null, @@ -2828,7 +2828,7 @@ public static void deleteBucketLifecycle() throws Exception { new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null, null), + new Expiration((ZonedDateTime) null, 365, null), new RuleFilter("logs/"), "rule2", null, @@ -2864,7 +2864,7 @@ public static void getBucketLifecycle() throws Exception { new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null, null), + new Expiration((ZonedDateTime) null, 365, null), new RuleFilter("logs/"), "rule2", null, @@ -2901,7 +2901,7 @@ public static void getBucketLifecycle() throws Exception { new LifecycleRule( Status.ENABLED, null, - new Expiration((ZonedDateTime) null, 365, null, null), + new Expiration((ZonedDateTime) null, 365, null), new RuleFilter(""), null, null, @@ -3522,7 +3522,7 @@ public static void setBucketReplication() throws Exception { new DeleteMarkerReplication(Status.DISABLED), new ReplicationDestination(null, null, replicationBucketArn, null, null, null, null), null, - new RuleFilter(new AndOperator("TaxDocs", null, null, tags)), + new RuleFilter(new AndOperator("TaxDocs", tags)), "rule1", null, 1, @@ -3571,7 +3571,7 @@ public static void getBucketReplication() throws Exception { new DeleteMarkerReplication(Status.DISABLED), new ReplicationDestination(null, null, replicationBucketArn, null, null, null, null), null, - new RuleFilter(new AndOperator("TaxDocs", null, null, tags)), + new RuleFilter(new AndOperator("TaxDocs", tags)), "rule1", null, 1, @@ -3621,7 +3621,7 @@ public static void deleteBucketReplication() throws Exception { new DeleteMarkerReplication(Status.DISABLED), new ReplicationDestination(null, null, replicationBucketArn, null, null, null, null), null, - new RuleFilter(new AndOperator("TaxDocs", null, null, tags)), + new RuleFilter(new AndOperator("TaxDocs", tags)), "rule1", null, 1, From bfdc0ee90ee0d332687f7938f97cc334a3948596 Mon Sep 17 00:00:00 2001 From: zekaifeng <37854724+dormanze@users.noreply.github.com> Date: Thu, 16 Jan 2025 15:34:22 +0800 Subject: [PATCH 3/5] Resolve review comments --- api/src/main/java/io/minio/messages/AndOperator.java | 8 ++++---- api/src/main/java/io/minio/messages/RuleFilter.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/api/src/main/java/io/minio/messages/AndOperator.java b/api/src/main/java/io/minio/messages/AndOperator.java index e14e64fce..1e534b032 100644 --- a/api/src/main/java/io/minio/messages/AndOperator.java +++ b/api/src/main/java/io/minio/messages/AndOperator.java @@ -75,9 +75,6 @@ public AndOperator( public AndOperator( @Nullable @Element(name = "Prefix", required = false) String prefix, - @Nullable @Element(name = "ObjectSizeLessThan", required = false) Integer objectSizeLessThan, - @Nullable @Element(name = "ObjectSizeGreaterThan", required = false) - Integer objectSizeGreaterThan, @Nullable @ElementMap( attribute = false, @@ -86,7 +83,10 @@ public AndOperator( key = "Key", value = "Value", required = false) - Map tags) { + Map tags, + @Nullable @Element(name = "ObjectSizeLessThan", required = false) Integer objectSizeLessThan, + @Nullable @Element(name = "ObjectSizeGreaterThan", required = false) + Integer objectSizeGreaterThan) { if (prefix == null && tags == null) { throw new IllegalArgumentException("At least Prefix or Tags must be set"); } diff --git a/api/src/main/java/io/minio/messages/RuleFilter.java b/api/src/main/java/io/minio/messages/RuleFilter.java index 95c774dd9..8474cc6e1 100644 --- a/api/src/main/java/io/minio/messages/RuleFilter.java +++ b/api/src/main/java/io/minio/messages/RuleFilter.java @@ -60,10 +60,10 @@ 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, - @Nullable @Element(name = "Tag", required = false) Tag tag) { + Integer objectSizeGreaterThan) { if (andOperator != null ^ prefix != null ^ tag != null) { this.andOperator = andOperator; this.prefix = prefix; From d49df8c9b42da0f8dd4b728b6d7e88db2f11894f Mon Sep 17 00:00:00 2001 From: zekaifeng <37854724+dormanze@users.noreply.github.com> Date: Thu, 16 Jan 2025 17:00:25 +0800 Subject: [PATCH 4/5] Resolve review comments --- .../java/io/minio/messages/AndOperator.java | 15 +-------------- .../java/io/minio/messages/Expiration.java | 19 ++++++++----------- .../java/io/minio/messages/RuleFilter.java | 12 +++--------- 3 files changed, 12 insertions(+), 34 deletions(-) diff --git a/api/src/main/java/io/minio/messages/AndOperator.java b/api/src/main/java/io/minio/messages/AndOperator.java index 1e534b032..370a7acc4 100644 --- a/api/src/main/java/io/minio/messages/AndOperator.java +++ b/api/src/main/java/io/minio/messages/AndOperator.java @@ -87,22 +87,9 @@ public AndOperator( @Nullable @Element(name = "ObjectSizeLessThan", required = false) Integer objectSizeLessThan, @Nullable @Element(name = "ObjectSizeGreaterThan", required = false) Integer objectSizeGreaterThan) { - if (prefix == null && tags == null) { - throw new IllegalArgumentException("At least Prefix or Tags must be set"); - } - - if (tags != null) { - for (String key : tags.keySet()) { - if (key.isEmpty()) { - throw new IllegalArgumentException("Tags must not contain empty key"); - } - } - } - - this.prefix = prefix; + this(prefix, tags); this.objectSizeLessThan = objectSizeLessThan; this.objectSizeGreaterThan = objectSizeGreaterThan; - this.tags = (tags != null) ? Collections.unmodifiableMap(tags) : null; } public String prefix() { diff --git a/api/src/main/java/io/minio/messages/Expiration.java b/api/src/main/java/io/minio/messages/Expiration.java index d24fe2984..dbff761b0 100644 --- a/api/src/main/java/io/minio/messages/Expiration.java +++ b/api/src/main/java/io/minio/messages/Expiration.java @@ -34,9 +34,7 @@ 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, - @Nullable @Element(name = "ExpiredObjectAllVersions", required = false) - Boolean expiredObjectAllVersions) { + Boolean expiredObjectDeleteMarker) { if (expiredObjectDeleteMarker != null) { if (date != null || days != null) { throw new IllegalArgumentException( @@ -50,11 +48,10 @@ public Expiration( } this.expiredObjectDeleteMarker = expiredObjectDeleteMarker; - this.expiredObjectAllVersions = expiredObjectAllVersions; } public Expiration(ZonedDateTime date, Integer days, Boolean expiredObjectDeleteMarker) { - this(date == null ? null : new ResponseDate(date), days, expiredObjectDeleteMarker, null); + this(date == null ? null : new ResponseDate(date), days, expiredObjectDeleteMarker); } public Expiration( @@ -62,18 +59,18 @@ public Expiration( Integer days, Boolean expiredObjectDeleteMarker, Boolean expiredObjectAllVersions) { - this( - date == null ? null : new ResponseDate(date), - days, - expiredObjectDeleteMarker, - expiredObjectAllVersions); + this(date == null ? null : new ResponseDate(date), days, expiredObjectDeleteMarker); + this.expiredObjectAllVersions = expiredObjectAllVersions; } public Boolean expiredObjectDeleteMarker() { return expiredObjectDeleteMarker; } - /** Allow setting ILM rule for removing all versions of expired objects from command line. */ + /** + * Allow setting ILM rule for removing all versions of expired objects. This is MinIO specific + * extension to PutBucketLifecycle. + */ 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 8474cc6e1..f6de06f09 100644 --- a/api/src/main/java/io/minio/messages/RuleFilter.java +++ b/api/src/main/java/io/minio/messages/RuleFilter.java @@ -64,15 +64,9 @@ public RuleFilter( @Nullable @Element(name = "ObjectSizeLessThan", required = false) Integer objectSizeLessThan, @Nullable @Element(name = "ObjectSizeGreaterThan", required = false) Integer objectSizeGreaterThan) { - if (andOperator != null ^ prefix != null ^ tag != null) { - this.andOperator = andOperator; - this.prefix = prefix; - this.tag = tag; - this.objectSizeLessThan = objectSizeLessThan; - this.objectSizeGreaterThan = objectSizeGreaterThan; - } else { - throw new IllegalArgumentException("Only one of And, Prefix or Tag must be set"); - } + this(andOperator, prefix, tag); + this.objectSizeLessThan = objectSizeLessThan; + this.objectSizeGreaterThan = objectSizeGreaterThan; } public RuleFilter(@Nonnull AndOperator andOperator) { From c94794b07ed99fe80d4107485441c39a1e8cb789 Mon Sep 17 00:00:00 2001 From: Bala FA Date: Thu, 16 Jan 2025 15:10:25 +0530 Subject: [PATCH 5/5] Apply suggestions from code review --- .../main/java/io/minio/messages/Expiration.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/api/src/main/java/io/minio/messages/Expiration.java b/api/src/main/java/io/minio/messages/Expiration.java index dbff761b0..a410b7929 100644 --- a/api/src/main/java/io/minio/messages/Expiration.java +++ b/api/src/main/java/io/minio/messages/Expiration.java @@ -55,11 +55,13 @@ public Expiration(ZonedDateTime date, Integer days, Boolean expiredObjectDeleteM } public Expiration( - ZonedDateTime date, - Integer days, - Boolean expiredObjectDeleteMarker, - Boolean expiredObjectAllVersions) { - this(date == null ? null : new ResponseDate(date), days, expiredObjectDeleteMarker); + @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; } @@ -67,10 +69,7 @@ public Boolean expiredObjectDeleteMarker() { return expiredObjectDeleteMarker; } - /** - * Allow setting ILM rule for removing all versions of expired objects. This is MinIO specific - * extension to PutBucketLifecycle. - */ + /** This is MinIO specific extension. */ public Boolean expiredObjectAllVersions() { return expiredObjectAllVersions; }