@@ -82,12 +82,12 @@ public class SnapshotLifecyclePolicy extends AbstractDiffable<SnapshotLifecycleP
8282 PARSER .declareString (ConstructingObjectParser .constructorArg (), SCHEDULE );
8383 PARSER .declareString (ConstructingObjectParser .constructorArg (), REPOSITORY );
8484 PARSER .declareObject (ConstructingObjectParser .optionalConstructorArg (), (p , c ) -> p .map (), CONFIG );
85- PARSER .declareObject (ConstructingObjectParser .constructorArg (), SnapshotRetentionConfiguration ::parse , RETENTION );
85+ PARSER .declareObject (ConstructingObjectParser .optionalConstructorArg (), SnapshotRetentionConfiguration ::parse , RETENTION );
8686 }
8787
8888 public SnapshotLifecyclePolicy (final String id , final String name , final String schedule ,
89- final String repository , @ Nullable Map <String , Object > configuration ,
90- final SnapshotRetentionConfiguration retentionPolicy ) {
89+ final String repository , @ Nullable final Map <String , Object > configuration ,
90+ @ Nullable final SnapshotRetentionConfiguration retentionPolicy ) {
9191 this .id = Objects .requireNonNull (id , "policy id is required" );
9292 this .name = Objects .requireNonNull (name , "policy snapshot name is required" );
9393 this .schedule = Objects .requireNonNull (schedule , "policy schedule is required" );
@@ -102,7 +102,7 @@ public SnapshotLifecyclePolicy(StreamInput in) throws IOException {
102102 this .schedule = in .readString ();
103103 this .repository = in .readString ();
104104 this .configuration = in .readMap ();
105- this .retentionPolicy = new SnapshotRetentionConfiguration ( in );
105+ this .retentionPolicy = in . readOptionalWriteable ( SnapshotRetentionConfiguration :: new );
106106 }
107107
108108 public String getId () {
@@ -126,6 +126,7 @@ public Map<String, Object> getConfig() {
126126 return this .configuration ;
127127 }
128128
129+ @ Nullable
129130 public SnapshotRetentionConfiguration getRetentionPolicy () {
130131 return this .retentionPolicy ;
131132 }
@@ -271,7 +272,7 @@ public void writeTo(StreamOutput out) throws IOException {
271272 out .writeString (this .schedule );
272273 out .writeString (this .repository );
273274 out .writeMap (this .configuration );
274- this .retentionPolicy . writeTo ( out );
275+ out . writeOptionalWriteable ( this .retentionPolicy );
275276 }
276277
277278 @ Override
@@ -283,7 +284,9 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
283284 if (this .configuration != null ) {
284285 builder .field (CONFIG .getPreferredName (), this .configuration );
285286 }
286- builder .field (RETENTION .getPreferredName (), this .retentionPolicy );
287+ if (this .retentionPolicy != null ) {
288+ builder .field (RETENTION .getPreferredName (), this .retentionPolicy );
289+ }
287290 builder .endObject ();
288291 return builder ;
289292 }
0 commit comments