55/** A class for storing information about subscriptions */
66public class Subscription {
77
8- /** An identifier for the subscription */
98 private String subscriptionId ;
10- /** The name of the stream being subscribed to */
119 private String streamName ;
12- /** The offset that indicates the position to start consuming data from the stream */
1310 private SubscriptionOffset subscriptionOffset ;
14-
1511 private int ackTimeoutSeconds ;
1612
17- /**
18- * A constructor for subscriptions
19- *
20- * @param subscriptionId An identifier for the subscription
21- * @param streamName The name of the stream being subscribed to
22- * @param subscriptionOffset A {@link SubscriptionOffset} to indicate the position to start
23- * consuming data
24- */
25- public Subscription (
13+ private Subscription (
2614 String subscriptionId ,
2715 String streamName ,
2816 SubscriptionOffset subscriptionOffset ,
@@ -33,17 +21,19 @@ public Subscription(
3321 this .ackTimeoutSeconds = ackTimeoutSeconds ;
3422 }
3523
36- /** get the identifier of the subscription */
24+ /** @return {@link Subscription.Builder} */
25+ public static Builder newBuilder () {
26+ return new Builder ();
27+ }
28+
3729 public String getSubscriptionId () {
3830 return subscriptionId ;
3931 }
4032
41- /** get the name of stream being subscribed to */
4233 public String getStreamName () {
4334 return streamName ;
4435 }
4536
46- /** get the subscription offset */
4737 public SubscriptionOffset getSubscriptionOffset () {
4838 return subscriptionOffset ;
4939 }
@@ -52,25 +42,6 @@ public int getAckTimeoutSeconds() {
5242 return ackTimeoutSeconds ;
5343 }
5444
55- /** update the identifier of the subscription */
56- public void setSubscriptionId (String subscriptionId ) {
57- this .subscriptionId = subscriptionId ;
58- }
59-
60- /** update the name of the stream */
61- public void setStreamName (String streamName ) {
62- this .streamName = streamName ;
63- }
64-
65- /** update the subscription offset */
66- public void setSubscriptionOffset (SubscriptionOffset subscriptionOffset ) {
67- this .subscriptionOffset = subscriptionOffset ;
68- }
69-
70- public void setAckTimeoutSeconds (int ackTimeoutSeconds ) {
71- this .ackTimeoutSeconds = ackTimeoutSeconds ;
72- }
73-
7445 @ Override
7546 public boolean equals (Object o ) {
7647 if (this == o ) return true ;
@@ -86,4 +57,36 @@ public boolean equals(Object o) {
8657 public int hashCode () {
8758 return Objects .hash (subscriptionId , streamName , subscriptionOffset , ackTimeoutSeconds );
8859 }
60+
61+ public static class Builder {
62+
63+ private String subscriptionId ;
64+ private String streamName ;
65+ private SubscriptionOffset subscriptionOffset ;
66+ private int ackTimeoutSeconds ;
67+
68+ public Builder subscription (String subscriptionId ) {
69+ this .subscriptionId = subscriptionId ;
70+ return this ;
71+ }
72+
73+ public Builder stream (String streamName ) {
74+ this .streamName = streamName ;
75+ return this ;
76+ }
77+
78+ public Builder offset (SubscriptionOffset subscriptionOffset ) {
79+ this .subscriptionOffset = subscriptionOffset ;
80+ return this ;
81+ }
82+
83+ public Builder ackTimeoutSeconds (int ackTimeoutSeconds ) {
84+ this .ackTimeoutSeconds = ackTimeoutSeconds ;
85+ return this ;
86+ }
87+
88+ public Subscription build () {
89+ return new Subscription (subscriptionId , streamName , subscriptionOffset , ackTimeoutSeconds );
90+ }
91+ }
8992}
0 commit comments