From 5e448b9331f8b3cd9dedb3a5664716e44a9b45f1 Mon Sep 17 00:00:00 2001 From: Trisha Anand Date: Wed, 3 Mar 2021 18:51:35 +0530 Subject: [PATCH] DSL parsing : Catch index out of bound exception (#3364) * In case index being referred does not exist, throw appropriate error during DSL parsing * Fixing bad commit. --- .../appsmith/server/services/LayoutActionServiceImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/LayoutActionServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/LayoutActionServiceImpl.java index 1e2c687051..ca682ae798 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/LayoutActionServiceImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/LayoutActionServiceImpl.java @@ -322,7 +322,13 @@ public class LayoutActionServiceImpl implements LayoutActionService { parent = ((Map) parent).get(nextKey); } else if (parent instanceof List) { if (Pattern.matches(Pattern.compile("[0-9]+").toString(), nextKey)) { - parent = ((List) parent).get(Integer.parseInt(nextKey)); + try { + parent = ((List) parent).get(Integer.parseInt(nextKey)); + } catch (IndexOutOfBoundsException e) { + // The index being referred does not exist. Hence the path would not exist. + throw new AppsmithException(AppsmithError.INVALID_DYNAMIC_BINDING_REFERENCE, widgetType, + widgetName, widgetId, fieldPath, pageId, layoutId); + } } else { throw new AppsmithException(AppsmithError.INVALID_DYNAMIC_BINDING_REFERENCE, widgetType, widgetName, widgetId, fieldPath, pageId, layoutId);