Skip to content

Commit 4a52f26

Browse files
authored
Standardise API for Tracker and Subject Builders (close #302)
For PR #350 * Add builder method to Tracker * Add builder method to Subject * Remove unused import
1 parent 5460a97 commit 4a52f26

File tree

5 files changed

+36
-28
lines changed

5 files changed

+36
-28
lines changed

examples/simple-console/src/main/java/com/snowplowanalytics/Main.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public static void main(String[] args) throws InterruptedException {
4949
.build();
5050

5151
// now we have the emitter, we need a tracker to turn our events into something a Snowplow collector can understand
52-
final Tracker tracker = new Tracker.TrackerBuilder(emitter, namespace, appId)
52+
final Tracker tracker = Tracker.builder(emitter, namespace, appId)
5353
.base64(true)
5454
.platform(DevicePlatform.ServerSideApp)
5555
.build();
@@ -64,7 +64,7 @@ public static void main(String[] args) throws InterruptedException {
6464
Collections.singletonMap("foo", "bar")));
6565

6666
// This is an example of a eventSubject for adding user data
67-
Subject eventSubject = new Subject.SubjectBuilder().build();
67+
Subject eventSubject = Subject.builder().build();
6868
eventSubject.setUserId("[email protected]");
6969
eventSubject.setLanguage("EN");
7070

src/main/java/com/snowplowanalytics/snowplow/tracker/Subject.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ public Subject(Subject subject){
5555
this.standardPairs.putAll(subject.getSubject());
5656
}
5757

58+
public static SubjectBuilder builder() {
59+
return new SubjectBuilder();
60+
}
61+
5862
/**
5963
* Builder for the Subject
6064
*/

src/main/java/com/snowplowanalytics/snowplow/tracker/Tracker.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ private Tracker(TrackerBuilder builder) {
5555

5656
}
5757

58+
public static TrackerBuilder builder(Emitter emitter, String namespace, String appId) {
59+
return new TrackerBuilder(emitter, namespace, appId);
60+
}
61+
5862
/**
5963
* Builder for the Tracker
6064
*/

src/test/java/com/snowplowanalytics/snowplow/tracker/SubjectTest.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,84 +24,84 @@ public class SubjectTest {
2424

2525
@Test
2626
public void testSetUserId() {
27-
Subject subject = new Subject.SubjectBuilder().build();
27+
Subject subject = Subject.builder().build();
2828
subject.setUserId("user1");
2929
assertEquals("user1", subject.getSubject().get("uid"));
3030
}
3131

3232
@Test
3333
public void testSetScreenResolution() {
34-
Subject subject = new Subject.SubjectBuilder().build();
34+
Subject subject = Subject.builder().build();
3535
subject.setScreenResolution(100, 150);
3636
assertEquals("100x150", subject.getSubject().get("res"));
3737
}
3838

3939
@Test
4040
public void testSetViewPort() {
41-
Subject subject = new Subject.SubjectBuilder().build();
41+
Subject subject = Subject.builder().build();
4242
subject.setViewPort(150, 100);
4343
assertEquals("150x100", subject.getSubject().get("vp"));
4444
}
4545

4646
@Test
4747
public void testSetColorDepth() {
48-
Subject subject = new Subject.SubjectBuilder().build();
48+
Subject subject = Subject.builder().build();
4949
subject.setColorDepth(10);
5050
assertEquals("10", subject.getSubject().get("cd"));
5151
}
5252

5353
@Test
5454
public void testSetTimezone2() {
55-
Subject subject = new Subject.SubjectBuilder().build();
55+
Subject subject = Subject.builder().build();
5656
subject.setTimezone("America/Toronto");
5757
assertEquals("America/Toronto", subject.getSubject().get("tz"));
5858
}
5959

6060
@Test
6161
public void testSetLanguage() {
62-
Subject subject = new Subject.SubjectBuilder().build();
62+
Subject subject = Subject.builder().build();
6363
subject.setLanguage("EN");
6464
assertEquals("EN", subject.getSubject().get("lang"));
6565
}
6666

6767
@Test
6868
public void testSetIpAddress() {
69-
Subject subject = new Subject.SubjectBuilder().build();
69+
Subject subject = Subject.builder().build();
7070
subject.setIpAddress("127.0.0.1");
7171
assertEquals("127.0.0.1", subject.getSubject().get("ip"));
7272
}
7373

7474
@Test
7575
public void testSetUseragent() {
76-
Subject subject = new Subject.SubjectBuilder().build();
76+
Subject subject = Subject.builder().build();
7777
subject.setUseragent("useragent");
7878
assertEquals("useragent", subject.getSubject().get("ua"));
7979
}
8080

8181
@Test
8282
public void testSetDomainUserId() {
83-
Subject subject = new Subject.SubjectBuilder().build();
83+
Subject subject = Subject.builder().build();
8484
subject.setDomainUserId("duid");
8585
assertEquals("duid", subject.getSubject().get("duid"));
8686
}
8787

8888
@Test
8989
public void testSetNetworkUserId() {
90-
Subject subject = new Subject.SubjectBuilder().build();
90+
Subject subject = Subject.builder().build();
9191
subject.setNetworkUserId("nuid");
9292
assertEquals("nuid", subject.getSubject().get("tnuid"));
9393
}
9494

9595
@Test
9696
public void testSetDomainSessionId() {
97-
Subject subject = new Subject.SubjectBuilder().build();
97+
Subject subject = Subject.builder().build();
9898
subject.setDomainSessionId("sessionid");
9999
assertEquals("sessionid", subject.getSubject().get("sid"));
100100
}
101101

102102
@Test
103103
public void testGetSubject() {
104-
Subject subject = new Subject.SubjectBuilder().build();
104+
Subject subject = Subject.builder().build();
105105
Map<String, String> expected = new HashMap<>();
106106
subject.setTimezone("America/Toronto");
107107
subject.setUserId("user1");

src/test/java/com/snowplowanalytics/snowplow/tracker/TrackerTest.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public void flushBuffer() {}
5353
@Before
5454
public void setUp() {
5555
mockEmitter = new MockEmitter();
56-
tracker = new Tracker.TrackerBuilder(mockEmitter, "AF003", "cloudfront")
57-
.subject(new Subject.SubjectBuilder().build())
56+
tracker = Tracker.builder(mockEmitter, "AF003", "cloudfront")
57+
.subject(Subject.builder().build())
5858
.base64(false)
5959
.build();
6060
tracker.getSubject().setTimezone("Etc/UTC");
@@ -100,7 +100,7 @@ public void flushBuffer() {}
100100
public List<TrackerPayload> getBuffer() { return null; }
101101
}
102102
FailingMockEmitter failingMockEmitter = new FailingMockEmitter();
103-
tracker = new Tracker.TrackerBuilder(failingMockEmitter, "AF003", "cloudfront").build();
103+
tracker = Tracker.builder(failingMockEmitter, "AF003", "cloudfront").build();
104104

105105
List<String> result = tracker.track(SelfDescribing.builder()
106106
.eventData(new SelfDescribingJson(
@@ -321,8 +321,8 @@ public void testSelfDescribingEventWithoutTrueTimestamp() throws InterruptedExce
321321

322322
@Test
323323
public void testTrackPageView() throws InterruptedException {
324-
tracker = new Tracker.TrackerBuilder(mockEmitter, "AF003", "cloudfront")
325-
.subject(new Subject.SubjectBuilder().build())
324+
tracker = Tracker.builder(mockEmitter, "AF003", "cloudfront")
325+
.subject(Subject.builder().build())
326326
.base64(false)
327327
.build();
328328
tracker.getSubject().setTimezone("Etc/UTC");
@@ -524,7 +524,7 @@ public void testTrackTiming() throws InterruptedException {
524524
@Test
525525
public void testTrackTimingWithSubject() throws InterruptedException {
526526
// Make Subject
527-
Subject s1 = new Subject.SubjectBuilder().build();
527+
Subject s1 = Subject.builder().build();
528528
s1.setIpAddress("127.0.0.1");
529529
s1.setTimezone("Etc/UTC");
530530

@@ -563,13 +563,13 @@ public void testTrackTimingWithSubject() throws InterruptedException {
563563

564564
@Test
565565
public void testGetTrackerVersion() {
566-
Tracker tracker = new Tracker.TrackerBuilder(mockEmitter, "namespace", "an-app-id").build();
566+
Tracker tracker = Tracker.builder(mockEmitter, "namespace", "an-app-id").build();
567567
assertEquals("java-0.12.2", tracker.getTrackerVersion());
568568
}
569569

570570
@Test
571571
public void testSetDefaultPlatform() {
572-
Tracker tracker = new Tracker.TrackerBuilder(mockEmitter, "AF003", "cloudfront")
572+
Tracker tracker = Tracker.builder(mockEmitter, "AF003", "cloudfront")
573573
.platform(DevicePlatform.Desktop)
574574
.build();
575575
assertEquals(DevicePlatform.Desktop, tracker.getPlatform());
@@ -580,13 +580,13 @@ public void testSetSubject() {
580580
// Subject objects always have timezone set
581581
TimeZone.setDefault(TimeZone.getTimeZone("Etc/UTC"));
582582

583-
Subject s1 = new Subject.SubjectBuilder().build();
583+
Subject s1 = Subject.builder().build();
584584
s1.setLanguage("EN");
585-
Tracker tracker = new Tracker.TrackerBuilder(mockEmitter, "AF003", "cloudfront")
585+
Tracker tracker = Tracker.builder(mockEmitter, "AF003", "cloudfront")
586586
.subject(s1)
587587
.build();
588588

589-
Subject s2 = new Subject.SubjectBuilder().build();
589+
Subject s2 = Subject.builder().build();
590590
s2.setColorDepth(24);
591591
tracker.setSubject(s2);
592592

@@ -599,21 +599,21 @@ public void testSetSubject() {
599599

600600
@Test
601601
public void testSetBase64Encoded() {
602-
Tracker tracker = new Tracker.TrackerBuilder(mockEmitter, "AF003", "cloudfront")
602+
Tracker tracker = Tracker.builder(mockEmitter, "AF003", "cloudfront")
603603
.base64(false)
604604
.build();
605605
assertFalse(tracker.getBase64Encoded());
606606
}
607607

608608
@Test
609609
public void testSetAppId() {
610-
Tracker tracker = new Tracker.TrackerBuilder(mockEmitter, "AF003", "an-app-id").build();
610+
Tracker tracker = Tracker.builder(mockEmitter, "AF003", "an-app-id").build();
611611
assertEquals("an-app-id", tracker.getAppId());
612612
}
613613

614614
@Test
615615
public void testSetNamespace() {
616-
Tracker tracker = new Tracker.TrackerBuilder(mockEmitter, "namespace", "an-app-id").build();
616+
Tracker tracker = Tracker.builder(mockEmitter, "namespace", "an-app-id").build();
617617
assertEquals("namespace", tracker.getNamespace());
618618
}
619619
}

0 commit comments

Comments
 (0)