From e5543004978e0422395c9ddba3e1541b636fa243 Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Tue, 25 Jun 2024 12:57:43 +0530 Subject: [PATCH 1/7] feat : variants implementation --- src/main/java/com/contentstack/sdk/Entry.java | 35 ++++++++++++++ .../java/com/contentstack/sdk/TestEntry.java | 46 +++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/src/main/java/com/contentstack/sdk/Entry.java b/src/main/java/com/contentstack/sdk/Entry.java index bb5faf3b..6a5b1562 100644 --- a/src/main/java/com/contentstack/sdk/Entry.java +++ b/src/main/java/com/contentstack/sdk/Entry.java @@ -1099,4 +1099,39 @@ public Entry includeMetadata() { params.put("include_metadata", true); return this; } + + /** + * @method variants + * @memberof Entry + * @description The variant header will be added to client + * @returns {Entry} + * @example + * import contentstack from '@contentstack/delivery-sdk' + * + * Stack stack = contentstack.Stack("apiKey", "deliveryToken", "environment"); + * Entry entry = stack.contentType("user").entry("entry_uid").variant("variant_uid").fetch(); + */ + public Entry variants(@NotNull String variants){ + if (variants != null && variants.length() > 0) { + this.headers.put("x-cs-variant-uid", variants.trim()); + } + return this; + + } + public Entry variants(@NotNull String[] variants){ + if (variants != null && variants.length > 0) { + List variantList = new ArrayList<>(); + for (String variant : variants) { + if(variant != null && !variant.trim().isEmpty()) + variantList.add(variant.trim()); + } + if(!variantList.isEmpty()){ + this.headers.put("x-cs-variant-uid", String.join(", ", variantList)); + } + } + return this; + } + public LinkedHashMap getHeaders() { + return headers; +} } diff --git a/src/test/java/com/contentstack/sdk/TestEntry.java b/src/test/java/com/contentstack/sdk/TestEntry.java index 4595b3ad..a4a9c455 100644 --- a/src/test/java/com/contentstack/sdk/TestEntry.java +++ b/src/test/java/com/contentstack/sdk/TestEntry.java @@ -7,6 +7,8 @@ import java.util.GregorianCalendar; import java.util.logging.Logger; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; @TestInstance(TestInstance.Lifecycle.PER_CLASS) @@ -62,6 +64,50 @@ public void onCompletion(ResponseType responseType, Error error) { }); logger.info("passed.."); } + @Test + void VariantsTestSingleUid(){ + entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(" cs672c33271558d8b0 "); + entry.fetch(new EntryResultCallBack() { + @Override + public void onCompletion(ResponseType responseType, Error error) { + assertEquals("cs672c33271558d8b0", entry.getHeaders().get("x-cs-variant-uid")); + System.out.println(entry.toJSON()); + } + }); + } + @Test + void VariantsTestArray(){ + entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(new String[]{" cs672c33271558d8b0"," cs321fbc07ec71861b"," cs321fbc07ec71861b "}); + entry.fetch(new EntryResultCallBack() { + @Override + public void onCompletion(ResponseType responseType, Error error) { + System.out.println(entry.toJSON()); + } + }); + } + + @Test + void VariantsTestArrayWithMixedElements() { + entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(new String[]{"", " cs672c33271558d8b0 ", null, " "}); + entry.fetch(new EntryResultCallBack() { + @Override + public void onCompletion(ResponseType responseType, Error error) { + System.out.println(entry.toJSON()); + } + }); + } + + @Test + void VariantsTestNullString() { + entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants((String) null); + entry.fetch(new EntryResultCallBack() { + @Override + public void onCompletion(ResponseType responseType, Error error) { + assertNull(entry.getHeaders().get("x-cs-variant-uid")); + System.out.println(entry.toJSON()); + } + }); + } @Test @Order(4) From 926a8afaad360fe10f60e6c0cdc7e4571575d18c Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Thu, 27 Jun 2024 12:51:00 +0530 Subject: [PATCH 2/7] Chore : indentation and dummy ids added --- src/main/java/com/contentstack/sdk/Entry.java | 12 ++++++----- .../com/contentstack/sdk/Credentials.java | 12 +++++++++++ .../java/com/contentstack/sdk/TestEntry.java | 21 ++++++------------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/contentstack/sdk/Entry.java b/src/main/java/com/contentstack/sdk/Entry.java index 6a5b1562..ee776d1b 100644 --- a/src/main/java/com/contentstack/sdk/Entry.java +++ b/src/main/java/com/contentstack/sdk/Entry.java @@ -1111,14 +1111,15 @@ public Entry includeMetadata() { * Stack stack = contentstack.Stack("apiKey", "deliveryToken", "environment"); * Entry entry = stack.contentType("user").entry("entry_uid").variant("variant_uid").fetch(); */ - public Entry variants(@NotNull String variants){ - if (variants != null && variants.length() > 0) { - this.headers.put("x-cs-variant-uid", variants.trim()); + public Entry variants(@NotNull String variants) { + if (variants != null && variants.length() > 0) { + this.headers.put("x-cs-variant-uid", variants.trim()); } return this; } - public Entry variants(@NotNull String[] variants){ + + public Entry variants(@NotNull String[] variants) { if (variants != null && variants.length > 0) { List variantList = new ArrayList<>(); for (String variant : variants) { @@ -1131,7 +1132,8 @@ public Entry variants(@NotNull String[] variants){ } return this; } + public LinkedHashMap getHeaders() { return headers; -} + } } diff --git a/src/test/java/com/contentstack/sdk/Credentials.java b/src/test/java/com/contentstack/sdk/Credentials.java index e2a93451..4da2fa5a 100644 --- a/src/test/java/com/contentstack/sdk/Credentials.java +++ b/src/test/java/com/contentstack/sdk/Credentials.java @@ -2,6 +2,7 @@ import io.github.cdimascio.dotenv.Dotenv; import java.rmi.AccessException; +import java.util.Arrays; public class Credentials { static Dotenv env = getEnv(); @@ -32,7 +33,18 @@ public static Dotenv getEnv() { public final static String ENVIRONMENT = (env.get("ENVIRONMENT") != null) ? env.get("ENVIRONMENT") : "env1"; public final static String CONTENT_TYPE = (env.get("contentType") != null) ? env.get("contentType") : "product"; public final static String ENTRY_UID = (env.get("assetUid") != null) ? env.get("assetUid") : ""; + public final static String VARIANT_UID = (env.get("variantUid") != null) ? env.get("variantUid") : ""; + public final static String[] VARIANTS_UID ; + static { String variantsUidString = env.get("variantsUid"); + if (variantsUidString != null && !variantsUidString.trim().isEmpty()) { + VARIANTS_UID = Arrays.stream(variantsUidString.split(",")) + .map(String::trim) + .toArray(String[]::new); + } else { + VARIANTS_UID = new String[]{}; + } + } private static volatile Stack stack; diff --git a/src/test/java/com/contentstack/sdk/TestEntry.java b/src/test/java/com/contentstack/sdk/TestEntry.java index a4a9c455..bcf91484 100644 --- a/src/test/java/com/contentstack/sdk/TestEntry.java +++ b/src/test/java/com/contentstack/sdk/TestEntry.java @@ -20,7 +20,9 @@ class TestEntry { private final Stack stack = Credentials.getStack(); private Entry entry; private final String CONTENT_TYPE = Credentials.CONTENT_TYPE; - + private final String VARIANT_UID = Credentials.VARIANT_UID; + private static final String[] VARIANT_UIDS = Credentials.VARIANTS_UID ; + @Test @Order(1) void entryCallingPrivateModifier() { @@ -66,18 +68,18 @@ public void onCompletion(ResponseType responseType, Error error) { } @Test void VariantsTestSingleUid(){ - entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(" cs672c33271558d8b0 "); + entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(VARIANT_UID); entry.fetch(new EntryResultCallBack() { @Override public void onCompletion(ResponseType responseType, Error error) { - assertEquals("cs672c33271558d8b0", entry.getHeaders().get("x-cs-variant-uid")); + assertEquals(VARIANT_UID.trim(), entry.getHeaders().get("x-cs-variant-uid")); System.out.println(entry.toJSON()); } }); } @Test void VariantsTestArray(){ - entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(new String[]{" cs672c33271558d8b0"," cs321fbc07ec71861b"," cs321fbc07ec71861b "}); + entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(VARIANT_UIDS); entry.fetch(new EntryResultCallBack() { @Override public void onCompletion(ResponseType responseType, Error error) { @@ -86,17 +88,6 @@ public void onCompletion(ResponseType responseType, Error error) { }); } - @Test - void VariantsTestArrayWithMixedElements() { - entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(new String[]{"", " cs672c33271558d8b0 ", null, " "}); - entry.fetch(new EntryResultCallBack() { - @Override - public void onCompletion(ResponseType responseType, Error error) { - System.out.println(entry.toJSON()); - } - }); - } - @Test void VariantsTestNullString() { entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants((String) null); From e3d8c1e78ca87919c95d67cad99fa79cc5ec8cd9 Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Thu, 27 Jun 2024 13:06:45 +0530 Subject: [PATCH 3/7] Chore : Indentation done --- src/main/java/com/contentstack/sdk/Entry.java | 483 +++++++++--------- .../com/contentstack/sdk/Credentials.java | 14 +- .../java/com/contentstack/sdk/TestEntry.java | 32 +- 3 files changed, 278 insertions(+), 251 deletions(-) diff --git a/src/main/java/com/contentstack/sdk/Entry.java b/src/main/java/com/contentstack/sdk/Entry.java index ee776d1b..caae10b9 100644 --- a/src/main/java/com/contentstack/sdk/Entry.java +++ b/src/main/java/com/contentstack/sdk/Entry.java @@ -13,7 +13,9 @@ /** * The Get a single - * Entry request + * Entry + * request * fetches a particular entry of a content type. * * @author Shailesh Mishra @@ -73,14 +75,14 @@ public Entry configure(JSONObject jsonObject) { * Set headers. * * @param key - * custom_header_key + * custom_header_key * @param value - * custom_header_value
- *
- * Example :
+ * custom_header_value
+ *
+ * Example :
* - *
-     *                                                                                         
+ *
+     *              
*/ public void setHeader(String key, String value) { @@ -93,15 +95,15 @@ public void setHeader(String key, String value) { * Remove header key. * * @param key - * custom_header_key
- *
- * Example :
- * - *
-     *                                                                         Stack stack = Contentstack.stack("apiKey", "deliveryToken", "environment");
-     *                                                                         Entry entry = stack.contentType("form_name").entry("entry_uid");
-     *                                                                         entry.removeHeader("custom_header_key");
-     *                                                                         
+ * custom_header_key
+ *
+ * Example :
+ * + *
+     *            Stack stack = Contentstack.stack("apiKey", "deliveryToken", "environment");
+     *            Entry entry = stack.contentType("form_name").entry("entry_uid");
+     *            entry.removeHeader("custom_header_key");
+     *            
*/ public void removeHeader(String key) { @@ -114,10 +116,10 @@ public void removeHeader(String key) { * Get title string * * @return String @title
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         String title = entry.getTitle();
      *         
*/ @@ -130,10 +132,10 @@ public String getTitle() { * Get url string * * @return String @url
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         String url = entry.getURL();
      *         
*/ @@ -146,10 +148,10 @@ public String getURL() { * Get tags. * * @return String @tags
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         String[] tags = entry.getURL();
      *         
*/ @@ -166,10 +168,10 @@ protected void setTags(String[] tags) { * Get contentType name. * * @return String @contentTypeName
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         String contentType = entry.getFileType();
      *         
*/ @@ -182,10 +184,10 @@ public String getContentType() { * Get uid. * * @return String @uid
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         String uid = entry.getUid();
      *         
*/ @@ -204,12 +206,12 @@ public String getLocale() { /** * @param locale - * {@link String} + * {@link String} * @return Entry
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         Entry entry = entry.setLanguage();
      *         
*/ @@ -223,10 +225,10 @@ public Entry setLocale(@NotNull String locale) { * Get entry representation in json * * @return resultJson
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         JSONObject json = entry.toJSON();
      *         
*/ @@ -239,13 +241,14 @@ public JSONObject toJSON() { * Get object value for key. * * @param key - * field_uid as key.
- *
- * Example :
- * - *
-     *                                                                                                                                                                                                                                                                    Object obj = entry.get("key");
-     *                                                                                                                                                                                                                                                                    
+ * field_uid as key.
+ *
+ * Example :
+ * + *
+     *            Object obj = entry.get("key");
+     *            
+ * * @return Object @resultJson */ public Object get(@NotNull String key) { @@ -256,13 +259,14 @@ public Object get(@NotNull String key) { * Get string value for key. * * @param key - * field_uid as key.
- *
- * Example :
- * - *
-     *                                                                                                                                                                                                                                                                    String value = entry.getString("key");
-     *                                                                                                                                                                                                                                                                    
+ * field_uid as key.
+ *
+ * Example :
+ * + *
+     *            String value = entry.getString("key");
+     *            
+ * * @return String @getString */ @@ -278,13 +282,14 @@ public String getString(@NotNull String key) { * Get boolean value for key. * * @param key - * field_uid as key.
- *
- * Example :
- * - *
-     *                                                                                                                                                                                                                                                                    Boolean value = entry.getBoolean("key");
-     *                                                                                                                                                                                                                                                                    
+ * field_uid as key.
+ *
+ * Example :
+ * + *
+     *            Boolean value = entry.getBoolean("key");
+     *            
+ * * @return boolean @getBoolean */ @@ -300,13 +305,14 @@ public Boolean getBoolean(@NotNull String key) { * Get {@link JSONArray} value for key * * @param key - * field_uid as key.
- *
- * Example :
- * - *
-     *                                                                                                                                                                                                                                                                    JSONArray value = entry.getJSONArray("key");
-     *                                                                                                                                                                                                                                                                    
+ * field_uid as key.
+ *
+ * Example :
+ * + *
+     *            JSONArray value = entry.getJSONArray("key");
+     *            
+ * * @return JSONArray @getJSONArray */ @@ -322,13 +328,14 @@ public JSONArray getJSONArray(@NotNull String key) { * Get {@link JSONObject} value for key * * @param key - * field_uid as key.
- *
- * Example :
- * - *
-     *                                                                                                                                                                                                                                                                    JSONObject value = entry.getJSONObject("key");
-     *                                                                                                                                                                                                                                                                    
+ * field_uid as key.
+ *
+ * Example :
+ * + *
+     *            JSONObject value = entry.getJSONObject("key");
+     *            
+ * * @return JSONObject @getJSONObject */ public JSONObject getJSONObject(@NotNull String key) { @@ -343,13 +350,14 @@ public JSONObject getJSONObject(@NotNull String key) { * Get {@link JSONObject} value for key * * @param key - * field_uid as key.
- *
- * Example :
- * - *
-     *                                                                                                                                                                                                                                                                    JSONObject value = entry.getJSONObject("key");
-     *                                                                                                                                                                                                                                                                    
+ * field_uid as key.
+ *
+ * Example :
+ * + *
+     *            JSONObject value = entry.getJSONObject("key");
+     *            
+ * * @return Number @getNumber */ @@ -365,13 +373,14 @@ public Number getNumber(@NotNull String key) { * Get integer value for key * * @param key - * field_uid as key.
- *
- * Example :
- * - *
-     *                                                                                                                                                                                                                                                                    int value = entry.getInt("key");
-     *                                                                                                                                                                                                                                                                    
+ * field_uid as key.
+ *
+ * Example :
+ * + *
+     *            int value = entry.getInt("key");
+     *            
+ * * @return int @getInt */ @@ -387,12 +396,12 @@ public int getInt(@NotNull String key) { * Get integer value for key * * @param key - * field_uid as key. + * field_uid as key. * @return float @getFloat
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         float value = entry.getFloat("key");
      *         
*/ @@ -409,12 +418,12 @@ public float getFloat(@NotNull String key) { * Get double value for key * * @param key - * field_uid as key. + * field_uid as key. * @return double @getDouble
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         double value = entry.getDouble("key");
      *         
*/ @@ -431,13 +440,14 @@ public double getDouble(@NotNull String key) { * Get long value for key * * @param key - * field_uid as key.
- *
- * Example :
- * - *
-     *                                                                                 long value = entry.getLong("key");
-     *                                                                                 
+ * field_uid as key.
+ *
+ * Example :
+ * + *
+     *            long value = entry.getLong("key");
+     *            
+ * * @return long @getLong */ @@ -453,15 +463,16 @@ public long getLong(@NotNull String key) { * Get short value for key * * @param key - * field_uid as key. + * field_uid as key. * - *
- *
- * Example :
+ *
+ *
+ * Example :
* - *
-     *                                                                                                                                                                                                                                                                    short value = entry.getShort("key");
-     *                                                                                                                                                                                                                                                                    
+ *
+     *            short value = entry.getShort("key");
+     *            
+ * * @return short @getShort */ public short getShort(@NotNull String key) { @@ -476,13 +487,14 @@ public short getShort(@NotNull String key) { * Get {@link Calendar} value for key * * @param key - * field_uid as key.
- *
- * Example :
- * - *
-     *                                                                                                                                                                                                                                                                    Calendar value = entry.getDate("key");
-     *                                                                                                                                                                                                                                                                    
+ * field_uid as key.
+ *
+ * Example :
+ * + *
+     *            Calendar value = entry.getDate("key");
+     *            
+ * * @return Calendar @getDate */ @@ -500,10 +512,10 @@ public Calendar getDate(@NotNull String key) { * Get {@link Calendar} value of creation time of entry. * * @return Calendar @getCreateAt
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         Calendar createdAt = entry.getCreateAt("key");
      *         
*/ @@ -522,10 +534,10 @@ public Calendar getCreateAt() { * Get uid who created this entry. * * @return String @getCreatedBy
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         String createdBy_uid = entry.getCreatedBy();
      *         
*/ @@ -537,10 +549,10 @@ public String getCreatedBy() { * Get {@link Calendar} value of updating time of entry. * * @return Calendar @getUpdateAt
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         Calendar updatedAt = entry.getUpdateAt("key");
      *         
*/ @@ -559,10 +571,10 @@ public Calendar getUpdateAt() { * Get uid who updated this entry. * * @return String @getString
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         String updatedBy_uid = entry.getUpdatedBy();
      *         
*/ @@ -575,11 +587,11 @@ public String getUpdatedBy() { * * @return Calendar * - *
- *
- * Example :
+ *
+ *
+ * Example :
* - *
+     *         
      *         Calendar updatedAt = entry.getUpdateAt("key");
      *         
*/ @@ -598,10 +610,10 @@ public Calendar getDeleteAt() { * Get uid who deleted this entry. * * @return String
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         String deletedBy_uid = entry.getDeletedBy();
      *         
*/ @@ -613,12 +625,12 @@ public String getDeletedBy() { * Get an asset from the entry * * @param key - * field_uid as key. + * field_uid as key. * @return Asset
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         Asset asset = entry.getAsset("key");
      *         
*/ @@ -640,7 +652,7 @@ public Asset getAsset(String key) { *
* * @param key - * This is the String key + * This is the String key * @return ArrayList This returns list of Assets. */ @@ -659,14 +671,15 @@ public List getAssets(String key) { /** * @param key - * field_uid as key.
- *
- * Example :
+ * field_uid as key.
+ *
+ * Example :
* - *
+     *            
      *                                                                                                                                                                                                                                                                     Group innerGroup = entry.getGroup("key");
      *                                                                                                                                                                                                                                                                     return null
-     *                                                                                                                                                                                                                                                                    
+ *
+ * * @return {@link Group} */ public Group getGroup(String key) { @@ -682,12 +695,12 @@ public Group getGroup(String key) { * Note :- This will work when group is multiple true. * * @param key - * field_uid as key. + * field_uid as key. * @return list of group from entry
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         Group innerGroup = entry.getGroups("key");
      *         
*/ @@ -708,15 +721,16 @@ public List getGroups(String key) { * Get value for the given reference key. * * @param refKey - * key of a reference field. + * key of a reference field. * @param refContentType - * class uid. - * @return {@link ArrayList} of {@link Entry} instances. Also specified contentType value will be set as class uid - * for all {@link Entry} instance.
- *
- * Example :
+ * class uid. + * @return {@link ArrayList} of {@link Entry} instances. Also specified + * contentType value will be set as class uid + * for all {@link Entry} instance.
+ *
+ * Example :
* - *
+     *         
      *          {@code
      *          Stack stack = Contentstack.stack("apiKey", "deliveryToken", "environment");
      *          Query csQuery = stack.contentType("contentType_name").query();
@@ -763,10 +777,11 @@ public List getAllEntries(String refKey, String refContentType) {
     }
 
     /**
-     * Specifies list of field ids that would be 'excluded' from the response.
+     * Specifies list of field ids that would be 'excluded' from the
+     * response.
      *
      * @param fieldUid
-     *         field uid which get 'excluded' from the response.
+     *                 field uid which get 'excluded' from the response.
      */
 
     public Entry except(@NotNull String[] fieldUid) {
@@ -785,7 +800,7 @@ public Entry except(@NotNull String[] fieldUid) {
      * Add a constraint that requires a particular reference key details.
      *
      * @param referenceField
-     *         key that to be constrained.
+     *                       key that to be constrained.
      */
     public Entry includeReference(@NotNull String referenceField) {
         if (!referenceField.isEmpty()) {
@@ -802,7 +817,7 @@ public Entry includeReference(@NotNull String referenceField) {
      * Add a constraint that requires a particular reference key details.
      *
      * @param referenceFields
-     *         array key that to be constrained.
+     *                        array key that to be constrained.
      */
     public Entry includeReference(@NotNull String[] referenceFields) {
         if (referenceFields.length > 0) {
@@ -818,15 +833,17 @@ public Entry includeReference(@NotNull String[] referenceFields) {
     }
 
     /**
-     * Specifies an array of 'only' keys in BASE object that would be 'included' in the response.
+     * Specifies an array of 'only' keys in BASE object that would be
+     * 'included' in the response.
      *
      * @param fieldUid
-     *         Array of the 'only' reference keys to be included in response.
+     *                 Array of the 'only' reference keys to be included in
+     *                 response.
      * @return {@link Entry} object, so you can chain this call. 
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *          Stack stack = Contentstack.stack("apiKey", "deliveryToken", "environment");
      *          Entry entry = stack.contentType("form_name").entry("entry_uid");
* entry.only(new String[]{"name", "description"}); @@ -845,12 +862,14 @@ public Entry only(String[] fieldUid) { } /** - * Specifies an array of 'only' keys that would be 'included' in the response. + * Specifies an array of 'only' keys that would be 'included' in + * the response. * * @param fieldUid - * Array of the 'only' reference keys to be included in response. + * Array of the 'only' reference keys to be + * included in response. * @param referenceFieldUid - * Key who has reference to some other class object. + * Key who has reference to some other class object. */ public Entry onlyWithReferenceUid(@NotNull List fieldUid, @NotNull String referenceFieldUid) { @@ -865,12 +884,14 @@ public Entry onlyWithReferenceUid(@NotNull List fieldUid, @NotNull Strin } /** - * Specifies an array of 'except' keys that would be 'excluded' in the response. + * Specifies an array of 'except' keys that would be 'excluded' + * in the response. * * @param fieldUid - * Array of the 'except' reference keys to be excluded in response. + * Array of the 'except' reference keys to be + * excluded in response. * @param referenceFieldUid - * Key who has reference to some other class object. + * Key who has reference to some other class object. */ public Entry exceptWithReferenceUid(@NotNull List fieldUid, @NotNull String referenceFieldUid) { if (exceptJsonObject == null) { @@ -887,11 +908,12 @@ public Entry exceptWithReferenceUid(@NotNull List fieldUid, @NotNull Str * Fetches the latest version of the entries from Contentstack.com content stack * * @param callback - * {@link EntryResultCallBack} object to notify the application when the request has completed.
- *
- * Example :
+ * {@link EntryResultCallBack} object to notify the application + * when the request has completed.
+ *
+ * Example :
* - *
+     *                 
      *                        {@code
      *                       Stack stack = Contentstack.stack("apiKey", "deliveryToken", "environment");
      *                       Entry entry = stack.contentType("form_name").entry("entry_uid");
@@ -917,7 +939,6 @@ public void fetch(EntryResultCallBack callback) { fetchFromNetwork(urlString, urlQueries, callback); } - private void fetchFromNetwork(String urlString, JSONObject urlQueries, EntryResultCallBack callBack) { JSONObject mainJson = new JSONObject(); @@ -929,7 +950,6 @@ private void fetchFromNetwork(String urlString, JSONObject urlQueries, EntryResu } - private LinkedHashMap getUrlParams(JSONObject jsonMain) { JSONObject queryJSON = jsonMain.optJSONObject("query"); LinkedHashMap hashMap = new LinkedHashMap<>(); @@ -987,16 +1007,16 @@ private void throwException(@Nullable String errorMsg, Exception e, EntryResultC * This method adds key and value to an Entry. * * @param key - * The key as string which needs to be added to an Entry + * The key as string which needs to be added to an Entry * @param value - * The value as string which needs to be added to an Entry + * The value as string which needs to be added to an Entry * @return {@link Entry} * - *
- *
- * Example :
+ *
+ *
+ * Example :
* - *
+     *         
      *         {@code
      *         Stack stack = Contentstack.stack("apiKey", "deliveryToken", "environment");
      *         final Entry entry = stack.contentType("user").entry("entryUid"); 
@@ -1016,7 +1036,8 @@ public Entry addParam(@NotNull String key, @NotNull String value) { } /** - * This method also includes the content type UIDs of the referenced entries returned in the response + * This method also includes the content type UIDs of the referenced entries + * returned in the response */ public Entry includeReferenceContentTypeUID() { params.put("include_reference_content_type_uid", "true"); @@ -1034,13 +1055,14 @@ public Entry includeContentType() { } /** - * Retrieve the published content of the fallback locale if an entry is not localized in specified locale + * Retrieve the published content of the fallback locale if an entry is not + * localized in specified locale * * @return {@link Entry} object, so you can chain this call.
- *
- * Example :
+ *
+ * Example :
* - *
+     *         
      *         Stack stack = Contentstack.stack("apiKey", "deliveryToken", "environment");
      *         final Entry entry = stack.contentType("user").entry("entryUid");
      *         entry.includeFallback();
@@ -1052,7 +1074,8 @@ public Entry includeFallback() {
     }
 
     /**
-     * includeEmbeddedItems instance of Entry Include Embedded Objects (Entries and Assets) along with entry/entries
+     * includeEmbeddedItems instance of Entry Include Embedded Objects (Entries and
+     * Assets) along with entry/entries
      * details.
*/ public Entry includeEmbeddedItems() { @@ -1065,11 +1088,11 @@ public Entry includeEmbeddedItems() { * * @return {@link Entry} object, so you can chain this call. * - *
- *
- * Example :
+ *
+ *
+ * Example :
* - *
+     *         
      *         Stack stack = Contentstack.stack("apiKey", "deliveryToken", "environment");
      *         final Entry entry = stack.contentType("user").entry("entryUid");
      *         entry.includeBranch();
@@ -1085,11 +1108,11 @@ public Entry includeBranch() {
      *
      * @return {@link Entry} object, so you can chain this call.
      *
-     * 
- *
- * Example :
+ *
+ *
+ * Example :
* - *
+     *         
      *         Stack stack = Contentstack.stack("apiKey", "deliveryToken", "environment");
      *         final Entry entry = stack.contentType("user").entry("entryUid");
      *         entry.includeMetadata();
@@ -1101,39 +1124,41 @@ public Entry includeMetadata() {
     }
 
     /**
-    * @method variants
-    * @memberof Entry
-    * @description The variant header will be added to client
-    * @returns {Entry}
-    * @example
-    * import contentstack from '@contentstack/delivery-sdk'
-    *
-    * Stack stack = contentstack.Stack("apiKey", "deliveryToken", "environment");
-    * Entry entry = stack.contentType("user").entry("entry_uid").variant("variant_uid").fetch();
-    */
-   public Entry variants(@NotNull String variants) {
-    if (variants != null && variants.length() > 0) {
-        this.headers.put("x-cs-variant-uid", variants.trim());
-    }
-    return this;
-  
-  }
-
-  public Entry variants(@NotNull String[] variants) {
-    if (variants != null && variants.length > 0) {
-        List variantList = new ArrayList<>();
-        for (String variant : variants) {
-            if(variant != null && !variant.trim().isEmpty())
-            variantList.add(variant.trim());
+     * @method variants
+     * @memberof Entry
+     * @description The variant header will be added to client
+     * @returns {Entry}
+     * @example
+     *          import contentstack from '@contentstack/delivery-sdk'
+     *
+     *          Stack stack = contentstack.Stack("apiKey", "deliveryToken",
+     *          "environment");
+     *          Entry entry =
+     *          stack.contentType("user").entry("entry_uid").variant("variant_uid").fetch();
+     */
+    public Entry variants(@NotNull String variants) {
+        if (variants != null && variants.length() > 0) {
+            this.headers.put("x-cs-variant-uid", variants.trim());
         }
-        if(!variantList.isEmpty()){
-            this.headers.put("x-cs-variant-uid", String.join(", ", variantList));
+        return this;
+
+    }
+
+    public Entry variants(@NotNull String[] variants) {
+        if (variants != null && variants.length > 0) {
+            List variantList = new ArrayList<>();
+            for (String variant : variants) {
+                if (variant != null && !variant.trim().isEmpty())
+                    variantList.add(variant.trim());
+            }
+            if (!variantList.isEmpty()) {
+                this.headers.put("x-cs-variant-uid", String.join(", ", variantList));
+            }
         }
+        return this;
+    }
+
+    public LinkedHashMap getHeaders() {
+        return headers;
     }
-    return this;
-  }
-  
-  public LinkedHashMap getHeaders() {
-    return headers;
-  }   
 }
diff --git a/src/test/java/com/contentstack/sdk/Credentials.java b/src/test/java/com/contentstack/sdk/Credentials.java
index 4da2fa5a..e513b837 100644
--- a/src/test/java/com/contentstack/sdk/Credentials.java
+++ b/src/test/java/com/contentstack/sdk/Credentials.java
@@ -1,4 +1,5 @@
 package com.contentstack.sdk;
+
 import io.github.cdimascio.dotenv.Dotenv;
 
 import java.rmi.AccessException;
@@ -7,7 +8,6 @@
 public class Credentials {
     static Dotenv env = getEnv();
 
-
     private static String envChecker() {
         String githubActions = System.getenv("GITHUB_ACTIONS");
         if (githubActions != null && githubActions.equals("true")) {
@@ -26,7 +26,6 @@ public static Dotenv getEnv() {
         return Dotenv.load();
     }
 
-
     public final static String HOST = (env.get("HOST") != null) ? env.get("HOST") : "cdn.contentstack.io";
     public final static String API_KEY = (env.get("API_KEY") != null) ? env.get("API_KEY") : "";
     public final static String DELIVERY_TOKEN = (env.get("DELIVERY_TOKEN") != null) ? env.get("DELIVERY_TOKEN") : "";
@@ -34,15 +33,16 @@ public static Dotenv getEnv() {
     public final static String CONTENT_TYPE = (env.get("contentType") != null) ? env.get("contentType") : "product";
     public final static String ENTRY_UID = (env.get("assetUid") != null) ? env.get("assetUid") : "";
     public final static String VARIANT_UID = (env.get("variantUid") != null) ? env.get("variantUid") : "";
-    public final static String[] VARIANTS_UID ;
-   static {  String variantsUidString = env.get("variantsUid");
+    public final static String[] VARIANTS_UID;
+    static {
+        String variantsUidString = env.get("variantsUid");
 
         if (variantsUidString != null && !variantsUidString.trim().isEmpty()) {
             VARIANTS_UID = Arrays.stream(variantsUidString.split(","))
-                                 .map(String::trim)
-                                 .toArray(String[]::new);
+                    .map(String::trim)
+                    .toArray(String[]::new);
         } else {
-            VARIANTS_UID = new String[]{};
+            VARIANTS_UID = new String[] {};
         }
     }
 
diff --git a/src/test/java/com/contentstack/sdk/TestEntry.java b/src/test/java/com/contentstack/sdk/TestEntry.java
index bcf91484..657be712 100644
--- a/src/test/java/com/contentstack/sdk/TestEntry.java
+++ b/src/test/java/com/contentstack/sdk/TestEntry.java
@@ -21,8 +21,8 @@ class TestEntry {
     private Entry entry;
     private final String CONTENT_TYPE = Credentials.CONTENT_TYPE;
     private final String VARIANT_UID = Credentials.VARIANT_UID;
-    private static final String[] VARIANT_UIDS = Credentials.VARIANTS_UID ;
-    
+    private static final String[] VARIANT_UIDS = Credentials.VARIANTS_UID;
+
     @Test
     @Order(1)
     void entryCallingPrivateModifier() {
@@ -66,38 +66,40 @@ public void onCompletion(ResponseType responseType, Error error) {
         });
         logger.info("passed..");
     }
+
     @Test
-    void VariantsTestSingleUid(){
+    void VariantsTestSingleUid() {
         entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(VARIANT_UID);
         entry.fetch(new EntryResultCallBack() {
             @Override
             public void onCompletion(ResponseType responseType, Error error) {
                 assertEquals(VARIANT_UID.trim(), entry.getHeaders().get("x-cs-variant-uid"));
-               System.out.println(entry.toJSON());
+                System.out.println(entry.toJSON());
             }
         });
     }
+
     @Test
-    void VariantsTestArray(){
+    void VariantsTestArray() {
         entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants(VARIANT_UIDS);
         entry.fetch(new EntryResultCallBack() {
             @Override
             public void onCompletion(ResponseType responseType, Error error) {
-               System.out.println(entry.toJSON());
+                System.out.println(entry.toJSON());
             }
         });
     }
-    
+
     @Test
     void VariantsTestNullString() {
-    entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants((String) null);
-    entry.fetch(new EntryResultCallBack() {
-        @Override
-        public void onCompletion(ResponseType responseType, Error error) {
-            assertNull(entry.getHeaders().get("x-cs-variant-uid"));
-            System.out.println(entry.toJSON());
-        }
-    });
+        entry = stack.contentType(CONTENT_TYPE).entry(entryUid).variants((String) null);
+        entry.fetch(new EntryResultCallBack() {
+            @Override
+            public void onCompletion(ResponseType responseType, Error error) {
+                assertNull(entry.getHeaders().get("x-cs-variant-uid"));
+                System.out.println(entry.toJSON());
+            }
+        });
     }
 
     @Test

From b21535628243e86ab1c111f04e8a484cc1d88227 Mon Sep 17 00:00:00 2001
From: reeshika-h 
Date: Wed, 17 Jul 2024 15:16:17 +0530
Subject: [PATCH 4/7] feat: added where method in AssetLibrary class

---
 src/test/java/com/contentstack/sdk/TestAssetLibrary.java | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/test/java/com/contentstack/sdk/TestAssetLibrary.java b/src/test/java/com/contentstack/sdk/TestAssetLibrary.java
index 1238e981..f944d909 100644
--- a/src/test/java/com/contentstack/sdk/TestAssetLibrary.java
+++ b/src/test/java/com/contentstack/sdk/TestAssetLibrary.java
@@ -2,6 +2,8 @@
 
 import org.junit.jupiter.api.*;
 
+import com.google.gson.JsonObject;
+import org.json.*;
 
 import java.util.List;
 import java.util.logging.Logger;

From 05d17c61caac8491fd698909989d265b243c5938 Mon Sep 17 00:00:00 2001
From: reeshika-h 
Date: Wed, 17 Jul 2024 15:33:17 +0530
Subject: [PATCH 5/7] change: removed unused libraries

---
 src/test/java/com/contentstack/sdk/TestAssetLibrary.java | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/test/java/com/contentstack/sdk/TestAssetLibrary.java b/src/test/java/com/contentstack/sdk/TestAssetLibrary.java
index f944d909..1238e981 100644
--- a/src/test/java/com/contentstack/sdk/TestAssetLibrary.java
+++ b/src/test/java/com/contentstack/sdk/TestAssetLibrary.java
@@ -2,8 +2,6 @@
 
 import org.junit.jupiter.api.*;
 
-import com.google.gson.JsonObject;
-import org.json.*;
 
 import java.util.List;
 import java.util.logging.Logger;

From cdf225e8e8c7c9222813b8a85a319aecaae66f47 Mon Sep 17 00:00:00 2001
From: Aravind Kumar 
Date: Fri, 17 May 2024 20:48:27 +0530
Subject: [PATCH 6/7] codeql-analysis.yml


From 71204d07caa776bf222dd53ca1302aafeb9fab2b Mon Sep 17 00:00:00 2001
From: reeshika-h 
Date: Tue, 20 Aug 2024 14:59:52 +0530
Subject: [PATCH 7/7] chore: Version bump

---
 CHANGELOG.md | 6 ++++++
 pom.xml      | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 091dce2d..01f7715d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # CHANGELOG
 
+## v2.0.0
+
+### Date: 27-August-2024
+
+-Feature: Variants method introduced
+
 ## v1.15.0
 
 ### Date: 04-Sep-2024
diff --git a/pom.xml b/pom.xml
index 62b53ce2..8fa801f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
     4.0.0
     com.contentstack.sdk
     java
-    1.15.0
+    2.0.0
     jar
     contentstack-java
     Java SDK for Contentstack Content Delivery API