From 6d1b365860b566213440b2d17787415068158c91 Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Tue, 31 Mar 2026 17:47:04 +0530 Subject: [PATCH 1/3] Introduced as the primary API for payload, deprecating the old method for backward compatibility. Updated tests to reflect method changes. --- Changelog.md | 4 ++ pom.xml | 2 +- .../java/com/contentstack/utils/Utils.java | 39 +++++++++++++++++-- .../com/contentstack/utils/UtilTests.java | 24 +++++++++--- 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/Changelog.md b/Changelog.md index b9c0f02..3bae033 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,6 +3,10 @@ A brief description of what changes project contains ## Mar 23, 2026 +#### v1.4.0 + +- Enhancement: Added `Utils.getVariantMetadataTags(JSONObject, String)` and `Utils.getVariantMetadataTags(JSONArray, String)` as the canonical API for the `data-csvariants` payload. `Utils.getDataCsvariantsAttribute(...)` is deprecated and delegates to `getVariantMetadataTags(...)` for backward compatibility. + #### v1.3.0 - Enhancement: Variant Utility diff --git a/pom.xml b/pom.xml index 23fe3b9..3cca51d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.contentstack.sdk utils - 1.3.0 + 1.4.0 jar Contentstack-utils Java Utils SDK for Contentstack Content Delivery API, Contentstack is a headless CMS diff --git a/src/main/java/com/contentstack/utils/Utils.java b/src/main/java/com/contentstack/utils/Utils.java index 1acb7ee..86ea789 100644 --- a/src/main/java/com/contentstack/utils/Utils.java +++ b/src/main/java/com/contentstack/utils/Utils.java @@ -337,7 +337,16 @@ public static JSONArray getVariantAliases(JSONArray entries, String contentTypeU return variantResults; } - public static JSONObject getDataCsvariantsAttribute(JSONObject entry, String contentTypeUid) { + /** + * Builds the {@code data-csvariants} attribute value from one or more entries (variant metadata + * for personalization). Prefer this over {@link #getDataCsvariantsAttribute(JSONObject, String)}. + * + * @param entry one CDA entry, or {@code null} for an empty attribute + * @param contentTypeUid content type UID (required when {@code entry} is non-null) + * @return {@link JSONObject} with key {@code data-csvariants} whose value is a JSON string of the + * variant metadata array + */ + public static JSONObject getVariantMetadataTags(JSONObject entry, String contentTypeUid) { if (entry == null) { JSONObject result = new JSONObject(); @@ -346,10 +355,16 @@ public static JSONObject getDataCsvariantsAttribute(JSONObject entry, String con } JSONArray entries = new JSONArray(); entries.put(entry); - return getDataCsvariantsAttribute(entries, contentTypeUid); + return getVariantMetadataTags(entries, contentTypeUid); } - public static JSONObject getDataCsvariantsAttribute(JSONArray entries, String contentTypeUid) { + /** + * @param entries array of CDA entries, or {@code null} for an empty attribute + * @param contentTypeUid content type UID (required, non-empty) + * @return {@link JSONObject} with key {@code data-csvariants} whose value is a JSON string of the + * variant metadata array + */ + public static JSONObject getVariantMetadataTags(JSONArray entries, String contentTypeUid) { JSONObject result = new JSONObject(); if (entries == null) { @@ -366,6 +381,24 @@ public static JSONObject getDataCsvariantsAttribute(JSONArray entries, String co return result; } + /** + * @deprecated Use {@link #getVariantMetadataTags(JSONObject, String)} instead. Retained for + * backward compatibility with earlier releases. + */ + @Deprecated + public static JSONObject getDataCsvariantsAttribute(JSONObject entry, String contentTypeUid) { + return getVariantMetadataTags(entry, contentTypeUid); + } + + /** + * @deprecated Use {@link #getVariantMetadataTags(JSONArray, String)} instead. Retained for + * backward compatibility with earlier releases. + */ + @Deprecated + public static JSONObject getDataCsvariantsAttribute(JSONArray entries, String contentTypeUid) { + return getVariantMetadataTags(entries, contentTypeUid); + } + private static JSONArray extractVariantAliasesFromEntry(JSONObject entry) { JSONArray variantArray = new JSONArray(); JSONObject publishDetails = entry.optJSONObject("publish_details"); diff --git a/src/test/java/com/contentstack/utils/UtilTests.java b/src/test/java/com/contentstack/utils/UtilTests.java index 445b2e1..e44aab7 100644 --- a/src/test/java/com/contentstack/utils/UtilTests.java +++ b/src/test/java/com/contentstack/utils/UtilTests.java @@ -206,13 +206,13 @@ public void testGetVariantAliasesSingleEntry() throws IOException { } @Test - public void testGetDataCsvariantsAttributeSingleEntry() throws IOException { + public void testGetVariantMetadataTagsSingleEntry() throws IOException { final String json = "src/test/resources/variant_entry_single.json"; JSONObject full = new ReadResource().readJson(json); JSONObject entry = full.getJSONObject("entry"); String contentTypeUid = "movie"; - JSONObject result = Utils.getDataCsvariantsAttribute(entry, contentTypeUid); + JSONObject result = Utils.getVariantMetadataTags(entry, contentTypeUid); Assert.assertTrue(result.has("data-csvariants")); String dataCsvariantsStr = result.getString("data-csvariants"); @@ -253,13 +253,13 @@ public void testGetVariantAliasesMultipleEntries() throws IOException { } @Test - public void testGetDataCsvariantsAttributeMultipleEntries() throws IOException { + public void testGetVariantMetadataTagsMultipleEntries() throws IOException { final String json = "src/test/resources/variant_entries.json"; JSONObject full = new ReadResource().readJson(json); JSONArray entries = full.getJSONArray("entries"); String contentTypeUid = "movie"; - JSONObject result = Utils.getDataCsvariantsAttribute(entries, contentTypeUid); + JSONObject result = Utils.getVariantMetadataTags(entries, contentTypeUid); Assert.assertTrue(result.has("data-csvariants")); String dataCsvariantsStr = result.getString("data-csvariants"); @@ -295,12 +295,24 @@ public void testGetVariantAliasesThrowsWhenContentTypeUidEmpty() throws IOExcept } @Test - public void testGetDataCsvariantsAttributeWhenEntryNull() { - JSONObject result = Utils.getDataCsvariantsAttribute((JSONObject) null, "landing_page"); + public void testGetVariantMetadataTagsWhenEntryNull() { + JSONObject result = Utils.getVariantMetadataTags((JSONObject) null, "landing_page"); Assert.assertTrue(result.has("data-csvariants")); Assert.assertEquals("[]", result.getString("data-csvariants")); } + @Test + public void testGetDataCsvariantsAttributeDelegatesToGetVariantMetadataTags() throws IOException { + final String json = "src/test/resources/variant_entry_single.json"; + JSONObject full = new ReadResource().readJson(json); + JSONObject entry = full.getJSONObject("entry"); + String contentTypeUid = "movie"; + JSONObject fromNew = Utils.getVariantMetadataTags(entry, contentTypeUid); + @SuppressWarnings("deprecation") + JSONObject fromOld = Utils.getDataCsvariantsAttribute(entry, contentTypeUid); + Assert.assertEquals(fromNew.toString(), fromOld.toString()); + } + } From b1c155eaec4e95f68ae852bb5dce8ffd00113ae4 Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Tue, 31 Mar 2026 17:49:50 +0530 Subject: [PATCH 2/3] Snyk fixes --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 3cca51d..534bbc0 100644 --- a/pom.xml +++ b/pom.xml @@ -20,16 +20,16 @@ 2.2.1 3.1.1 4.13.2 - 1.18.3 + 1.22.1 1.1.1 3.3 1.5 0.8.0 2.5.3 2.0.1.Final - 20250517 - 6.2.17 - 1.14.0 + 20251224 + 7.0.5 + 1.15.0 From ffe0a8cd067817cb7904adeddbbda0d1e60eae53 Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Tue, 31 Mar 2026 17:55:41 +0530 Subject: [PATCH 3/3] snyk fix: spring-web upgrade --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 534bbc0..3f15ef1 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ 2.5.3 2.0.1.Final 20251224 - 7.0.5 + 7.0.6 1.15.0