From edff5cd791f7dc4968a8250bde2db7256aa76368 Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Tue, 2 Sep 2025 17:31:33 +0530 Subject: [PATCH] Refactor error handling in SDK classes to use centralized error messages. --- .../com/contentstack/sdk/AssetLibrary.java | 25 ++++-- .../com/contentstack/sdk/AssetsModel.java | 2 +- .../contentstack/sdk/CSBackgroundTask.java | 2 +- .../contentstack/sdk/CSHttpConnection.java | 6 +- .../com/contentstack/sdk/ContentType.java | 4 +- .../contentstack/sdk/ContentTypesModel.java | 6 +- .../com/contentstack/sdk/Contentstack.java | 8 +- .../com/contentstack/sdk/EntriesModel.java | 2 +- src/main/java/com/contentstack/sdk/Entry.java | 16 ++-- .../com/contentstack/sdk/ErrorMessages.java | 76 +++++++++++++++++++ .../com/contentstack/sdk/GlobalField.java | 2 +- .../contentstack/sdk/GlobalFieldsModel.java | 6 +- src/main/java/com/contentstack/sdk/Group.java | 2 +- src/main/java/com/contentstack/sdk/Query.java | 2 +- .../com/contentstack/sdk/QueryResult.java | 2 +- src/main/java/com/contentstack/sdk/Stack.java | 12 +-- .../java/com/contentstack/sdk/SyncStack.java | 2 +- 17 files changed, 130 insertions(+), 45 deletions(-) create mode 100644 src/main/java/com/contentstack/sdk/ErrorMessages.java diff --git a/src/main/java/com/contentstack/sdk/AssetLibrary.java b/src/main/java/com/contentstack/sdk/AssetLibrary.java index dd168723..e005955f 100644 --- a/src/main/java/com/contentstack/sdk/AssetLibrary.java +++ b/src/main/java/com/contentstack/sdk/AssetLibrary.java @@ -179,7 +179,11 @@ public AssetLibrary addParam(@NotNull String paramKey, @NotNull Object paramValu if (isValidKey(paramKey) && isValidValue(paramValue)) { urlQueries.put(paramKey, paramValue); } else { - logger.warning("Invalid key or value"); + if (!isValidKey(paramKey)) { + logger.warning(ErrorMessages.INVALID_PARAMETER_KEY); + } else { + logger.warning(ErrorMessages.INVALID_PARAMETER_VALUE); + } } return this; } @@ -310,9 +314,10 @@ public void getResultObject(List objects, JSONObject jsonObject, boolean List assets = new ArrayList<>(); - // if (objects == null || objects.isEmpty()) { - // System.out.println("Objects list is null or empty"); - // } + if (objects == null || objects.isEmpty()) { + logger.warning(ErrorMessages.MISSING_ASSETS_LIST); + return; + } if (objects != null && !objects.isEmpty()) { for (Object object : objects) { @@ -328,9 +333,9 @@ public void getResultObject(List objects, JSONObject jsonObject, boolean assets.add(asset); } } - // else { - // System.out.println("Object is not an instance of AssetModel"); - // } + else { + logger.warning(ErrorMessages.INVALID_OBJECT_TYPE_ASSET_MODEL); + } if (callback != null) { callback.onRequestFinish(ResponseType.NETWORK, assets); @@ -351,7 +356,11 @@ public AssetLibrary where(String key, String value) { queryParams.put(key,value); urlQueries.put("query", queryParams); } else { - throw new IllegalArgumentException("Invalid key or value"); + if (!isValidKey(key)) { + throw new IllegalArgumentException(ErrorMessages.INVALID_PARAMETER_KEY); + } else { + throw new IllegalArgumentException(ErrorMessages.INVALID_PARAMETER_VALUE); + } } return this; } diff --git a/src/main/java/com/contentstack/sdk/AssetsModel.java b/src/main/java/com/contentstack/sdk/AssetsModel.java index f5879952..97b653b4 100644 --- a/src/main/java/com/contentstack/sdk/AssetsModel.java +++ b/src/main/java/com/contentstack/sdk/AssetsModel.java @@ -31,7 +31,7 @@ public AssetsModel(JSONObject response) { List assetsList = (List) rawAssets; listResponse = new JSONArray(assetsList); // Convert to JSONArray } else if (rawAssets != null) { - throw new IllegalArgumentException("Invalid type for 'assets' key: " + rawAssets.getClass().getName()); + throw new IllegalArgumentException(ErrorMessages.INVALID_ASSETS_TYPE); } if (listResponse != null) { listResponse.forEach(model -> { diff --git a/src/main/java/com/contentstack/sdk/CSBackgroundTask.java b/src/main/java/com/contentstack/sdk/CSBackgroundTask.java index aaebb39f..e1fe2eb7 100644 --- a/src/main/java/com/contentstack/sdk/CSBackgroundTask.java +++ b/src/main/java/com/contentstack/sdk/CSBackgroundTask.java @@ -93,7 +93,7 @@ protected void checkHeader(@NotNull Map headers) { final Logger logger = Logger.getLogger("CSBackgroundTask"); if (headers.size() == 0) { try { - throw new IllegalAccessException("CSBackgroundTask Header Exception"); + throw new IllegalAccessException(ErrorMessages.MISSING_REQUEST_HEADERS); } catch (IllegalAccessException e) { logger.log(Level.SEVERE, e.getLocalizedMessage(), e); } diff --git a/src/main/java/com/contentstack/sdk/CSHttpConnection.java b/src/main/java/com/contentstack/sdk/CSHttpConnection.java index 875f58d2..9635dbf5 100644 --- a/src/main/java/com/contentstack/sdk/CSHttpConnection.java +++ b/src/main/java/com/contentstack/sdk/CSHttpConnection.java @@ -158,7 +158,7 @@ private String getParams(HashMap params) { urlParams += urlParams.equals("?") ? key + "=" + value : "&" + key + "=" + value; } } catch (Exception e1) { - logger.log(Level.SEVERE, e1.getLocalizedMessage(), e1); + logger.log(Level.SEVERE, ErrorMessages.URL_PARAMETER_ENCODING_FAILED, e1); } } return urlParams; @@ -187,7 +187,7 @@ public void send() { try { getService(url); } catch (IOException | JSONException e) { - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.URL_PARAMETER_ENCODING_FAILED, e); } } @@ -238,7 +238,7 @@ private void getService(String requestUrl) throws IOException { connectionRequest.onRequestFinished(CSHttpConnection.this); } catch (JSONException e) { // Handle non-JSON response - setError("Invalid JSON response"); + setError(ErrorMessages.INVALID_JSON_RESPONSE); } } else { assert response.errorBody() != null; diff --git a/src/main/java/com/contentstack/sdk/ContentType.java b/src/main/java/com/contentstack/sdk/ContentType.java index da2b8ba5..6607159f 100644 --- a/src/main/java/com/contentstack/sdk/ContentType.java +++ b/src/main/java/com/contentstack/sdk/ContentType.java @@ -40,7 +40,7 @@ public class ContentType { public JSONObject contentTypeData; protected ContentType() throws IllegalAccessException { - throw new IllegalAccessException("Can Not Access Private Modifier"); + throw new IllegalAccessException(ErrorMessages.DIRECT_INSTANTIATION_CONTENT_TYPE); } protected ContentType(String contentTypeUid) { @@ -158,7 +158,7 @@ public void fetch(@NotNull JSONObject params, final ContentTypesCallback callbac } params.put("environment", headers.get("environment")); if (contentTypeUid == null || contentTypeUid.isEmpty()) { - throw new IllegalAccessException("contentTypeUid is required"); + throw new IllegalAccessException(ErrorMessages.CONTENT_TYPE_UID_REQUIRED); } fetchContentTypes(urlString, params, headers, callback); } diff --git a/src/main/java/com/contentstack/sdk/ContentTypesModel.java b/src/main/java/com/contentstack/sdk/ContentTypesModel.java index 05332b84..65cafd58 100644 --- a/src/main/java/com/contentstack/sdk/ContentTypesModel.java +++ b/src/main/java/com/contentstack/sdk/ContentTypesModel.java @@ -29,7 +29,7 @@ public void setJSON(JSONObject responseJSON) { try { this.response = new JSONObject((LinkedHashMap) responseJSON.get(ctKey)); } catch (Exception e) { - System.err.println("Error processing 'content_type': " + e.getMessage()); + System.err.println(ErrorMessages.INVALID_CONTENT_TYPE_DATA + " Technical details: " + e.getMessage()); } } String ctListKey = "content_types"; @@ -44,14 +44,14 @@ public void setJSON(JSONObject responseJSON) { JSONObject jsonModel = new JSONObject((LinkedHashMap) model); objectList.add(jsonModel); } else { - System.err.println("Invalid type in 'content_types' list. Expected LinkedHashMap."); + System.err.println(ErrorMessages.INVALID_CONTENT_TYPES_LIST); } }); } this.response = new JSONArray(objectList); this.responseJSONArray = new JSONArray(objectList); } catch (Exception e) { - System.err.println("Error processing 'content_types': " + e.getMessage()); + System.err.println(ErrorMessages.INVALID_CONTENT_TYPE_DATA + " Technical details: " + e.getMessage()); } } } diff --git a/src/main/java/com/contentstack/sdk/Contentstack.java b/src/main/java/com/contentstack/sdk/Contentstack.java index 7154df8a..b287be16 100644 --- a/src/main/java/com/contentstack/sdk/Contentstack.java +++ b/src/main/java/com/contentstack/sdk/Contentstack.java @@ -19,7 +19,7 @@ public class Contentstack { // Modifier Protected protected Contentstack() throws IllegalAccessException { - throw new IllegalAccessException("Can Not Access Private Modifier"); + throw new IllegalAccessException(ErrorMessages.DIRECT_INSTANTIATION_CONTENTSTACK); } /** @@ -88,13 +88,13 @@ private static void validateCredentials(String stackApiKey, String deliveryToken Objects.requireNonNull(environment, "Environment can not be null"); if (stackApiKey.isEmpty()) { - throw new IllegalAccessException("API Key can not be empty"); + throw new IllegalAccessException(ErrorMessages.MISSING_API_KEY); } if (deliveryToken.isEmpty()) { - throw new IllegalAccessException("Delivery Token can not be empty"); + throw new IllegalAccessException(ErrorMessages.MISSING_DELIVERY_TOKEN); } if (environment.isEmpty()) { - throw new IllegalAccessException("Environment can not be empty"); + throw new IllegalAccessException(ErrorMessages.MISSING_ENVIRONMENT); } } diff --git a/src/main/java/com/contentstack/sdk/EntriesModel.java b/src/main/java/com/contentstack/sdk/EntriesModel.java index ff9a68c7..94995ee8 100644 --- a/src/main/java/com/contentstack/sdk/EntriesModel.java +++ b/src/main/java/com/contentstack/sdk/EntriesModel.java @@ -33,7 +33,7 @@ protected EntriesModel(JSONObject responseJSON) { } } catch (Exception e) { Logger logger = Logger.getLogger(EntriesModel.class.getSimpleName()); - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.ENTRIES_PROCESSING_FAILED, e); } } diff --git a/src/main/java/com/contentstack/sdk/Entry.java b/src/main/java/com/contentstack/sdk/Entry.java index f762aebc..ab24592e 100644 --- a/src/main/java/com/contentstack/sdk/Entry.java +++ b/src/main/java/com/contentstack/sdk/Entry.java @@ -45,7 +45,7 @@ public class Entry { protected String rteContent = null; protected Entry() throws IllegalAccessException { - throw new IllegalAccessException("Can Not Access Private Modifier"); + throw new IllegalAccessException(ErrorMessages.DIRECT_INSTANTIATION_ENTRY); } protected Entry(String contentTypeName) { @@ -503,7 +503,7 @@ public Calendar getDate(@NotNull String key) { String value = getString(key); return Constants.parseDate(value, null); } catch (Exception e) { - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.INVALID_DATE_FORMAT, e); } return null; } @@ -525,7 +525,7 @@ public Calendar getCreateAt() { String value = getString("created_at"); return Constants.parseDate(value, null); } catch (Exception e) { - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.INVALID_DATE_FORMAT, e); } return null; } @@ -562,7 +562,7 @@ public Calendar getUpdateAt() { String value = getString("updated_at"); return Constants.parseDate(value, null); } catch (Exception e) { - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.INVALID_DATE_FORMAT, e); } return null; } @@ -601,7 +601,7 @@ public Calendar getDeleteAt() { String value = getString("deleted_at"); return Constants.parseDate(value, null); } catch (Exception e) { - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.INVALID_DATE_FORMAT, e); } return null; } @@ -764,7 +764,7 @@ public List getAllEntries(String refKey, String refContentType) { entryInstance = contentType.stackInstance.contentType(refContentType).entry(); } catch (Exception e) { entryInstance = new Entry(refContentType); - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.INVALID_DATE_FORMAT, e); } entryInstance.setUid(model.uid); entryInstance.resultJson = model.jsonObject; @@ -928,9 +928,9 @@ public Entry exceptWithReferenceUid(@NotNull List fieldUid, @NotNull Str public void fetch(EntryResultCallBack callback) { if (uid.isEmpty()) { // throws IllegalAccessException if uid is Empty try { - throw new IllegalAccessException("Entry Uid is required"); + throw new IllegalAccessException(ErrorMessages.ENTRY_UID_REQUIRED); } catch (IllegalAccessException e) { - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.ENTRY_FETCH_FAILED, e); } } String urlString = "content_types/" + contentTypeUid + "/entries/" + uid; diff --git a/src/main/java/com/contentstack/sdk/ErrorMessages.java b/src/main/java/com/contentstack/sdk/ErrorMessages.java new file mode 100644 index 00000000..80739cc1 --- /dev/null +++ b/src/main/java/com/contentstack/sdk/ErrorMessages.java @@ -0,0 +1,76 @@ +package com.contentstack.sdk; + +/** + * Centralized error messages for the Contentstack SDK. + * This class contains all user-facing error messages to ensure consistency + * and make maintenance easier. + */ +public final class ErrorMessages { + + // Prevent instantiation + private ErrorMessages() { + throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); + } + + // ========== AUTHENTICATION & ACCESS ERRORS ========== + + public static final String MISSING_API_KEY = "Missing API key. Provide a valid key from your Contentstack stack settings and try again."; + public static final String MISSING_DELIVERY_TOKEN = "Missing delivery token. Provide a valid token from your Contentstack stack settings and try again."; + public static final String MISSING_ENVIRONMENT = "Missing environment. Provide a valid environment name and try again."; + public static final String MISSING_REQUEST_HEADERS = "Missing request headers. Provide api_key, access_token, and environment, then try again."; + + // ========== DIRECT INSTANTIATION ERRORS ========== + + public static final String DIRECT_INSTANTIATION_STACK = "Direct instantiation of Stack is not allowed. Use Contentstack.stack() to create an instance."; + public static final String DIRECT_INSTANTIATION_CONTENTSTACK = "Direct instantiation of Stack is not allowed. Use Contentstack.stack() to create an instance."; + public static final String DIRECT_INSTANTIATION_CONTENT_TYPE = "Direct instantiation of ContentType is not allowed. Use Stack.contentType(uid) to create an instance."; + public static final String DIRECT_INSTANTIATION_ENTRY = "Direct instantiation of Entry is not allowed. Use ContentType.entry(uid) to create an instance."; + + // ========== REQUIRED FIELD ERRORS ========== + + public static final String CONTENT_TYPE_UID_REQUIRED = "Content type UID is required. Provide a valid UID and try again."; + public static final String ENTRY_UID_REQUIRED = "Missing entry UID. Provide a valid UID and try again."; + public static final String GLOBAL_FIELD_UID_REQUIRED = "Missing global field UID. Provide a valid UID and try again."; + + // ========== DATA VALIDATION ERRORS ========== + + public static final String INVALID_PARAMETER_KEY = "Invalid parameter key. Use only alphanumeric characters, underscores, and dots."; + public static final String INVALID_PARAMETER_VALUE = "Invalid parameter value. Remove unsupported characters and try again."; + public static final String INVALID_QUERY_URL = "Invalid query URL. Use a valid URL and try again."; + public static final String INVALID_DATE_FORMAT = "Invalid date format for field. Provide the date in ISO format and try again."; + + // ========== DATA TYPE ERRORS ========== + + public static final String INVALID_ASSETS_TYPE = "Invalid type for 'assets' key. Provide assets as a List or ArrayList and try again."; + public static final String INVALID_OBJECT_TYPE_ASSET_MODEL = "Invalid object type. Use an AssetModel object and try again."; + public static final String INVALID_CONTENT_TYPE_DATA = "Invalid content type data. Provide a LinkedHashMap structure and try again."; + public static final String INVALID_CONTENT_TYPES_LIST = "Invalid type in content types list. Use a LinkedHashMap and try again."; + public static final String INVALID_GLOBAL_FIELD_DATA = "Invalid global field data. Provide a LinkedHashMap structure and try again."; + public static final String INVALID_GLOBAL_FIELDS_LIST = "Invalid type in global fields list. Use a LinkedHashMap and try again."; + + // ========== MISSING DATA ERRORS ========== + + public static final String MISSING_ASSETS_LIST = "Missing assets list. Provide a valid list of assets and try again."; + public static final String MISSING_JSON_OBJECT_SYNC = "Missing JSON object for sync operation. Provide a valid JSON object with sync parameters and try again."; + + // ========== NETWORK & CONNECTION ERRORS ========== + + public static final String URL_PARAMETER_ENCODING_FAILED = "URL parameter encoding failed. Provide a valid key and value, then try again."; + public static final String LIVE_PREVIEW_URL_FAILED = "Failed to execute the Live Preview URL. Check your connection and try again."; + public static final String TAXONOMY_QUERY_FAILED = "Failed to execute taxonomy query. Check your network connection and verify taxonomy parameters."; + public static final String INVALID_JSON_RESPONSE = "Invalid JSON response. Check the server response format and try again."; + + // ========== CONFIGURATION ERRORS ========== + + public static final String MISSING_PREVIEW_TOKEN = "Missing preview token for rest-preview.contentstack.com. Set the preview token in your configuration to use Live Preview."; + public static final String LIVE_PREVIEW_NOT_ENABLED = "Live Preview is not enabled in the configuration. Enable it and try again."; + public static final String EMBEDDED_ITEMS_NOT_INCLUDED = "Embedded items are not included in the entry. Call includeEmbeddedItems() and try again."; + + // ========== OPERATION ERRORS ========== + + public static final String ENTRY_FETCH_FAILED = "Entry fetch operation failed due to missing UID. Provide a valid UID and try again."; + public static final String QUERY_EXECUTION_FAILED = "Query execution failed. Check the query and try again."; + public static final String ENTRIES_PROCESSING_FAILED = "Failed to process entries data. Check the entries format and try again."; + public static final String GROUP_DATE_PARSING_FAILED = "Failed to parse date from group field. Provide a valid date format and try again."; + public static final String QUERY_RESULT_PROCESSING_FAILED = "Failed to process query result data. Check the response format and try again."; +} diff --git a/src/main/java/com/contentstack/sdk/GlobalField.java b/src/main/java/com/contentstack/sdk/GlobalField.java index 11901cff..196086bd 100644 --- a/src/main/java/com/contentstack/sdk/GlobalField.java +++ b/src/main/java/com/contentstack/sdk/GlobalField.java @@ -85,7 +85,7 @@ public GlobalField includeGlobalFieldSchema() { public void fetch(final GlobalFieldsCallback callback) throws IllegalAccessException { String urlString = "global_fields/" + globalFieldUid; if (globalFieldUid == null || globalFieldUid.isEmpty()) { - throw new IllegalAccessException("globalFieldUid is required"); + throw new IllegalAccessException(ErrorMessages.GLOBAL_FIELD_UID_REQUIRED); } fetchGlobalFields(urlString, this.params, this.headers, callback); } diff --git a/src/main/java/com/contentstack/sdk/GlobalFieldsModel.java b/src/main/java/com/contentstack/sdk/GlobalFieldsModel.java index aad19e03..b8fce836 100644 --- a/src/main/java/com/contentstack/sdk/GlobalFieldsModel.java +++ b/src/main/java/com/contentstack/sdk/GlobalFieldsModel.java @@ -21,7 +21,7 @@ public void setJSON(JSONObject responseJSON) { try { this.response = new JSONObject((LinkedHashMap) responseJSON.get(gfKey)); } catch (Exception e) { - System.err.println("Error processing 'global_field': " + e.getMessage()); + System.err.println(ErrorMessages.INVALID_GLOBAL_FIELD_DATA + " Technical details: " + e.getMessage()); } } String gfListKey = "global_fields"; @@ -36,14 +36,14 @@ public void setJSON(JSONObject responseJSON) { JSONObject jsonModel = new JSONObject((LinkedHashMap) model); objectList.add(jsonModel); } else { - System.err.println("Invalid type in 'global_fields' list. Expected LinkedHashMap."); + System.err.println(ErrorMessages.INVALID_GLOBAL_FIELDS_LIST); } }); } this.response = new JSONArray(objectList); this.responseJSONArray = new JSONArray(objectList); } catch (Exception e) { - System.err.println("Error processing 'global_fields': " + e.getMessage()); + System.err.println(ErrorMessages.INVALID_GLOBAL_FIELD_DATA + " Technical details: " + e.getMessage()); } } } diff --git a/src/main/java/com/contentstack/sdk/Group.java b/src/main/java/com/contentstack/sdk/Group.java index 3dd575b9..c4081523 100644 --- a/src/main/java/com/contentstack/sdk/Group.java +++ b/src/main/java/com/contentstack/sdk/Group.java @@ -291,7 +291,7 @@ public Calendar getDate(String key) { String value = getString(key); return Constants.parseDate(value, null); } catch (Exception e) { - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.GROUP_DATE_PARSING_FAILED, e); } return null; } diff --git a/src/main/java/com/contentstack/sdk/Query.java b/src/main/java/com/contentstack/sdk/Query.java index b8774af4..3c3daa45 100644 --- a/src/main/java/com/contentstack/sdk/Query.java +++ b/src/main/java/com/contentstack/sdk/Query.java @@ -1235,7 +1235,7 @@ private void throwException(String queryName, String messageString, @Nullable Ex } errorHashMap.put("detail", messageString); assert e != null; - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.QUERY_EXECUTION_FAILED, e); } protected void setQueryJson() { diff --git a/src/main/java/com/contentstack/sdk/QueryResult.java b/src/main/java/com/contentstack/sdk/QueryResult.java index 4c44737a..d3097bb4 100644 --- a/src/main/java/com/contentstack/sdk/QueryResult.java +++ b/src/main/java/com/contentstack/sdk/QueryResult.java @@ -131,7 +131,7 @@ private void extractCount() { } private void logException(Exception e) { - logger.log(Level.SEVERE, e.getLocalizedMessage(), e); + logger.log(Level.SEVERE, ErrorMessages.QUERY_RESULT_PROCESSING_FAILED, e); } diff --git a/src/main/java/com/contentstack/sdk/Stack.java b/src/main/java/com/contentstack/sdk/Stack.java index 2174bed7..e2893964 100644 --- a/src/main/java/com/contentstack/sdk/Stack.java +++ b/src/main/java/com/contentstack/sdk/Stack.java @@ -39,7 +39,7 @@ public class Stack { protected JSONObject syncParams = null; protected Stack() throws IllegalAccessException { - throw new IllegalAccessException("Can Not Access Private Modifier"); + throw new IllegalAccessException(ErrorMessages.DIRECT_INSTANTIATION_STACK); } protected Stack(@NotNull String apiKey) { @@ -156,7 +156,7 @@ public Stack livePreviewQuery(Map query) throws IOException { String livePreviewUrl = this.livePreviewEndpoint.concat(config.livePreviewContentType).concat("/entries/" + config.livePreviewEntryUid); if (livePreviewUrl.contains("/null/")) { - throw new IllegalStateException("Malformed Query Url"); + throw new IllegalStateException(ErrorMessages.INVALID_QUERY_URL); } Response response = null; try { @@ -168,14 +168,14 @@ public Stack livePreviewQuery(Map query) throws IOException { if(config.previewToken != null) { liveHeader.put("preview_token", config.previewToken); } else{ - throw new IllegalAccessError("Provide the Preview Token for the host rest-preview.contentstack.com"); + throw new IllegalAccessError(ErrorMessages.MISSING_PREVIEW_TOKEN); } } else { liveHeader.put("authorization", config.managementToken); } response = this.service.getRequest(livePreviewUrl, liveHeader).execute(); } catch (IOException e) { - throw new IllegalStateException("IO Exception while executing the Live Preview url"); + throw new IllegalStateException(ErrorMessages.LIVE_PREVIEW_URL_FAILED); } if (response.isSuccessful()) { assert response.body() != null; @@ -186,7 +186,7 @@ public Stack livePreviewQuery(Map query) throws IOException { } } } else { - throw new IllegalStateException("Live Preview is not enabled in Config"); + throw new IllegalStateException(ErrorMessages.LIVE_PREVIEW_NOT_ENABLED); } return this; } @@ -608,7 +608,7 @@ public void updateAssetUrl(Entry entry) { JSONObject entryJson = entry.toJSON(); // Check if entry consists of _embedded_items object if (!entryJson.has("_embedded_items")) { - throw new IllegalArgumentException("_embedded_items not present in entry. Call includeEmbeddedItems() before fetching entry."); + throw new IllegalArgumentException(ErrorMessages.EMBEDDED_ITEMS_NOT_INCLUDED); } // Get _embedded_items as a JSONObject JSONObject embeddedItems = entryJson.getJSONObject("_embedded_items"); diff --git a/src/main/java/com/contentstack/sdk/SyncStack.java b/src/main/java/com/contentstack/sdk/SyncStack.java index b83fd862..0370d857 100755 --- a/src/main/java/com/contentstack/sdk/SyncStack.java +++ b/src/main/java/com/contentstack/sdk/SyncStack.java @@ -63,7 +63,7 @@ public List getItems() { protected synchronized void setJSON(@NotNull JSONObject jsonobject) { if (jsonobject == null) { - throw new IllegalArgumentException("JSON object cannot be null."); + throw new IllegalArgumentException(ErrorMessages.MISSING_JSON_OBJECT_SYNC); } this.receiveJson = jsonobject;