Skip to content

Commit b46b6fd

Browse files
Merge pull request #136 from contentstack/staging
DX | 06-04-2026 | Release
2 parents c11a767 + 385e369 commit b46b6fd

File tree

4 files changed

+63
-14
lines changed

4 files changed

+63
-14
lines changed

Changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
A brief description of what changes project contains
44
## Mar 23, 2026
55

6+
#### v1.4.0
7+
8+
- 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.
9+
610
#### v1.3.0
711

812
- Enhancement: Variant Utility

pom.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.contentstack.sdk</groupId>
66
<artifactId>utils</artifactId>
7-
<version>1.3.0</version>
7+
<version>1.4.0</version>
88
<packaging>jar</packaging>
99
<name>Contentstack-utils</name>
1010
<description>Java Utils SDK for Contentstack Content Delivery API, Contentstack is a headless CMS</description>
@@ -20,16 +20,16 @@
2020
<maven-source-plugin.version>2.2.1</maven-source-plugin.version>
2121
<maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
2222
<junit.version>4.13.2</junit.version>
23-
<jsoup.version>1.18.3</jsoup.version>
23+
<jsoup.version>1.22.1</jsoup.version>
2424
<json.simple.version>1.1.1</json.simple.version>
2525
<maven-site-plugin.version>3.3</maven-site-plugin.version>
2626
<maven-gpg-plugin.version>1.5</maven-gpg-plugin.version>
2727
<central-publishing-maven-plugin.version>0.8.0</central-publishing-maven-plugin.version>
2828
<maven-release-plugin.version>2.5.3</maven-release-plugin.version>
2929
<validation-version>2.0.1.Final</validation-version>
30-
<json-version>20250517</json-version>
31-
<spring-web-version>6.2.17</spring-web-version>
32-
<org.apache.commons-text>1.14.0</org.apache.commons-text>
30+
<json-version>20251224</json-version>
31+
<spring-web-version>7.0.6</spring-web-version>
32+
<org.apache.commons-text>1.15.0</org.apache.commons-text>
3333
</properties>
3434

3535
<developers>

src/main/java/com/contentstack/utils/Utils.java

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,16 @@ public static JSONArray getVariantAliases(JSONArray entries, String contentTypeU
337337
return variantResults;
338338
}
339339

