Skip to content
This repository was archived by the owner on Aug 30, 2023. It is now read-only.
Prev Previous commit
Next Next commit
copying scope data to event
  • Loading branch information
marandaneto committed Oct 26, 2019
commit ea77bc41e56f0bcb486d4202deb6ef751264bf6f
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,6 @@ class AndroidSerializerTest {

private fun generateEmptySentryEvent(): SentryEvent {
return SentryEvent().apply {
setBreadcrumbs(null)
setTags(null)
setExtra(null)
fingerprint = null
contexts = null
}
}
Expand Down
27 changes: 21 additions & 6 deletions sentry-core/src/main/java/io/sentry/core/SentryClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,27 @@ public SentryId captureEvent(SentryEvent event, @Nullable Scope scope) {
}

if (scope != null) {
event.setTransaction(scope.getTransaction());
event.setUser(scope.getUser());
event.setFingerprint(scope.getFingerprint());
event.setBreadcrumbs(scope.getBreadcrumbs());
event.setTags(scope.getTags());
event.setExtra(scope.getExtra());
if (event.getTransaction() == null) {
event.setTransaction(scope.getTransaction());
}
if (event.getUser() == null) {
event.setUser(scope.getUser());
}
if (event.getFingerprint() == null) {
event.setFingerprint(scope.getFingerprint());
}
if (event.getBreadcrumbs() == null) {
event.setBreadcrumbs(scope.getBreadcrumbs());
}
if (event.getTags() == null) {
event.setTags(scope.getTags());
}
if (event.getExtra() == null) {
event.setExtra(scope.getExtra());
}
if (scope.getLevel() != null) {
event.setLevel(scope.getLevel());
}
}

for (EventProcessor processor : options.getEventProcessors()) {
Expand Down
36 changes: 32 additions & 4 deletions sentry-core/src/main/java/io/sentry/core/SentryEvent.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ public class SentryEvent implements IUnknownPropertiesConsumer {
private Request request;
private SdkVersion sdk;
private Contexts contexts = new Contexts();
private List<String> fingerprint = new ArrayList<>();
private List<Breadcrumb> breadcrumbs = new ArrayList<>();
private Map<String, String> tags = new HashMap<>();
private Map<String, Object> extra = new HashMap<>();
private List<String> fingerprint;
private List<Breadcrumb> breadcrumbs;
private Map<String, String> tags;
private Map<String, Object> extra;
private Map<String, Object> unknown;

SentryEvent(SentryId eventId, Date timestamp) {
Expand Down Expand Up @@ -203,6 +203,13 @@ public void setFingerprint(List<String> fingerprint) {
this.fingerprint = fingerprint;
}

public void addFingerprint(String fingerprint) {
if (this.fingerprint == null) {
this.fingerprint = new ArrayList<>();
}
this.fingerprint.add(fingerprint);
}

public List<Breadcrumb> getBreadcrumbs() {
return breadcrumbs;
}
Expand All @@ -211,6 +218,13 @@ public void setBreadcrumbs(List<Breadcrumb> breadcrumbs) {
this.breadcrumbs = breadcrumbs;
}

public void addBreadcrumb(Breadcrumb breadcrumb) {
if (breadcrumbs == null) {
breadcrumbs = new ArrayList<>();
}
breadcrumbs.add(breadcrumb);
}

public Map<String, String> getTags() {
return tags;
}
Expand All @@ -219,6 +233,13 @@ public void setTags(Map<String, String> tags) {
this.tags = tags;
}

public void addTag(String key, String value) {
if (tags == null) {
tags = new HashMap<>();
}
tags.put(key, value);
}

public Map<String, Object> getExtra() {
return extra;
}
Expand All @@ -227,6 +248,13 @@ public void setExtra(Map<String, Object> extra) {
this.extra = extra;
}

public void addExtra(String key, Object value) {
if (extra == null) {
extra = new HashMap<>();
}
extra.put(key, value);
}

public Contexts getContexts() {
return contexts;
}
Expand Down
37 changes: 34 additions & 3 deletions sentry-core/src/test/java/io/sentry/core/SentryClientTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ class SentryClientTest {
}

@Test
fun `when captureEvent with scope, event should have its data`() {
fun `when captureEvent with scope, event should have its data if not set`() {
val event = SentryEvent()
val scope = createScope()

Expand All @@ -172,18 +172,49 @@ class SentryClientTest {
assertEquals("fp", event.fingerprint[0])
assertEquals("transaction", event.transaction)
assertEquals("id", event.user.id)
assertEquals(SentryLevel.FATAL, event.level)
}

@Test
fun `when captureEvent with scope, event should have its data but Level`() {
fun `when captureEvent with scope, event data has priority over scope but level`() {
val event = SentryEvent().apply {
addBreadcrumb(Breadcrumb().apply {
message = "eventMessage"
})
addExtra("eventExtra", "eventExtra")
addTag("eventTag", "eventTag")
addFingerprint("eventFp")
transaction = "eventTransaction"
level = SentryLevel.DEBUG
user = User().apply {
id = "eventId"
}
}

val scope = createScope()

val sut = fixture.getSut()

sut.captureEvent(event, scope)
assertEquals("eventMessage", event.breadcrumbs[0].message)
assertEquals("eventExtra", event.extra["eventExtra"])
assertEquals("eventTag", event.tags["eventTag"])
assertEquals("eventFp", event.fingerprint[0])
assertEquals("eventTransaction", event.transaction)
assertEquals("eventId", event.user.id)
assertEquals(SentryLevel.FATAL, event.level)
}

@Test
fun `when captureEvent with scope, event should have its level if set`() {
val event = SentryEvent()
event.level = SentryLevel.DEBUG
val scope = createScope()

val sut = fixture.getSut()

sut.captureEvent(event, scope)
assertEquals(SentryLevel.DEBUG, event.level)
assertEquals(SentryLevel.FATAL, event.level)
}

private fun createScope(): Scope {
Expand Down