From 1c7d72ae9134aedd884372a4014ff4413acc95be Mon Sep 17 00:00:00 2001 From: Shivam Sharma Date: Mon, 30 Oct 2023 10:58:08 +0530 Subject: [PATCH 1/3] fix(SDK-3328): fix classCastException from Double to Long type for defineVariable API Issue has been fixed by restricting null values as default when defining the PE variables --- .../src/main/java/com/clevertap/android/sdk/CleverTapAPI.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java b/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java index b749f2c2b..f53b5c565 100644 --- a/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java +++ b/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java @@ -3264,6 +3264,10 @@ boolean isDevelopmentMode() { * @return Returns the Var instance. */ public Var defineVariable(String name, T defaultValue) { + if (defaultValue == null) { + Logger.d("Invalid Operation! Null values are not allowed as default values when defining the variable '" + name + "'."); + return null; + } return Var.define(name, defaultValue,coreState.getCTVariables()); } From dc1266a0e997f1b1b6bb1637fa0bdeb48391fdec Mon Sep 17 00:00:00 2001 From: Shivam Sharma Date: Fri, 22 Dec 2023 11:10:13 +0530 Subject: [PATCH 2/3] refactor(inapp): move null-check condition of defaultValue to the internal Var#define method This adjustment ensures that the condition is applied to annotated variables as well. --- .../main/java/com/clevertap/android/sdk/CleverTapAPI.java | 4 ---- .../java/com/clevertap/android/sdk/variables/Parser.java | 2 +- .../main/java/com/clevertap/android/sdk/variables/Var.java | 5 +++++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java b/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java index f53b5c565..b749f2c2b 100644 --- a/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java +++ b/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java @@ -3264,10 +3264,6 @@ boolean isDevelopmentMode() { * @return Returns the Var instance. */ public Var defineVariable(String name, T defaultValue) { - if (defaultValue == null) { - Logger.d("Invalid Operation! Null values are not allowed as default values when defining the variable '" + name + "'."); - return null; - } return Var.define(name, defaultValue,coreState.getCTVariables()); } diff --git a/clevertap-core/src/main/java/com/clevertap/android/sdk/variables/Parser.java b/clevertap-core/src/main/java/com/clevertap/android/sdk/variables/Parser.java index 0f53744a9..7e805f65e 100644 --- a/clevertap-core/src/main/java/com/clevertap/android/sdk/variables/Parser.java +++ b/clevertap-core/src/main/java/com/clevertap/android/sdk/variables/Parser.java @@ -159,7 +159,7 @@ void defineVariable(final Object instance, String name, T value, String kind // we first call var.define(..) with field name, value and kind final Var var = Var.define(name, value, kind, ctVariables); if (var == null) { - log("Something went wrong, var is null, returning"); + log("Something went wrong, variable '" + name + "' is null, returning"); return; } diff --git a/clevertap-core/src/main/java/com/clevertap/android/sdk/variables/Var.java b/clevertap-core/src/main/java/com/clevertap/android/sdk/variables/Var.java index e1c520a1e..09396021a 100644 --- a/clevertap-core/src/main/java/com/clevertap/android/sdk/variables/Var.java +++ b/clevertap-core/src/main/java/com/clevertap/android/sdk/variables/Var.java @@ -70,6 +70,11 @@ public static Var define(String name, T defaultValue, String kind, CTVari log("Variable name starts or ends with a `.` which is not allowed: " + name); return null; } + if (defaultValue == null) { + Logger.d("Invalid Operation! Null values are not allowed as default values when defining the variable '" + + name + "'."); + return null; + } Var existing = ctVariables.getVarCache().getVariable(name); if (existing != null) { From b65271ccd7067b32ea3263cc88075a271be1ab81 Mon Sep 17 00:00:00 2001 From: anush Date: Fri, 22 Dec 2023 12:10:04 +0530 Subject: [PATCH 3/3] task(SDK-3328) - Updates tests --- .../java/com/clevertap/android/sdk/variables/VarCacheTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clevertap-core/src/test/java/com/clevertap/android/sdk/variables/VarCacheTest.kt b/clevertap-core/src/test/java/com/clevertap/android/sdk/variables/VarCacheTest.kt index b7ccaf9a2..1c7b604e4 100644 --- a/clevertap-core/src/test/java/com/clevertap/android/sdk/variables/VarCacheTest.kt +++ b/clevertap-core/src/test/java/com/clevertap/android/sdk/variables/VarCacheTest.kt @@ -49,7 +49,7 @@ class VarCacheTest : BaseTestCase() { parser.parseVariables(NullDefaultValue()) - assertNull(varCache.getVariable("string_with_null").value()) + assertNull(varCache.getVariable("string_with_null")) } @Test @@ -58,7 +58,7 @@ class VarCacheTest : BaseTestCase() { Var.define("var_string", null, ctVariables) - assertNull(varCache.getVariable("var_string").value()) + assertNull(varCache.getVariable("var_string")) } @Test