diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/form/ReservedProperties.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/form/ReservedProperties.java index 4fe402686a..ab9ceecaa7 100644 --- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/form/ReservedProperties.java +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/form/ReservedProperties.java @@ -186,6 +186,13 @@ private ReservedProperties() { public static final String PN_SUBMIT_EMAIL_CC = "cc"; public static final String PN_SUBMIT_EMAIL_BCC = "bcc"; public static final String PN_SUBMIT_SPREADSHEETURL = "spreadsheetUrl"; + // AEP submit action properties + public static final String SS_AEP = "aep"; + public static final String PN_SUBMIT_AEP_SCHEMA_REF_ID = "schemaRefId"; + public static final String PN_SUBMIT_AEP_IMS_ORG_ID = "imsOrgId"; + public static final String PN_SUBMIT_AEP_SANDBOX_REGION = "sandboxRegion"; + public static final String PN_SUBMIT_AEP_SANDBOX_ID = "sandboxId"; + public static final String PN_SUBMIT_AEP_DATASET_ID = "datasetId"; // End: Form submission related properties private static final Set reservedProperties = aggregateReservedProperties(); diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImpl.java index 8e06b55d06..9d8b2a18b3 100644 --- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImpl.java +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImpl.java @@ -68,9 +68,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; @Model( - adaptables = { SlingHttpServletRequest.class, Resource.class }, - adapters = { FormContainer.class, ContainerExporter.class, ComponentExporter.class }, - resourceType = { FormContainerImpl.RESOURCE_TYPE, FormConstants.RT_FD_FRAGMENT_CONTAINER_V1 }) + adaptables = { SlingHttpServletRequest.class, Resource.class }, + adapters = { FormContainer.class, ContainerExporter.class, ComponentExporter.class }, + resourceType = { FormContainerImpl.RESOURCE_TYPE, FormConstants.RT_FD_FRAGMENT_CONTAINER_V1 }) @Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION) public class FormContainerImpl extends AbstractContainerImpl implements FormContainer { protected static final String RESOURCE_TYPE = "core/fd/components/form/container/v2/container"; @@ -95,6 +95,9 @@ public class FormContainerImpl extends AbstractContainerImpl implements FormCont /** Constant representing spreadsheet submit action type */ private static final String SS_SPREADSHEET = "spreadsheet"; + /** Constant representing AEP submit action type */ + private static final String SS_AEP = ReservedProperties.SS_AEP; + @OSGiService(injectionStrategy = InjectionStrategy.OPTIONAL) private CoreComponentCustomPropertiesProvider coreComponentCustomPropertiesProvider; @@ -278,7 +281,7 @@ public String getId() { // handling use-case when AF is used in iframe mode inside embed form component if (request != null && request.getAttribute("formRenderingInsideEmbedContainer") != null) { return ComponentUtils.getEncodedPath(StringUtils.replace(getPath(), "/" + JcrConstants.JCR_CONTENT + "/" - + GuideConstants.GUIDE_CONTAINER_NODE_NAME, "")); + + GuideConstants.GUIDE_CONTAINER_NODE_NAME, "")); } return ComponentUtils.getEncodedPath(getPath()); } @@ -482,7 +485,9 @@ private Map getSubmitProperties() { Map submitProps = null; - if (request == null || ComponentUtils.shouldIncludeSubmitProperties(request)) { + String actionName = resource.getValueMap().get(ReservedProperties.PN_SUBMIT_ACTION_NAME, String.class); + if (request == null || ComponentUtils.shouldIncludeSubmitProperties(request) + || (StringUtils.isNotBlank(actionName) && (SS_AEP.equals(actionName)))) { submitProps = new LinkedHashMap<>(); List submitActionProperties = Arrays.asList( ReservedProperties.PN_SUBMIT_ACTION_TYPE, @@ -496,7 +501,15 @@ private Map getSubmitProperties() { ReservedProperties.PN_SUBMIT_EMAIL_BCC); List submitSpreadsheetProperties = Arrays.asList( - ReservedProperties.PN_SUBMIT_SPREADSHEETURL); + ReservedProperties.PN_SUBMIT_SPREADSHEETURL); + + List submitAepProperties = Arrays.asList( + ReservedProperties.PN_SUBMIT_AEP_SCHEMA_REF_ID, + ReservedProperties.PN_SUBMIT_AEP_IMS_ORG_ID, + ReservedProperties.PN_SUBMIT_AEP_SANDBOX_REGION, + ReservedProperties.PN_SUBMIT_AEP_SANDBOX_ID, + ReservedProperties.PN_SUBMIT_AEP_DATASET_ID); + ValueMap resourceMap = resource.getValueMap(); for (Map.Entry entry : resourceMap.entrySet()) { if (submitActionProperties.contains(entry.getKey())) { @@ -507,6 +520,9 @@ private Map getSubmitProperties() { } else if (submitSpreadsheetProperties.contains(entry.getKey())) { submitProps.computeIfAbsent(SS_SPREADSHEET, k -> new LinkedHashMap()); ((Map) submitProps.get(SS_SPREADSHEET)).put(entry.getKey(), entry.getValue()); + } else if (submitAepProperties.contains(entry.getKey())) { + submitProps.computeIfAbsent(SS_AEP, k -> new LinkedHashMap()); + ((Map) submitProps.get(SS_AEP)).put(entry.getKey(), entry.getValue()); } } }