55 */
66package com .gooddata .notification ;
77
8+ import static com .fasterxml .jackson .annotation .JsonInclude .Include .NON_NULL ;
89import static org .apache .commons .lang3 .Validate .notEmpty ;
910import static org .apache .commons .lang3 .Validate .notNull ;
1011
1112import com .fasterxml .jackson .annotation .JsonCreator ;
1213import com .fasterxml .jackson .annotation .JsonIgnoreProperties ;
14+ import com .fasterxml .jackson .annotation .JsonInclude ;
1315import com .fasterxml .jackson .annotation .JsonProperty ;
1416import com .fasterxml .jackson .annotation .JsonTypeInfo ;
1517import com .fasterxml .jackson .annotation .JsonTypeName ;
2628@ JsonTypeName ("subscription" )
2729@ JsonTypeInfo (include = JsonTypeInfo .As .WRAPPER_OBJECT , use = JsonTypeInfo .Id .NAME )
2830@ JsonIgnoreProperties (ignoreUnknown = true )
31+ @ JsonInclude (NON_NULL )
2932public class Subscription {
3033
3134 public static final String URI = "/gdc/projects/{project}/users/{user}/subscriptions" ;
3235 public static final UriTemplate URI_TEMPLATE = new UriTemplate (URI );
3336
3437 private final List <Trigger > triggers ;
3538 private final TriggerCondition condition ;
36- private final MessageTemplate template ;
39+ private final MessageTemplate messageTemplate ;
40+ private final MessageTemplate subjectTemplate ;
3741 private final List <String > channels ;
3842 private final Meta meta ;
3943
@@ -44,33 +48,55 @@ public class Subscription {
4448 * @param triggers triggers of subscription
4549 * @param channels list of {@link Channel}
4650 * @param condition condition under which this subscription activates
47- * @param template of message
51+ * @param messageTemplate of message
4852 * @param title name of subscription
4953 */
5054 public Subscription (final List <Trigger > triggers ,
5155 final List <Channel > channels ,
5256 final TriggerCondition condition ,
53- final MessageTemplate template ,
57+ final MessageTemplate messageTemplate ,
58+ final String title ) {
59+ this (triggers , channels , condition , messageTemplate , null , title );
60+ }
61+
62+ /**
63+ * Creates Subscription
64+ *
65+ * @param triggers triggers of subscription
66+ * @param channels list of {@link Channel}
67+ * @param condition condition under which this subscription activates
68+ * @param messageTemplate of message
69+ * @param subjectTemplate of message
70+ * @param title name of subscription
71+ */
72+ public Subscription (final List <Trigger > triggers ,
73+ final List <Channel > channels ,
74+ final TriggerCondition condition ,
75+ final MessageTemplate messageTemplate ,
76+ final MessageTemplate subjectTemplate ,
5477 final String title ) {
5578 this (notNull (triggers , "triggers" ),
56- notNull (condition , "condition" ),
57- notNull (template , "template" ),
58- notNull (channels , "channels" ).stream ().map (e -> e .getMeta ().getUri ()).collect (Collectors .toList ()),
59- new Meta (
60- notEmpty (title , "title" )
61- )
79+ notNull (condition , "condition" ),
80+ notNull (messageTemplate , "messageTemplate" ),
81+ subjectTemplate ,
82+ notNull (channels , "channels" ).stream ().map (e -> e .getMeta ().getUri ()).collect (Collectors .toList ()),
83+ new Meta (
84+ notEmpty (title , "title" )
85+ )
6286 );
6387 }
6488
6589 @ JsonCreator
6690 Subscription (@ JsonProperty ("triggers" ) final List <Trigger > triggers ,
6791 @ JsonProperty ("condition" ) final TriggerCondition condition ,
68- @ JsonProperty ("message" ) final MessageTemplate template ,
92+ @ JsonProperty ("message" ) final MessageTemplate messageTemplate ,
93+ @ JsonProperty ("subject" ) final MessageTemplate subjectTemplate ,
6994 @ JsonProperty ("channels" ) final List <String > channels ,
7095 @ JsonProperty ("meta" ) final Meta meta ) {
7196 this .triggers = triggers ;
7297 this .condition = condition ;
73- this .template = template ;
98+ this .messageTemplate = messageTemplate ;
99+ this .subjectTemplate = subjectTemplate ;
74100 this .channels = channels ;
75101 this .meta = meta ;
76102 }
@@ -85,7 +111,12 @@ public TriggerCondition getCondition() {
85111
86112 @ JsonProperty ("message" )
87113 public MessageTemplate getTemplate () {
88- return template ;
114+ return messageTemplate ;
115+ }
116+
117+ @ JsonProperty ("subject" )
118+ public MessageTemplate getSubjectTemplate () {
119+ return subjectTemplate ;
89120 }
90121
91122 public List <String > getChannels () {
0 commit comments