diff --git a/sdk/java/core/build.gradle.kts b/sdk/java/core/build.gradle.kts index 0af2c137..9b611791 100644 --- a/sdk/java/core/build.gradle.kts +++ b/sdk/java/core/build.gradle.kts @@ -10,8 +10,8 @@ version = "16.6.3" plugins { `java-library` - kotlin("jvm") version "1.9.20" - kotlin("plugin.serialization") version "1.9.20" + kotlin("jvm") version "1.9.23" + kotlin("plugin.serialization") version "1.9.23" `maven-publish` signing id("io.github.gradle-nexus.publish-plugin") version "1.3.0" @@ -42,18 +42,18 @@ repositories { dependencies { // Align versions of all Kotlin components - implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.9.20")) + implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.9.23")) // Use the Kotlin JDK 8 standard library. - api("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") - implementation("org.jetbrains.kotlin:kotlin-reflect:1.9.20") + api("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.23") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3") + implementation("org.jetbrains.kotlin:kotlin-reflect:1.9.23") // Use the Kotlin test library. - testImplementation("org.jetbrains.kotlin:kotlin-test:1.9.20") + testImplementation("org.jetbrains.kotlin:kotlin-test:1.9.23") // Use the Kotlin JUnit integration. - testImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.9.20") + testImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.9.23") testImplementation("org.bouncycastle:bc-fips:1.0.2.4") // testImplementation("org.bouncycastle:bcprov-jdk15on:1.70") diff --git a/sdk/java/core/gradle/wrapper/gradle-wrapper.properties b/sdk/java/core/gradle/wrapper/gradle-wrapper.properties index f4a5f9b6..b719751c 100644 --- a/sdk/java/core/gradle/wrapper/gradle-wrapper.properties +++ b/sdk/java/core/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/sdk/java/core/src/main/kotlin/com/keepersecurity/secretsManager/core/SecretsManager.kt b/sdk/java/core/src/main/kotlin/com/keepersecurity/secretsManager/core/SecretsManager.kt index 832b5123..2403a50d 100644 --- a/sdk/java/core/src/main/kotlin/com/keepersecurity/secretsManager/core/SecretsManager.kt +++ b/sdk/java/core/src/main/kotlin/com/keepersecurity/secretsManager/core/SecretsManager.kt @@ -800,21 +800,23 @@ private fun decryptRecord(record: SecretsManagerResponseRecord, recordKey: ByteA // When SDK is behind/ahead of record/field type definitions then // strict mapping between JSON attributes and object properties - // will fail on any unknown field/key so just skip the record with proper error message + // will fail on any unknown field/key - currently just log the error + // and continue without the field - nb! field will be lost on save + var recordData: KeeperRecordData? = null try { - val recordData = Json.decodeFromString(bytesToString(decryptedRecord)) - return KeeperRecord(recordKey, record.recordUid, null, null, record.innerFolderUid, recordData, record.revision, files) + recordData = Json.decodeFromString(bytesToString(decryptedRecord)) } catch (e: Exception) { // New/missing field: Polymorphic serializer was not found for class discriminator 'UNKNOWN'... // New/missing field property (field def updated): Encountered unknown key 'UNKNOWN'. // Avoid 'ignoreUnknownKeys = true' to prevent erasing new properties on save/update - println("Skipped record ${record.recordUid}\n"+ + println("Record ${record.recordUid} has unexpected data properties (ignored).\n"+ " Error parsing record type - KSM SDK is behind/ahead of record/field type definitions." + " Please upgrade to latest version. If you need assistance please email support@keepersecurity.com") - println(e.message) + //println(e.message) + recordData = nonStrictJson.decodeFromString(bytesToString(decryptedRecord)) } - return null + return if (recordData != null) KeeperRecord(recordKey, record.recordUid, null, null, record.innerFolderUid, recordData, record.revision, files) else null } @ExperimentalSerializationApi