Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## Unreleased

### Features

- Add scope-level attributes API ([#5118](https://github.com/getsentry/sentry-java/pull/5118))

### Fixes

- Fix crash when unregistering `SystemEventsBroadcastReceiver` with try-catch block. ([#5106](https://github.com/getsentry/sentry-java/pull/5106))
Expand Down
52 changes: 52 additions & 0 deletions sentry/api/sentry.api
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ public final class io/sentry/CombinedScopeView : io/sentry/IScope {
public synthetic fun clone ()Ljava/lang/Object;
public fun endSession ()Lio/sentry/Session;
public fun getAttachments ()Ljava/util/List;
public fun getAttributes ()Ljava/util/Map;
public fun getBreadcrumbs ()Ljava/util/Queue;
public fun getClient ()Lio/sentry/ISentryClient;
public fun getContexts ()Lio/sentry/protocol/Contexts;
Expand All @@ -298,11 +299,15 @@ public final class io/sentry/CombinedScopeView : io/sentry/IScope {
public fun getTransaction ()Lio/sentry/ITransaction;
public fun getTransactionName ()Ljava/lang/String;
public fun getUser ()Lio/sentry/protocol/User;
public fun removeAttribute (Ljava/lang/String;)V
public fun removeContexts (Ljava/lang/String;)V
public fun removeExtra (Ljava/lang/String;)V
public fun removeTag (Ljava/lang/String;)V
public fun replaceOptions (Lio/sentry/SentryOptions;)V
public fun setActiveSpan (Lio/sentry/ISpan;)V
public fun setAttribute (Lio/sentry/SentryAttribute;)V
public fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setContexts (Ljava/lang/String;Ljava/lang/Boolean;)V
public fun setContexts (Ljava/lang/String;Ljava/lang/Character;)V
public fun setContexts (Ljava/lang/String;Ljava/lang/Number;)V
Expand Down Expand Up @@ -670,10 +675,14 @@ public final class io/sentry/HubAdapter : io/sentry/IHub {
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
public fun pushScope ()Lio/sentry/ISentryLifecycleToken;
public fun removeAttribute (Ljava/lang/String;)V
public fun removeExtra (Ljava/lang/String;)V
public fun removeTag (Ljava/lang/String;)V
public fun reportFullyDisplayed ()V
public fun setActiveSpan (Lio/sentry/ISpan;)V
public fun setAttribute (Lio/sentry/SentryAttribute;)V
public fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setExtra (Ljava/lang/String;Ljava/lang/String;)V
public fun setFingerprint (Ljava/util/List;)V
public fun setLevel (Lio/sentry/SentryLevel;)V
Expand Down Expand Up @@ -742,10 +751,14 @@ public final class io/sentry/HubScopesWrapper : io/sentry/IHub {
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
public fun pushScope ()Lio/sentry/ISentryLifecycleToken;
public fun removeAttribute (Ljava/lang/String;)V
public fun removeExtra (Ljava/lang/String;)V
public fun removeTag (Ljava/lang/String;)V
public fun reportFullyDisplayed ()V
public fun setActiveSpan (Lio/sentry/ISpan;)V
public fun setAttribute (Lio/sentry/SentryAttribute;)V
public fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setExtra (Ljava/lang/String;Ljava/lang/String;)V
public fun setFingerprint (Ljava/util/List;)V
public fun setLevel (Lio/sentry/SentryLevel;)V
Expand Down Expand Up @@ -865,6 +878,7 @@ public abstract interface class io/sentry/IScope {
public abstract fun clone ()Lio/sentry/IScope;
public abstract fun endSession ()Lio/sentry/Session;
public abstract fun getAttachments ()Ljava/util/List;
public abstract fun getAttributes ()Ljava/util/Map;
public abstract fun getBreadcrumbs ()Ljava/util/Queue;
public abstract fun getClient ()Lio/sentry/ISentryClient;
public abstract fun getContexts ()Lio/sentry/protocol/Contexts;
Expand All @@ -887,11 +901,15 @@ public abstract interface class io/sentry/IScope {
public abstract fun getTransaction ()Lio/sentry/ITransaction;
public abstract fun getTransactionName ()Ljava/lang/String;
public abstract fun getUser ()Lio/sentry/protocol/User;
public abstract fun removeAttribute (Ljava/lang/String;)V
public abstract fun removeContexts (Ljava/lang/String;)V
public abstract fun removeExtra (Ljava/lang/String;)V
public abstract fun removeTag (Ljava/lang/String;)V
public abstract fun replaceOptions (Lio/sentry/SentryOptions;)V
public abstract fun setActiveSpan (Lio/sentry/ISpan;)V
public abstract fun setAttribute (Lio/sentry/SentryAttribute;)V
public abstract fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public abstract fun setAttributes (Lio/sentry/SentryAttributes;)V
public abstract fun setContexts (Ljava/lang/String;Ljava/lang/Boolean;)V
public abstract fun setContexts (Ljava/lang/String;Ljava/lang/Character;)V
public abstract fun setContexts (Ljava/lang/String;Ljava/lang/Number;)V
Expand Down Expand Up @@ -1003,10 +1021,14 @@ public abstract interface class io/sentry/IScopes {
public abstract fun popScope ()V
public abstract fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
public abstract fun pushScope ()Lio/sentry/ISentryLifecycleToken;
public abstract fun removeAttribute (Ljava/lang/String;)V
public abstract fun removeExtra (Ljava/lang/String;)V
public abstract fun removeTag (Ljava/lang/String;)V
public abstract fun reportFullyDisplayed ()V
public abstract fun setActiveSpan (Lio/sentry/ISpan;)V
public abstract fun setAttribute (Lio/sentry/SentryAttribute;)V
public abstract fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public abstract fun setAttributes (Lio/sentry/SentryAttributes;)V
public abstract fun setExtra (Ljava/lang/String;Ljava/lang/String;)V
public abstract fun setFingerprint (Ljava/util/List;)V
public abstract fun setLevel (Lio/sentry/SentryLevel;)V
Expand Down Expand Up @@ -1579,10 +1601,14 @@ public final class io/sentry/NoOpHub : io/sentry/IHub {
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
public fun pushScope ()Lio/sentry/ISentryLifecycleToken;
public fun removeAttribute (Ljava/lang/String;)V
public fun removeExtra (Ljava/lang/String;)V
public fun removeTag (Ljava/lang/String;)V
public fun reportFullyDisplayed ()V
public fun setActiveSpan (Lio/sentry/ISpan;)V
public fun setAttribute (Lio/sentry/SentryAttribute;)V
public fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setExtra (Ljava/lang/String;Ljava/lang/String;)V
public fun setFingerprint (Ljava/util/List;)V
public fun setLevel (Lio/sentry/SentryLevel;)V
Expand Down Expand Up @@ -1649,6 +1675,7 @@ public final class io/sentry/NoOpScope : io/sentry/IScope {
public synthetic fun clone ()Ljava/lang/Object;
public fun endSession ()Lio/sentry/Session;
public fun getAttachments ()Ljava/util/List;
public fun getAttributes ()Ljava/util/Map;
public fun getBreadcrumbs ()Ljava/util/Queue;
public fun getClient ()Lio/sentry/ISentryClient;
public fun getContexts ()Lio/sentry/protocol/Contexts;
Expand All @@ -1672,11 +1699,15 @@ public final class io/sentry/NoOpScope : io/sentry/IScope {
public fun getTransaction ()Lio/sentry/ITransaction;
public fun getTransactionName ()Ljava/lang/String;
public fun getUser ()Lio/sentry/protocol/User;
public fun removeAttribute (Ljava/lang/String;)V
public fun removeContexts (Ljava/lang/String;)V
public fun removeExtra (Ljava/lang/String;)V
public fun removeTag (Ljava/lang/String;)V
public fun replaceOptions (Lio/sentry/SentryOptions;)V
public fun setActiveSpan (Lio/sentry/ISpan;)V
public fun setAttribute (Lio/sentry/SentryAttribute;)V
public fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setContexts (Ljava/lang/String;Ljava/lang/Boolean;)V
public fun setContexts (Ljava/lang/String;Ljava/lang/Character;)V
public fun setContexts (Ljava/lang/String;Ljava/lang/Number;)V
Expand Down Expand Up @@ -1756,10 +1787,14 @@ public final class io/sentry/NoOpScopes : io/sentry/IScopes {
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
public fun pushScope ()Lio/sentry/ISentryLifecycleToken;
public fun removeAttribute (Ljava/lang/String;)V
public fun removeExtra (Ljava/lang/String;)V
public fun removeTag (Ljava/lang/String;)V
public fun reportFullyDisplayed ()V
public fun setActiveSpan (Lio/sentry/ISpan;)V
public fun setAttribute (Lio/sentry/SentryAttribute;)V
public fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setExtra (Ljava/lang/String;Ljava/lang/String;)V
public fun setFingerprint (Ljava/util/List;)V
public fun setLevel (Lio/sentry/SentryLevel;)V
Expand Down Expand Up @@ -2325,6 +2360,7 @@ public final class io/sentry/Scope : io/sentry/IScope {
public synthetic fun clone ()Ljava/lang/Object;
public fun endSession ()Lio/sentry/Session;
public fun getAttachments ()Ljava/util/List;
public fun getAttributes ()Ljava/util/Map;
public fun getBreadcrumbs ()Ljava/util/Queue;
public fun getClient ()Lio/sentry/ISentryClient;
public fun getContexts ()Lio/sentry/protocol/Contexts;
Expand All @@ -2347,11 +2383,15 @@ public final class io/sentry/Scope : io/sentry/IScope {
public fun getTransaction ()Lio/sentry/ITransaction;
public fun getTransactionName ()Ljava/lang/String;
public fun getUser ()Lio/sentry/protocol/User;
public fun removeAttribute (Ljava/lang/String;)V
public fun removeContexts (Ljava/lang/String;)V
public fun removeExtra (Ljava/lang/String;)V
public fun removeTag (Ljava/lang/String;)V
public fun replaceOptions (Lio/sentry/SentryOptions;)V
public fun setActiveSpan (Lio/sentry/ISpan;)V
public fun setAttribute (Lio/sentry/SentryAttribute;)V
public fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setContexts (Ljava/lang/String;Ljava/lang/Boolean;)V
public fun setContexts (Ljava/lang/String;Ljava/lang/Character;)V
public fun setContexts (Ljava/lang/String;Ljava/lang/Number;)V
Expand Down Expand Up @@ -2482,10 +2522,14 @@ public final class io/sentry/Scopes : io/sentry/IScopes {
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
public fun pushScope ()Lio/sentry/ISentryLifecycleToken;
public fun removeAttribute (Ljava/lang/String;)V
public fun removeExtra (Ljava/lang/String;)V
public fun removeTag (Ljava/lang/String;)V
public fun reportFullyDisplayed ()V
public fun setActiveSpan (Lio/sentry/ISpan;)V
public fun setAttribute (Lio/sentry/SentryAttribute;)V
public fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setExtra (Ljava/lang/String;Ljava/lang/String;)V
public fun setFingerprint (Ljava/util/List;)V
public fun setLevel (Lio/sentry/SentryLevel;)V
Expand Down Expand Up @@ -2555,10 +2599,14 @@ public final class io/sentry/ScopesAdapter : io/sentry/IScopes {
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
public fun pushScope ()Lio/sentry/ISentryLifecycleToken;
public fun removeAttribute (Ljava/lang/String;)V
public fun removeExtra (Ljava/lang/String;)V
public fun removeTag (Ljava/lang/String;)V
public fun reportFullyDisplayed ()V
public fun setActiveSpan (Lio/sentry/ISpan;)V
public fun setAttribute (Lio/sentry/SentryAttribute;)V
public fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setExtra (Ljava/lang/String;Ljava/lang/String;)V
public fun setFingerprint (Ljava/util/List;)V
public fun setLevel (Lio/sentry/SentryLevel;)V
Expand Down Expand Up @@ -2676,10 +2724,14 @@ public final class io/sentry/Sentry {
public static fun popScope ()V
public static fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
public static fun pushScope ()Lio/sentry/ISentryLifecycleToken;
public static fun removeAttribute (Ljava/lang/String;)V
public static fun removeExtra (Ljava/lang/String;)V
public static fun removeTag (Ljava/lang/String;)V
public static fun replay ()Lio/sentry/IReplayApi;
public static fun reportFullyDisplayed ()V
public static fun setAttribute (Lio/sentry/SentryAttribute;)V
public static fun setAttribute (Ljava/lang/String;Ljava/lang/Object;)V
public static fun setAttributes (Lio/sentry/SentryAttributes;)V
public static fun setCurrentHub (Lio/sentry/IHub;)Lio/sentry/ISentryLifecycleToken;
public static fun setCurrentScopes (Lio/sentry/IScopes;)Lio/sentry/ISentryLifecycleToken;
public static fun setExtra (Ljava/lang/String;Ljava/lang/String;)V
Expand Down
30 changes: 30 additions & 0 deletions sentry/src/main/java/io/sentry/CombinedScopeView.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Queue;
Expand Down Expand Up @@ -241,6 +242,35 @@ public void removeTag(@Nullable String key) {
getDefaultWriteScope().removeTag(key);
}

@Override
public @NotNull Map<String, SentryAttribute> getAttributes() {
final @NotNull Map<String, SentryAttribute> allAttributes = new HashMap<>();
Comment thread
cursor[bot] marked this conversation as resolved.
Outdated
allAttributes.putAll(globalScope.getAttributes());
allAttributes.putAll(isolationScope.getAttributes());
allAttributes.putAll(scope.getAttributes());
return allAttributes;
}

@Override
public void setAttribute(@Nullable String key, @Nullable Object value) {
getDefaultWriteScope().setAttribute(key, value);
}

@Override
public void setAttribute(@NotNull SentryAttribute attribute) {
getDefaultWriteScope().setAttribute(attribute);
}

@Override
public void setAttributes(@NotNull SentryAttributes attributes) {
getDefaultWriteScope().setAttributes(attributes);
}

@Override
public void removeAttribute(@Nullable String key) {
getDefaultWriteScope().removeAttribute(key);
}

@Override
public @NotNull Map<String, Object> getExtras() {
final @NotNull Map<String, Object> allTags = new ConcurrentHashMap<>();
Expand Down
20 changes: 20 additions & 0 deletions sentry/src/main/java/io/sentry/HubAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,26 @@ public void reportFullyDisplayed() {
return Sentry.getCurrentScopes().metrics();
}

@Override
public void setAttribute(final @Nullable String key, final @Nullable Object value) {
Comment thread
alexander-alderman-webb marked this conversation as resolved.
Sentry.setAttribute(key, value);
}

@Override
public void setAttribute(final @NotNull SentryAttribute attribute) {
Sentry.setAttribute(attribute);
}

@Override
public void setAttributes(final @NotNull SentryAttributes attributes) {
Sentry.setAttributes(attributes);
}

@Override
public void removeAttribute(final @Nullable String key) {
Sentry.removeAttribute(key);
}

@Override
public void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result) {
Sentry.addFeatureFlag(flag, result);
Expand Down
20 changes: 20 additions & 0 deletions sentry/src/main/java/io/sentry/HubScopesWrapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,26 @@ public void reportFullyDisplayed() {
return scopes.metrics();
}

@Override
public void setAttribute(final @Nullable String key, final @Nullable Object value) {
scopes.setAttribute(key, value);
}

@Override
public void setAttribute(final @NotNull SentryAttribute attribute) {
scopes.setAttribute(attribute);
}

@Override
public void setAttributes(final @NotNull SentryAttributes attributes) {
scopes.setAttributes(attributes);
}

@Override
public void removeAttribute(final @Nullable String key) {
scopes.removeAttribute(key);
}

@Override
public void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result) {
scopes.addFeatureFlag(flag, result);
Expand Down
38 changes: 38 additions & 0 deletions sentry/src/main/java/io/sentry/IScope.java
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,44 @@ void setSpanContext(
@ApiStatus.Internal
void replaceOptions(final @NotNull SentryOptions options);

/**
* Sets an attribute on the Scope.
*
* @param key the key
* @param value the value
*/
void setAttribute(final @Nullable String key, final @Nullable Object value);

/**
* Sets an attribute on the Scope.
*
* @param attribute the attribute
*/
void setAttribute(final @NotNull SentryAttribute attribute);

/**
* Sets multiple attributes on the Scope.
*
* @param attributes the attributes
*/
void setAttributes(final @NotNull SentryAttributes attributes);

/**
* Removes an attribute from the Scope.
*
* @param key the key
*/
void removeAttribute(final @Nullable String key);

/**
* Returns the Scope's attributes
*
* @return the attributes map
*/
@ApiStatus.Internal
@NotNull
Map<String, SentryAttribute> getAttributes();

void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result);

@ApiStatus.Internal
Expand Down
Loading
Loading