All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.sentry.protocol.SdkInfo Maven / Gradle / Ivy

package io.sentry.protocol;

import io.sentry.ILogger;
import io.sentry.JsonDeserializer;
import io.sentry.JsonSerializable;
import io.sentry.JsonUnknown;
import io.sentry.ObjectReader;
import io.sentry.ObjectWriter;
import io.sentry.vendor.gson.stream.JsonToken;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
 * Holds information about the system SDK.
 *
 * 

This is relevant for iOS and other platforms that have a system SDK. Not to be confused with * the client SDK. */ public final class SdkInfo implements JsonUnknown, JsonSerializable { /** The internal name of the SDK. */ private @Nullable String sdkName; /** The major version of the SDK as integer or 0. */ private @Nullable Integer versionMajor; /** The minor version of the SDK as integer or 0. */ private @Nullable Integer versionMinor; /** The patch version of the SDK as integer or 0. */ private @Nullable Integer versionPatchlevel; @SuppressWarnings("unused") private @Nullable Map unknown; public @Nullable String getSdkName() { return sdkName; } public void setSdkName(final @Nullable String sdkName) { this.sdkName = sdkName; } public @Nullable Integer getVersionMajor() { return versionMajor; } public void setVersionMajor(final @Nullable Integer versionMajor) { this.versionMajor = versionMajor; } public @Nullable Integer getVersionMinor() { return versionMinor; } public void setVersionMinor(final @Nullable Integer versionMinor) { this.versionMinor = versionMinor; } public @Nullable Integer getVersionPatchlevel() { return versionPatchlevel; } public void setVersionPatchlevel(final @Nullable Integer versionPatchlevel) { this.versionPatchlevel = versionPatchlevel; } // JsonKeys public static final class JsonKeys { public static final String SDK_NAME = "sdk_name"; public static final String VERSION_MAJOR = "version_major"; public static final String VERSION_MINOR = "version_minor"; public static final String VERSION_PATCHLEVEL = "version_patchlevel"; } // JsonUnknown @Override public @Nullable Map getUnknown() { return unknown; } @Override public void setUnknown(@Nullable Map unknown) { this.unknown = unknown; } // JsonSerializable @Override public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger logger) throws IOException { writer.beginObject(); if (sdkName != null) { writer.name(JsonKeys.SDK_NAME).value(sdkName); } if (versionMajor != null) { writer.name(JsonKeys.VERSION_MAJOR).value(versionMajor); } if (versionMinor != null) { writer.name(JsonKeys.VERSION_MINOR).value(versionMinor); } if (versionPatchlevel != null) { writer.name(JsonKeys.VERSION_PATCHLEVEL).value(versionPatchlevel); } if (unknown != null) { for (String key : unknown.keySet()) { Object value = unknown.get(key); writer.name(key).value(logger, value); } } writer.endObject(); } // JsonDeserializer public static final class Deserializer implements JsonDeserializer { @Override public @NotNull SdkInfo deserialize(@NotNull ObjectReader reader, @NotNull ILogger logger) throws Exception { SdkInfo sdkInfo = new SdkInfo(); Map unknown = null; reader.beginObject(); while (reader.peek() == JsonToken.NAME) { final String nextName = reader.nextName(); switch (nextName) { case JsonKeys.SDK_NAME: sdkInfo.sdkName = reader.nextStringOrNull(); break; case JsonKeys.VERSION_MAJOR: sdkInfo.versionMajor = reader.nextIntegerOrNull(); break; case JsonKeys.VERSION_MINOR: sdkInfo.versionMinor = reader.nextIntegerOrNull(); break; case JsonKeys.VERSION_PATCHLEVEL: sdkInfo.versionPatchlevel = reader.nextIntegerOrNull(); break; default: if (unknown == null) { unknown = new HashMap<>(); } reader.nextUnknown(logger, unknown, nextName); break; } } reader.endObject(); sdkInfo.setUnknown(unknown); return sdkInfo; } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy