@@ -129,10 +129,11 @@ public Tracker build() {
129129 /**
130130 * Builds and Adds a finalised payload which is ready for sending.
131131 *
132- * @param payload The raw event Payload
133- * @param contexts Custom context for the event
132+ * @param payload The raw event Payload
133+ * @param contexts Custom context for the event
134+ * @param eventSubject An optional event specific Subject
134135 */
135- private void addTrackerPayload (TrackerPayload payload , List <SelfDescribingJson > contexts ) {
136+ private void addTrackerPayload (TrackerPayload payload , List <SelfDescribingJson > contexts , Subject eventSubject ) {
136137
137138 // Add default parameters to the payload
138139 payload .add (Parameter .PLATFORM , platform .toString ());
@@ -147,8 +148,10 @@ private void addTrackerPayload(TrackerPayload payload, List<SelfDescribingJson>
147148 }
148149
149150 // Add subject if available
150- if (this .subject != null ) {
151- payload .addMap (new HashMap <String , Object >(subject .getSubject ()));
151+ if (eventSubject != null ) {
152+ payload .addMap (new HashMap <String , Object >(eventSubject .getSubject ()));
153+ } else if (this .subject != null ) {
154+ payload .addMap (new HashMap <String , Object >(this .subject .getSubject ()));
152155 }
153156
154157 // Send the event!
@@ -288,7 +291,8 @@ public DevicePlatform getPlatform() {
288291 public void track (PageView event ) {
289292 List <SelfDescribingJson > context = event .getContext ();
290293 TrackerPayload payload = event .getPayload ();
291- addTrackerPayload (payload , context );
294+ Subject subject = event .getSubject ();
295+ addTrackerPayload (payload , context , subject );
292296 }
293297
294298 /**
@@ -299,7 +303,8 @@ public void track(PageView event) {
299303 public void track (Structured event ) {
300304 List <SelfDescribingJson > context = event .getContext ();
301305 TrackerPayload payload = event .getPayload ();
302- addTrackerPayload (payload , context );
306+ Subject subject = event .getSubject ();
307+ addTrackerPayload (payload , context , subject );
303308 }
304309
305310 /**
@@ -312,7 +317,8 @@ public void track(Structured event) {
312317 public void track (EcommerceTransaction event ) {
313318 List <SelfDescribingJson > context = event .getContext ();
314319 TrackerPayload payload = event .getPayload ();
315- addTrackerPayload (payload , context );
320+ Subject subject = event .getSubject ();
321+ addTrackerPayload (payload , context , subject );
316322
317323 // Track each TransactionItem individually
318324 long timestamp = event .getTimestamp ();
@@ -330,7 +336,8 @@ public void track(EcommerceTransaction event) {
330336 private void track (EcommerceTransactionItem event , long timestamp ) {
331337 List <SelfDescribingJson > context = event .getContext ();
332338 TrackerPayload payload = event .getPayload (timestamp );
333- addTrackerPayload (payload , context );
339+ Subject subject = event .getSubject ();
340+ addTrackerPayload (payload , context , subject );
334341 }
335342
336343 /**
@@ -341,7 +348,8 @@ private void track(EcommerceTransactionItem event, long timestamp) {
341348 public void track (Unstructured event ) {
342349 List <SelfDescribingJson > context = event .getContext ();
343350 TrackerPayload payload = event .getPayload (base64Encoded );
344- addTrackerPayload (payload , context );
351+ Subject subject = event .getSubject ();
352+ addTrackerPayload (payload , context , subject );
345353 }
346354
347355 /**
@@ -355,6 +363,7 @@ public void track(ScreenView event) {
355363 .customContext (event .getContext ())
356364 .timestamp (event .getTimestamp ())
357365 .eventId (event .getEventId ())
366+ .subject (event .getSubject ())
358367 .build ());
359368 }
360369
@@ -369,6 +378,7 @@ public void track(TimingWithCategory event) {
369378 .customContext (event .getContext ())
370379 .timestamp (event .getTimestamp ())
371380 .eventId (event .getEventId ())
381+ .subject (event .getSubject ())
372382 .build ());
373383 }
374384}
0 commit comments