340-
public static JSONObject getDataCsvariantsAttribute(JSONObject entry, String contentTypeUid) {
340+
/**
341+
* Builds the {@code data-csvariants} attribute value from one or more entries (variant metadata
342+
* for personalization). Prefer this over {@link #getDataCsvariantsAttribute(JSONObject, String)}.
343+
*
344+
* @param entry one CDA entry, or {@code null} for an empty attribute
345+
* @param contentTypeUid content type UID (required when {@code entry} is non-null)
346+
* @return {@link JSONObject} with key {@code data-csvariants} whose value is a JSON string of the
347+
* variant metadata array
348+
*/
349+
public static JSONObject getVariantMetadataTags(JSONObject entry, String contentTypeUid) {
341350

342351
if (entry == null) {
343352
JSONObject result = new JSONObject();
@@ -346,10 +355,16 @@ public static JSONObject getDataCsvariantsAttribute(JSONObject entry, String con
346355
}
347356
JSONArray entries = new JSONArray();
348357
entries.put(entry);
349-
return getDataCsvariantsAttribute(entries, contentTypeUid);
358+
return getVariantMetadataTags(entries, contentTypeUid);
350359
}
351360

352-
public static JSONObject getDataCsvariantsAttribute(JSONArray entries, String contentTypeUid) {
361+
/**
362+
* @param entries array of CDA entries, or {@code null} for an empty attribute
363+
* @param contentTypeUid content type UID (required, non-empty)
364+
* @return {@link JSONObject} with key {@code data-csvariants} whose value is a JSON string of the
365+
* variant metadata array
366+
*/
367+
public static JSONObject getVariantMetadataTags(JSONArray entries, String contentTypeUid) {
353368

354369
JSONObject result = new JSONObject();
355370
if (entries == null) {
@@ -366,6 +381,24 @@ public static JSONObject getDataCsvariantsAttribute(JSONArray entries, String co
366381
return result;
367382
}
368383

384+
/**
385+
* @deprecated Use {@link #getVariantMetadataTags(JSONObject, String)} instead. Retained for
386+
* backward compatibility with earlier releases.
387+
*/
388+
@Deprecated
389+
public static JSONObject getDataCsvariantsAttribute(JSONObject entry, String contentTypeUid) {
390+
return getVariantMetadataTags(entry, contentTypeUid);
391+
}
392+
393+
/**
394+
* @deprecated Use {@link #getVariantMetadataTags(JSONArray, String)} instead. Retained for
395+
* backward compatibility with earlier releases.
396+
*/
397+
@Deprecated
398+
public static JSONObject getDataCsvariantsAttribute(JSONArray entries, String contentTypeUid) {
399+
return getVariantMetadataTags(entries, contentTypeUid);
400+
}
401+
369402
private static JSONArray extractVariantAliasesFromEntry(JSONObject entry) {
370403
JSONArray variantArray = new JSONArray();
371404
JSONObject publishDetails = entry.optJSONObject("publish_details");

src/test/java/com/contentstack/utils/UtilTests.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,13 +206,13 @@ public void testGetVariantAliasesSingleEntry() throws IOException {
206206
}
207207

208208
@Test
209-
public void testGetDataCsvariantsAttributeSingleEntry() throws IOException {
209+
public void testGetVariantMetadataTagsSingleEntry() throws IOException {
210210
final String json = "src/test/resources/variant_entry_single.json";
211211
JSONObject full = new ReadResource().readJson(json);
212212
JSONObject entry = full.getJSONObject("entry");
213213
String contentTypeUid = "movie";
214214

215-
JSONObject result = Utils.getDataCsvariantsAttribute(entry, contentTypeUid);
215+
JSONObject result = Utils.getVariantMetadataTags(entry, contentTypeUid);
216216

217217
Assert.assertTrue(result.has("data-csvariants"));
218218
String dataCsvariantsStr = result.getString("data-csvariants");
@@ -253,13 +253,13 @@ public void testGetVariantAliasesMultipleEntries() throws IOException {
253253
}
254254

255255
@Test
256-
public void testGetDataCsvariantsAttributeMultipleEntries() throws IOException {
256+
public void testGetVariantMetadataTagsMultipleEntries() throws IOException {
257257
final String json = "src/test/resources/variant_entries.json";
258258
JSONObject full = new ReadResource().readJson(json);
259259
JSONArray entries = full.getJSONArray("entries");
260260
String contentTypeUid = "movie";
261261

262-
JSONObject result = Utils.getDataCsvariantsAttribute(entries, contentTypeUid);
262+
JSONObject result = Utils.getVariantMetadataTags(entries, contentTypeUid);
263263

264264
Assert.assertTrue(result.has("data-csvariants"));
265265
String dataCsvariantsStr = result.getString("data-csvariants");
@@ -295,12 +295,24 @@ public void testGetVariantAliasesThrowsWhenContentTypeUidEmpty() throws IOExcept
295295
}
296296

297297
@Test
298-
public void testGetDataCsvariantsAttributeWhenEntryNull() {
299-
JSONObject result = Utils.getDataCsvariantsAttribute((JSONObject) null, "landing_page");
298+
public void testGetVariantMetadataTagsWhenEntryNull() {
299+
JSONObject result = Utils.getVariantMetadataTags((JSONObject) null, "landing_page");
300300
Assert.assertTrue(result.has("data-csvariants"));
301301
Assert.assertEquals("[]", result.getString("data-csvariants"));
302302
}
303303

304+
@Test
305+
public void testGetDataCsvariantsAttributeDelegatesToGetVariantMetadataTags() throws IOException {
306+
final String json = "src/test/resources/variant_entry_single.json";
307+
JSONObject full = new ReadResource().readJson(json);
308+
JSONObject entry = full.getJSONObject("entry");
309+
String contentTypeUid = "movie";
310+
JSONObject fromNew = Utils.getVariantMetadataTags(entry, contentTypeUid);
311+
@SuppressWarnings("deprecation")
312+
JSONObject fromOld = Utils.getDataCsvariantsAttribute(entry, contentTypeUid);
313+
Assert.assertEquals(fromNew.toString(), fromOld.toString());
314+
}
315+
304316
}
305317

306318

0 commit comments

Comments
 (0)