@@ -55,13 +55,24 @@ public LifecycleRule(
5555 @ Nullable @ Element (name = "AbortIncompleteMultipartUpload" , required = false )
5656 AbortIncompleteMultipartUpload abortIncompleteMultipartUpload ,
5757 @ Nullable @ Element (name = "Expiration" , required = false ) Expiration expiration ,
58- @ Nullable @ Element (name = "Filter" , required = false ) RuleFilter filter ,
58+ @ Nonnull @ Element (name = "Filter" , required = false ) RuleFilter filter ,
5959 @ Nullable @ Element (name = "ID" , required = false ) String id ,
6060 @ Nullable @ Element (name = "NoncurrentVersionExpiration" , required = false )
6161 NoncurrentVersionExpiration noncurrentVersionExpiration ,
6262 @ Nullable @ Element (name = "NoncurrentVersionTransition" , required = false )
6363 NoncurrentVersionTransition noncurrentVersionTransition ,
6464 @ Nullable @ Element (name = "Transition" , required = false ) Transition transition ) {
65+ if (abortIncompleteMultipartUpload == null
66+ && expiration == null
67+ && noncurrentVersionExpiration == null
68+ && noncurrentVersionTransition == null
69+ && transition == null ) {
70+ throw new IllegalArgumentException (
71+ "At least one of action (AbortIncompleteMultipartUpload, Expiration, "
72+ + "NoncurrentVersionExpiration, NoncurrentVersionTransition or Transition) must be "
73+ + "specified in a rule" );
74+ }
75+
6576 if (id != null ) {
6677 id = id .trim ();
6778 if (id .isEmpty ()) throw new IllegalArgumentException ("ID must be non-empty string" );
@@ -70,7 +81,7 @@ public LifecycleRule(
7081
7182 this .abortIncompleteMultipartUpload = abortIncompleteMultipartUpload ;
7283 this .expiration = expiration ;
73- this .filter = filter ;
84+ this .filter = Objects . requireNonNull ( filter , "Filter must not be null" ) ;
7485 this .id = id ;
7586 this .noncurrentVersionExpiration = noncurrentVersionExpiration ;
7687 this .noncurrentVersionTransition = noncurrentVersionTransition ;
0 commit comments