From 064796087913a07d727ff64148a34cdd79598a75 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 29 Jan 2021 11:27:45 +0100 Subject: [PATCH 1/8] improve kotlin compatibility for sdk version class --- .../java/io/sentry/protocol/SdkVersion.java | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java index 886595c532b..137b3a4bec8 100644 --- a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java +++ b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java @@ -1,10 +1,12 @@ package io.sentry.protocol; import io.sentry.IUnknownPropertiesConsumer; +import io.sentry.util.Objects; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** @@ -23,7 +25,7 @@ public final class SdkVersion implements IUnknownPropertiesConsumer { *

Official Sentry SDKs use the entity `sentry`, as in `sentry.python` or * `sentry.javascript.react-native`. Please use a different entity for your own SDKs. */ - private String name; + private @NotNull String name; /** * The version of the SDK. _Required._ * @@ -32,7 +34,7 @@ public final class SdkVersion implements IUnknownPropertiesConsumer { * *

Examples: `0.1.0`, `1.0.0`, `4.3.12` */ - private String version; + private @NotNull String version; /** * List of installed and loaded SDK packages. _Optional._ * @@ -41,7 +43,7 @@ public final class SdkVersion implements IUnknownPropertiesConsumer { * is a Git repository, the `source` should be `git`, the identifier should be a checkout link and * the version should be a Git reference (branch, tag or SHA). */ - private List packages; + private @Nullable List packages; /** * List of integrations that are enabled in the SDK. _Optional._ * @@ -49,28 +51,31 @@ public final class SdkVersion implements IUnknownPropertiesConsumer { * integrations are included because different SDK releases may contain different default * integrations. */ - private List integrations; + private @Nullable List integrations; @SuppressWarnings("unused") - private Map unknown; + private @Nullable Map unknown; - public String getVersion() { + public @NotNull String getVersion() { return version; } - public void setVersion(String version) { - this.version = version; + public void setVersion(final @NotNull String version) { + this.version = Objects.requireNonNull(version, "version is required."); } - public String getName() { + public @NotNull String getName() { return name; } - public void setName(String name) { - this.name = name; + public void setName(final @NotNull String name) { + this.name = Objects.requireNonNull(name, "name is required."); } - public void addPackage(String name, String version) { + public void addPackage(final @NotNull String name, final @NotNull String version) { + Objects.requireNonNull(name, "name is required."); + Objects.requireNonNull(version, "version is required."); + SentryPackage newPackage = new SentryPackage(); newPackage.setName(name); newPackage.setVersion(version); @@ -80,7 +85,9 @@ public void addPackage(String name, String version) { packages.add(newPackage); } - public void addIntegration(String integration) { + public void addIntegration(final @NotNull String integration) { + Objects.requireNonNull(integration, "integration is required."); + if (integrations == null) { integrations = new ArrayList<>(); } @@ -89,7 +96,7 @@ public void addIntegration(String integration) { @ApiStatus.Internal @Override - public void acceptUnknownProperties(Map unknown) { + public void acceptUnknownProperties(final @Nullable Map unknown) { this.unknown = unknown; } From b10e7d24bdd5307c062f0e9a273f0b31acc34f30 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 29 Jan 2021 11:28:54 +0100 Subject: [PATCH 2/8] changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed3f7c5be48..a937536c4a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # vNext +* Improve Kotlin compatibility for SdkVersion + # 4.0.0 This release brings the Sentry Performance feature to Java SDK, Spring, Spring Boot, and Android integrations. Read more in the reference documentation: From 70ffd73b07d0fb25e4d827d28d440a766d9c9218 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 29 Jan 2021 11:56:58 +0100 Subject: [PATCH 3/8] deprecate empty ctor --- .../main/java/io/sentry/protocol/SdkVersion.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java index 137b3a4bec8..71f328fe012 100644 --- a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java +++ b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java @@ -56,6 +56,20 @@ public final class SdkVersion implements IUnknownPropertiesConsumer { @SuppressWarnings("unused") private @Nullable Map unknown; + public SdkVersion(final @NotNull String name, final @NotNull String version) { + this.name = Objects.requireNonNull(name, "name is required."); + this.version = Objects.requireNonNull(version, "version is required."); + } + + /** + * @Deprecated + *

Use {@link SdkVersion#SdkVersion(String, String) instead. + */ + @Deprecated + public SdkVersion() { + this("", ""); + } + public @NotNull String getVersion() { return version; } From 9bc5a5b633b1ed89006d81b3b4071344b0b9516d Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 29 Jan 2021 12:02:27 +0100 Subject: [PATCH 4/8] use new ctor --- .../java/io/sentry/android/core/SentryAndroidOptions.java | 6 ++---- .../src/main/java/io/sentry/log4j2/SentryAppender.java | 6 ++---- .../src/main/java/io/sentry/logback/SentryAppender.java | 6 ++---- .../java/io/sentry/spring/boot/SentryAutoConfiguration.java | 6 ++---- .../src/main/java/io/sentry/spring/SentryHubRegistrar.java | 6 ++---- sentry/src/main/java/io/sentry/SentryOptions.java | 5 ++--- 6 files changed, 12 insertions(+), 23 deletions(-) diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java b/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java index 931bc1928eb..c38b3e5c7ea 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java @@ -45,13 +45,11 @@ public SentryAndroidOptions() { private @NotNull SdkVersion createSdkVersion() { SdkVersion sdkVersion = getSdkVersion(); + final String version = BuildConfig.VERSION_NAME; if (sdkVersion == null) { - sdkVersion = new SdkVersion(); + sdkVersion = new SdkVersion(BuildConfig.SENTRY_ANDROID_SDK_NAME, version); } - sdkVersion.setName(BuildConfig.SENTRY_ANDROID_SDK_NAME); - String version = BuildConfig.VERSION_NAME; - sdkVersion.setVersion(version); sdkVersion.addPackage("maven:sentry-android-core", version); return sdkVersion; diff --git a/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java b/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java index 9d4fa460aad..ac1e10272ec 100644 --- a/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java +++ b/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java @@ -205,13 +205,11 @@ public void append(final @NotNull LogEvent eventObject) { private @NotNull SdkVersion createSdkVersion(final @NotNull SentryOptions sentryOptions) { SdkVersion sdkVersion = sentryOptions.getSdkVersion(); + final String version = BuildConfig.VERSION_NAME; if (sdkVersion == null) { - sdkVersion = new SdkVersion(); + sdkVersion = new SdkVersion(BuildConfig.SENTRY_LOG4J2_SDK_NAME, version); } - sdkVersion.setName(BuildConfig.SENTRY_LOG4J2_SDK_NAME); - final String version = BuildConfig.VERSION_NAME; - sdkVersion.setVersion(version); sdkVersion.addPackage("maven:sentry-log4j2", version); return sdkVersion; diff --git a/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java b/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java index cd94b714067..69cd9d3d008 100644 --- a/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java +++ b/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java @@ -140,13 +140,11 @@ protected void append(@NotNull ILoggingEvent eventObject) { private @NotNull SdkVersion createSdkVersion(@NotNull SentryOptions sentryOptions) { SdkVersion sdkVersion = sentryOptions.getSdkVersion(); + final String version = BuildConfig.VERSION_NAME; if (sdkVersion == null) { - sdkVersion = new SdkVersion(); + sdkVersion = new SdkVersion(BuildConfig.SENTRY_LOGBACK_SDK_NAME, version); } - sdkVersion.setName(BuildConfig.SENTRY_LOGBACK_SDK_NAME); - final String version = BuildConfig.VERSION_NAME; - sdkVersion.setVersion(version); sdkVersion.addPackage("maven:sentry-logback", version); return sdkVersion; diff --git a/sentry-spring-boot-starter/src/main/java/io/sentry/spring/boot/SentryAutoConfiguration.java b/sentry-spring-boot-starter/src/main/java/io/sentry/spring/boot/SentryAutoConfiguration.java index ab1aafa510c..5fa56023620 100644 --- a/sentry-spring-boot-starter/src/main/java/io/sentry/spring/boot/SentryAutoConfiguration.java +++ b/sentry-spring-boot-starter/src/main/java/io/sentry/spring/boot/SentryAutoConfiguration.java @@ -237,13 +237,11 @@ static class ApacheHttpClientTransportFactoryAutoconfiguration { final @NotNull SentryOptions sentryOptions) { SdkVersion sdkVersion = sentryOptions.getSdkVersion(); + final String version = BuildConfig.VERSION_NAME; if (sdkVersion == null) { - sdkVersion = new SdkVersion(); + sdkVersion = new SdkVersion(BuildConfig.SENTRY_SPRING_BOOT_SDK_NAME, version); } - sdkVersion.setName(BuildConfig.SENTRY_SPRING_BOOT_SDK_NAME); - final String version = BuildConfig.VERSION_NAME; - sdkVersion.setVersion(version); sdkVersion.addPackage("maven:sentry-spring-boot-starter", version); return sdkVersion; diff --git a/sentry-spring/src/main/java/io/sentry/spring/SentryHubRegistrar.java b/sentry-spring/src/main/java/io/sentry/spring/SentryHubRegistrar.java index 1042bc890e6..5690e49577b 100644 --- a/sentry-spring/src/main/java/io/sentry/spring/SentryHubRegistrar.java +++ b/sentry-spring/src/main/java/io/sentry/spring/SentryHubRegistrar.java @@ -73,13 +73,11 @@ private void registerSentryExceptionResolver( final SentryOptions defaultOptions = new SentryOptions(); SdkVersion sdkVersion = defaultOptions.getSdkVersion(); + final String version = BuildConfig.VERSION_NAME; if (sdkVersion == null) { - sdkVersion = new SdkVersion(); + sdkVersion = new SdkVersion(BuildConfig.SENTRY_SPRING_SDK_NAME, version); } - sdkVersion.setName(BuildConfig.SENTRY_SPRING_SDK_NAME); - final String version = BuildConfig.VERSION_NAME; - sdkVersion.setVersion(version); sdkVersion.addPackage("maven:sentry-spring", version); return sdkVersion; diff --git a/sentry/src/main/java/io/sentry/SentryOptions.java b/sentry/src/main/java/io/sentry/SentryOptions.java index 7a96fc4b147..a766bead90f 100644 --- a/sentry/src/main/java/io/sentry/SentryOptions.java +++ b/sentry/src/main/java/io/sentry/SentryOptions.java @@ -1325,10 +1325,9 @@ void merge(final @NotNull SentryOptions options) { } private @NotNull SdkVersion createSdkVersion() { - final SdkVersion sdkVersion = new SdkVersion(); + final String version = BuildConfig.VERSION_NAME; + final SdkVersion sdkVersion = new SdkVersion(BuildConfig.SENTRY_JAVA_SDK_NAME, version); - sdkVersion.setName(BuildConfig.SENTRY_JAVA_SDK_NAME); - String version = BuildConfig.VERSION_NAME; sdkVersion.setVersion(version); sdkVersion.addPackage("maven:sentry", version); From 3ceb0684c85bfbc96c17ff137798059c299113ec Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 29 Jan 2021 13:14:30 +0100 Subject: [PATCH 5/8] fix --- .../main/java/io/sentry/SentryEnvelopeHeaderAdapter.java | 7 +++++-- sentry/src/main/java/io/sentry/protocol/SdkVersion.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java b/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java index e0266bb8ef9..7f964386055 100644 --- a/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java +++ b/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java @@ -11,12 +11,14 @@ import java.util.List; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; @ApiStatus.Internal public final class SentryEnvelopeHeaderAdapter extends TypeAdapter { @Override - public void write(JsonWriter writer, SentryEnvelopeHeader value) throws IOException { + public void write(final @NotNull JsonWriter writer, final @Nullable SentryEnvelopeHeader value) + throws IOException { if (value == null) { writer.nullValue(); return; @@ -88,8 +90,9 @@ private boolean hasValidSdkVersion(final @NotNull SdkVersion sdkVersion) { && !sdkVersion.getVersion().isEmpty(); } + @SuppressWarnings("deprecation") @Override - public SentryEnvelopeHeader read(JsonReader reader) throws IOException { + public @Nullable SentryEnvelopeHeader read(final @NotNull JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; diff --git a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java index 71f328fe012..e181d80f313 100644 --- a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java +++ b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java @@ -62,7 +62,7 @@ public SdkVersion(final @NotNull String name, final @NotNull String version) { } /** - * @Deprecated + * @deprecated *

Use {@link SdkVersion#SdkVersion(String, String) instead. */ @Deprecated From 8efe64dc66647e30fd008d6d15aa6c21e3bae678 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 29 Jan 2021 13:51:16 +0100 Subject: [PATCH 6/8] fix --- .../android/core/SentryAndroidOptions.java | 5 ++-- .../java/io/sentry/log4j2/SentryAppender.java | 5 ++-- .../io/sentry/logback/SentryAppender.java | 5 ++-- .../spring/boot/SentryAutoConfiguration.java | 5 ++-- .../io/sentry/spring/SentryHubRegistrar.java | 5 ++-- sentry/api/sentry.api | 2 ++ .../sentry/SentryEnvelopeHeaderAdapter.java | 9 +++++-- .../java/io/sentry/protocol/SdkVersion.java | 24 ++++++++++++++++++- 8 files changed, 42 insertions(+), 18 deletions(-) diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java b/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java index c38b3e5c7ea..09317564bd7 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java @@ -45,10 +45,9 @@ public SentryAndroidOptions() { private @NotNull SdkVersion createSdkVersion() { SdkVersion sdkVersion = getSdkVersion(); + final String name = BuildConfig.SENTRY_ANDROID_SDK_NAME; final String version = BuildConfig.VERSION_NAME; - if (sdkVersion == null) { - sdkVersion = new SdkVersion(BuildConfig.SENTRY_ANDROID_SDK_NAME, version); - } + sdkVersion = SdkVersion.updateSdkVersion(sdkVersion, name, version); sdkVersion.addPackage("maven:sentry-android-core", version); diff --git a/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java b/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java index ac1e10272ec..6461c49e431 100644 --- a/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java +++ b/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java @@ -205,10 +205,9 @@ public void append(final @NotNull LogEvent eventObject) { private @NotNull SdkVersion createSdkVersion(final @NotNull SentryOptions sentryOptions) { SdkVersion sdkVersion = sentryOptions.getSdkVersion(); + final String name = BuildConfig.SENTRY_LOG4J2_SDK_NAME; final String version = BuildConfig.VERSION_NAME; - if (sdkVersion == null) { - sdkVersion = new SdkVersion(BuildConfig.SENTRY_LOG4J2_SDK_NAME, version); - } + sdkVersion = SdkVersion.updateSdkVersion(sdkVersion, name, version); sdkVersion.addPackage("maven:sentry-log4j2", version); diff --git a/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java b/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java index 69cd9d3d008..dce782fd3b4 100644 --- a/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java +++ b/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java @@ -140,10 +140,9 @@ protected void append(@NotNull ILoggingEvent eventObject) { private @NotNull SdkVersion createSdkVersion(@NotNull SentryOptions sentryOptions) { SdkVersion sdkVersion = sentryOptions.getSdkVersion(); + final String name = BuildConfig.SENTRY_LOGBACK_SDK_NAME; final String version = BuildConfig.VERSION_NAME; - if (sdkVersion == null) { - sdkVersion = new SdkVersion(BuildConfig.SENTRY_LOGBACK_SDK_NAME, version); - } + sdkVersion = SdkVersion.updateSdkVersion(sdkVersion, name, version); sdkVersion.addPackage("maven:sentry-logback", version); diff --git a/sentry-spring-boot-starter/src/main/java/io/sentry/spring/boot/SentryAutoConfiguration.java b/sentry-spring-boot-starter/src/main/java/io/sentry/spring/boot/SentryAutoConfiguration.java index 5fa56023620..308a35b760e 100644 --- a/sentry-spring-boot-starter/src/main/java/io/sentry/spring/boot/SentryAutoConfiguration.java +++ b/sentry-spring-boot-starter/src/main/java/io/sentry/spring/boot/SentryAutoConfiguration.java @@ -237,10 +237,9 @@ static class ApacheHttpClientTransportFactoryAutoconfiguration { final @NotNull SentryOptions sentryOptions) { SdkVersion sdkVersion = sentryOptions.getSdkVersion(); + final String name = BuildConfig.SENTRY_SPRING_BOOT_SDK_NAME; final String version = BuildConfig.VERSION_NAME; - if (sdkVersion == null) { - sdkVersion = new SdkVersion(BuildConfig.SENTRY_SPRING_BOOT_SDK_NAME, version); - } + sdkVersion = SdkVersion.updateSdkVersion(sdkVersion, name, version); sdkVersion.addPackage("maven:sentry-spring-boot-starter", version); diff --git a/sentry-spring/src/main/java/io/sentry/spring/SentryHubRegistrar.java b/sentry-spring/src/main/java/io/sentry/spring/SentryHubRegistrar.java index 5690e49577b..4c8aeb2dd20 100644 --- a/sentry-spring/src/main/java/io/sentry/spring/SentryHubRegistrar.java +++ b/sentry-spring/src/main/java/io/sentry/spring/SentryHubRegistrar.java @@ -73,10 +73,9 @@ private void registerSentryExceptionResolver( final SentryOptions defaultOptions = new SentryOptions(); SdkVersion sdkVersion = defaultOptions.getSdkVersion(); + final String name = BuildConfig.SENTRY_SPRING_SDK_NAME; final String version = BuildConfig.VERSION_NAME; - if (sdkVersion == null) { - sdkVersion = new SdkVersion(BuildConfig.SENTRY_SPRING_SDK_NAME, version); - } + sdkVersion = SdkVersion.updateSdkVersion(sdkVersion, name, version); sdkVersion.addPackage("maven:sentry-spring", version); diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 187efe49d34..769c7df2038 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -1482,6 +1482,7 @@ public final class io/sentry/protocol/SdkInfo : io/sentry/IUnknownPropertiesCons public final class io/sentry/protocol/SdkVersion : io/sentry/IUnknownPropertiesConsumer { public fun ()V + public fun (Ljava/lang/String;Ljava/lang/String;)V public fun acceptUnknownProperties (Ljava/util/Map;)V public fun addIntegration (Ljava/lang/String;)V public fun addPackage (Ljava/lang/String;Ljava/lang/String;)V @@ -1491,6 +1492,7 @@ public final class io/sentry/protocol/SdkVersion : io/sentry/IUnknownPropertiesC public fun getVersion ()Ljava/lang/String; public fun setName (Ljava/lang/String;)V public fun setVersion (Ljava/lang/String;)V + public static fun updateSdkVersion (Lio/sentry/protocol/SdkVersion;Ljava/lang/String;Ljava/lang/String;)Lio/sentry/protocol/SdkVersion; } public final class io/sentry/protocol/SentryException : io/sentry/IUnknownPropertiesConsumer { diff --git a/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java b/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java index 7f964386055..561b0c00cef 100644 --- a/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java +++ b/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java @@ -124,7 +124,10 @@ private boolean hasValidSdkVersion(final @NotNull SdkVersion sdkVersion) { reader.beginArray(); while (reader.hasNext()) { - sdkVersion.addIntegration(reader.nextString()); + final String integration = reader.nextString(); + if (integration != null) { + sdkVersion.addIntegration(integration); + } } reader.endArray(); break; @@ -150,7 +153,9 @@ private boolean hasValidSdkVersion(final @NotNull SdkVersion sdkVersion) { reader.skipValue(); } } - sdkVersion.addPackage(name, version); + if (name != null && version != null) { + sdkVersion.addPackage(name, version); + } // packages item reader.endObject(); diff --git a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java index e181d80f313..18108370b4a 100644 --- a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java +++ b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java @@ -63,7 +63,7 @@ public SdkVersion(final @NotNull String name, final @NotNull String version) { /** * @deprecated - *

Use {@link SdkVersion#SdkVersion(String, String) instead. + *

Use {@link SdkVersion#SdkVersion(String, String)} instead. */ @Deprecated public SdkVersion() { @@ -121,4 +121,26 @@ public void acceptUnknownProperties(final @Nullable Map unknown) public @Nullable List getIntegrations() { return integrations; } + + /** + * Updates the Sdk name and version or create a new one with the given values + * + * @param sdk the SdkVersion object or null + * @param name the sdk name + * @param version the sdk version + * @return the SdkVersion + */ + public static @NotNull SdkVersion updateSdkVersion( + @Nullable SdkVersion sdk, final @NotNull String name, final @NotNull String version) { + Objects.requireNonNull(name, "name is required."); + Objects.requireNonNull(version, "version is required."); + + if (sdk == null) { + sdk = new SdkVersion(name, version); + } else { + sdk.setName(name); + sdk.setVersion(version); + } + return sdk; + } } From 6ea71d0c6d00d0f2b2caccb18919cefff48821a8 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 29 Jan 2021 14:04:24 +0100 Subject: [PATCH 7/8] fixes --- .../java/io/sentry/jul/SentryHandler.java | 7 ++-- sentry/api/sentry.api | 1 + .../sentry/SentryEnvelopeHeaderAdapter.java | 1 + .../java/io/sentry/protocol/SdkVersion.java | 4 +- .../io/sentry/protocol/SentryPackage.java | 37 ++++++++++++++----- 5 files changed, 33 insertions(+), 17 deletions(-) diff --git a/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java b/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java index 2744d4fcd26..66efc2d3854 100644 --- a/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java +++ b/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java @@ -237,13 +237,12 @@ public void close() throws SecurityException { private @NotNull SdkVersion createSdkVersion(final @NotNull SentryOptions sentryOptions) { SdkVersion sdkVersion = sentryOptions.getSdkVersion(); + final String name = BuildConfig.SENTRY_JUL_SDK_NAME; + final String version = BuildConfig.VERSION_NAME; if (sdkVersion == null) { sdkVersion = new SdkVersion(); } - - sdkVersion.setName(BuildConfig.SENTRY_JUL_SDK_NAME); - final String version = BuildConfig.VERSION_NAME; - sdkVersion.setVersion(version); + sdkVersion = SdkVersion.updateSdkVersion(sdk, name, version); sdkVersion.addPackage("maven:sentry-jul", version); return sdkVersion; diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 769c7df2038..950b9a76ae2 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -1524,6 +1524,7 @@ public final class io/sentry/protocol/SentryId { public final class io/sentry/protocol/SentryPackage : io/sentry/IUnknownPropertiesConsumer { public fun ()V + public fun (Ljava/lang/String;Ljava/lang/String;)V public fun acceptUnknownProperties (Ljava/util/Map;)V public fun getName ()Ljava/lang/String; public fun getVersion ()Ljava/lang/String; diff --git a/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java b/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java index 561b0c00cef..4944729a94e 100644 --- a/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java +++ b/sentry/src/main/java/io/sentry/SentryEnvelopeHeaderAdapter.java @@ -153,6 +153,7 @@ private boolean hasValidSdkVersion(final @NotNull SdkVersion sdkVersion) { reader.skipValue(); } } + // packages should not contain null names or versions if (name != null && version != null) { sdkVersion.addPackage(name, version); } diff --git a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java index 18108370b4a..6b7ef32bbac 100644 --- a/sentry/src/main/java/io/sentry/protocol/SdkVersion.java +++ b/sentry/src/main/java/io/sentry/protocol/SdkVersion.java @@ -90,9 +90,7 @@ public void addPackage(final @NotNull String name, final @NotNull String version Objects.requireNonNull(name, "name is required."); Objects.requireNonNull(version, "version is required."); - SentryPackage newPackage = new SentryPackage(); - newPackage.setName(name); - newPackage.setVersion(version); + SentryPackage newPackage = new SentryPackage(name, version); if (packages == null) { packages = new ArrayList<>(); } diff --git a/sentry/src/main/java/io/sentry/protocol/SentryPackage.java b/sentry/src/main/java/io/sentry/protocol/SentryPackage.java index a67b4a1aa52..de427b0a02f 100644 --- a/sentry/src/main/java/io/sentry/protocol/SentryPackage.java +++ b/sentry/src/main/java/io/sentry/protocol/SentryPackage.java @@ -1,38 +1,55 @@ package io.sentry.protocol; import io.sentry.IUnknownPropertiesConsumer; +import io.sentry.util.Objects; import java.util.Map; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** An installed and loaded package as part of the Sentry SDK. */ public final class SentryPackage implements IUnknownPropertiesConsumer { /** Name of the package. */ - private String name; + private @NotNull String name; /** Version of the package. */ - private String version; + private @NotNull String version; @SuppressWarnings("unused") - private Map unknown; + private @Nullable Map unknown; - public String getName() { + public SentryPackage(final @NotNull String name, final @NotNull String version) { + Objects.requireNonNull(name, "name is required."); + Objects.requireNonNull(version, "version is required."); + } + + /** + * @deprecated + *

Use {@link SentryPackage#SentryPackage(String, String)} instead. + */ + @Deprecated + public SentryPackage() { + this("", ""); + } + + public @NotNull String getName() { return name; } - public void setName(String name) { - this.name = name; + public void setName(final @NotNull String name) { + this.name = Objects.requireNonNull(name, "name is required."); } - public String getVersion() { + public @NotNull String getVersion() { return version; } - public void setVersion(String version) { - this.version = version; + public void setVersion(final @NotNull String version) { + this.version = Objects.requireNonNull(version, "version is required."); } @ApiStatus.Internal @Override - public void acceptUnknownProperties(Map unknown) { + public void acceptUnknownProperties(final @Nullable Map unknown) { this.unknown = unknown; } } From c12c9429e6396d30ed434e2ddab39fdd81faeef5 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 29 Jan 2021 14:29:49 +0100 Subject: [PATCH 8/8] fix --- sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java | 6 ++---- sentry/src/main/java/io/sentry/protocol/SentryPackage.java | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java b/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java index 66efc2d3854..62a0d0eb57e 100644 --- a/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java +++ b/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java @@ -239,10 +239,8 @@ public void close() throws SecurityException { final String name = BuildConfig.SENTRY_JUL_SDK_NAME; final String version = BuildConfig.VERSION_NAME; - if (sdkVersion == null) { - sdkVersion = new SdkVersion(); - } - sdkVersion = SdkVersion.updateSdkVersion(sdk, name, version); + + sdkVersion = SdkVersion.updateSdkVersion(sdkVersion, name, version); sdkVersion.addPackage("maven:sentry-jul", version); return sdkVersion; diff --git a/sentry/src/main/java/io/sentry/protocol/SentryPackage.java b/sentry/src/main/java/io/sentry/protocol/SentryPackage.java index de427b0a02f..b77d45ce659 100644 --- a/sentry/src/main/java/io/sentry/protocol/SentryPackage.java +++ b/sentry/src/main/java/io/sentry/protocol/SentryPackage.java @@ -18,8 +18,8 @@ public final class SentryPackage implements IUnknownPropertiesConsumer { private @Nullable Map unknown; public SentryPackage(final @NotNull String name, final @NotNull String version) { - Objects.requireNonNull(name, "name is required."); - Objects.requireNonNull(version, "version is required."); + this.name = Objects.requireNonNull(name, "name is required."); + this.version = Objects.requireNonNull(version, "version is required."); } /**