From 4a7f73f33377de12de6b8dc6bf4565311b22ce85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82a=C5=BCej=20Barcicki?= Date: Mon, 27 Apr 2026 23:04:13 +0200 Subject: [PATCH] refactor(server): Drop redundant equals/hashCode from data classes FeatureFlagCacheEntry and FeatureFlagCacheKey are data classes. Kotlin auto-generates equals() and hashCode(). The manual overrides duplicated this logic and required manual updates whenever fields were added (see commits 472cc44 and 74b4f49 in FeatureFlagCacheEntry). Removing them reduces the maintenance surface and makes the code more Kotlin idiomatic. --- .changeset/sour-icons-study.md | 5 ++++ .../server/internal/FeatureFlagCacheEntry.kt | 24 ------------------- .../server/internal/FeatureFlagCacheKey.kt | 22 +---------------- 3 files changed, 6 insertions(+), 45 deletions(-) create mode 100644 .changeset/sour-icons-study.md diff --git a/.changeset/sour-icons-study.md b/.changeset/sour-icons-study.md new file mode 100644 index 000000000..c52aec9cf --- /dev/null +++ b/.changeset/sour-icons-study.md @@ -0,0 +1,5 @@ +--- +"posthog-server": patch +--- + +Remove redundant equals/hashCode from FeatureFlag-related data classes. diff --git a/posthog-server/src/main/java/com/posthog/server/internal/FeatureFlagCacheEntry.kt b/posthog-server/src/main/java/com/posthog/server/internal/FeatureFlagCacheEntry.kt index 97e404987..3ba174bea 100644 --- a/posthog-server/src/main/java/com/posthog/server/internal/FeatureFlagCacheEntry.kt +++ b/posthog-server/src/main/java/com/posthog/server/internal/FeatureFlagCacheEntry.kt @@ -27,28 +27,4 @@ internal data class FeatureFlagCacheEntry( fun isExpired(currentTime: Long = System.currentTimeMillis()): Boolean { return currentTime >= expiresAt } - - override fun hashCode(): Int { - var result = flags?.hashCode() ?: 0 - result = 31 * result + (timestamp xor (timestamp ushr 32)).toInt() - result = 31 * result + (expiresAt xor (expiresAt ushr 32)).toInt() - result = 31 * result + (requestId?.hashCode() ?: 0) - result = 31 * result + (evaluatedAt?.hashCode() ?: 0) - result = 31 * result + (error?.hashCode() ?: 0) - return result - } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other !is FeatureFlagCacheEntry) return false - - if (flags != other.flags) return false - if (timestamp != other.timestamp) return false - if (expiresAt != other.expiresAt) return false - if (requestId != other.requestId) return false - if (evaluatedAt != other.evaluatedAt) return false - if (error != other.error) return false - - return true - } } diff --git a/posthog-server/src/main/java/com/posthog/server/internal/FeatureFlagCacheKey.kt b/posthog-server/src/main/java/com/posthog/server/internal/FeatureFlagCacheKey.kt index 0a4d657f8..a86f658c5 100644 --- a/posthog-server/src/main/java/com/posthog/server/internal/FeatureFlagCacheKey.kt +++ b/posthog-server/src/main/java/com/posthog/server/internal/FeatureFlagCacheKey.kt @@ -8,24 +8,4 @@ internal data class FeatureFlagCacheKey( val groups: Map?, val personProperties: Map?, val groupProperties: Map>?, -) { - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other !is FeatureFlagCacheKey) return false - - if (distinctId != other.distinctId) return false - if (groups != other.groups) return false - if (personProperties != other.personProperties) return false - if (groupProperties != other.groupProperties) return false - - return true - } - - override fun hashCode(): Int { - var result = distinctId?.hashCode() ?: 0 - result = 31 * result + (groups?.hashCode() ?: 0) - result = 31 * result + (personProperties?.hashCode() ?: 0) - result = 31 * result + (groupProperties?.hashCode() ?: 0) - return result - } -} +)