From 97c47357457166a155df003661f665396b51f13c Mon Sep 17 00:00:00 2001 From: Ikshu Jain Date: Thu, 30 Jul 2026 14:51:40 +0530 Subject: [PATCH 1/2] FORMS-26490: Electronic Signature Guide Container changes --- .../internal/models/v1/form/PanelImpl.java | 7 ++ .../models/v1/form/SignerInfoFieldImpl.java | 80 +++++++++++++++++++ .../models/v1/form/SignerInfoImpl.java | 47 +++++++++++ .../core/components/models/form/Panel.java | 10 +++ .../components/models/form/SignerInfo.java | 48 +++++++++++ .../util/AbstractFormComponentImpl.java | 8 ++ .../v2/container/_cq_dialog/.content.xml | 6 ++ 7 files changed, 206 insertions(+) create mode 100644 bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/SignerInfoFieldImpl.java create mode 100644 bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/SignerInfoImpl.java create mode 100644 bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/SignerInfo.java diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/PanelImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/PanelImpl.java index b066e38587..306551d4f3 100644 --- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/PanelImpl.java +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/PanelImpl.java @@ -120,6 +120,13 @@ public Boolean isReadOnly() { return readOnly; } + @Override + @JsonInclude(JsonInclude.Include.NON_NULL) + @Nullable + public boolean isWrapData() { + return wrapData; + } + @Override @JsonIgnore @NotNull diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/SignerInfoFieldImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/SignerInfoFieldImpl.java new file mode 100644 index 0000000000..693ef384ef --- /dev/null +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/SignerInfoFieldImpl.java @@ -0,0 +1,80 @@ +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~ Copyright 2026 Adobe +~ +~ Licensed under the Apache License, Version 2.0 (the "License"); +~ you may not use this file except in compliance with the License. +~ You may obtain a copy of the License at +~ +~ http://www.apache.org/licenses/LICENSE-2.0 +~ +~ Unless required by applicable law or agreed to in writing, software +~ distributed under the License is distributed on an "AS IS" BASIS, +~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +~ See the License for the specific language governing permissions and +~ limitations under the License. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + +package com.adobe.cq.forms.core.components.internal.models.v1.form; + +import java.util.LinkedHashMap; +import java.util.Map; + +import org.apache.sling.api.resource.Resource; +import org.apache.sling.models.annotations.Exporter; +import org.apache.sling.models.annotations.Model; +import org.apache.sling.models.annotations.injectorspecific.InjectionStrategy; +import org.apache.sling.models.annotations.injectorspecific.ValueMapValue; + +import com.adobe.cq.export.json.ExporterConstants; + +@Model(adaptables = Resource.class) +@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION) +public class SignerInfoFieldImpl { + + private static final String PN_SIGNER_TITLE = "signerTitle"; + private static final String PN_COUNTRY_CODE_SOURCE = "countryCodeSource"; + private static final String PN_EMAIL = "email"; + private static final String PN_EMAIL_SOURCE = "emailSource"; + private static final String PN_PHONE_SOURCE = "phoneSource"; + private static final String PN_RECIPIENT_ROLE = "recipientRole"; + private static final String PN_DELEGATES_TO = "delegatesTo"; + private static final String PN_SECURITY_OPTION = "securityOption"; + + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = PN_SIGNER_TITLE) + private String signerTitle; + + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = PN_COUNTRY_CODE_SOURCE) + private String countryCodeSource; + + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = PN_EMAIL) + private String email; + + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = PN_EMAIL_SOURCE) + private String emailSource; + + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = PN_PHONE_SOURCE) + private String phoneSource; + + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = PN_RECIPIENT_ROLE) + private String recipientRole; + + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = PN_DELEGATES_TO) + private String delegatesTo; + + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = PN_SECURITY_OPTION) + private String securityOption; + + public Map getSignerFieldMap() { + Map signerField = new LinkedHashMap<>(); + signerField.put(PN_SIGNER_TITLE, signerTitle); + signerField.put(PN_COUNTRY_CODE_SOURCE, countryCodeSource); + signerField.put(PN_EMAIL, email); + signerField.put(PN_EMAIL_SOURCE, emailSource); + signerField.put(PN_PHONE_SOURCE, phoneSource); + signerField.put(PN_RECIPIENT_ROLE, recipientRole); + signerField.put(PN_DELEGATES_TO, delegatesTo); + signerField.put(PN_SECURITY_OPTION, securityOption); + return signerField; + } + +} \ No newline at end of file diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/SignerInfoImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/SignerInfoImpl.java new file mode 100644 index 0000000000..1f34ed2b0b --- /dev/null +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/SignerInfoImpl.java @@ -0,0 +1,47 @@ +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~ Copyright 2026 Adobe + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + +package com.adobe.cq.forms.core.components.internal.models.v1.form; + +import java.util.*; + +import org.apache.sling.api.resource.Resource; +import org.apache.sling.models.annotations.Exporter; +import org.apache.sling.models.annotations.Model; + +import com.adobe.aemds.guide.model.SignerInfo; +import com.adobe.aemds.guide.model.SignerResource; +import com.adobe.cq.export.json.ExporterConstants; + +@Model(adaptables = Resource.class) +@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION) +public class SignerInfoImpl { + public static Map getSignerDetails(Resource signerInfoResource) { + Map signerProperties = new LinkedHashMap<>(); + SignerResource signerResource = signerInfoResource.adaptTo(SignerResource.class); + if (signerResource == null) { + return signerProperties; + } + signerProperties.put("firstSignerFormFiller", signerResource.isFirstSignerFormFiller()); + signerProperties.put("workflowType", signerResource.getWorkflowType()); + if (signerResource.getAllSignerInfo().size() > 0) { + List signersList = signerResource.getAllSignerInfo(); + signerProperties.put("signers", signersList); + } + return signerProperties; + } + +} \ No newline at end of file diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/Panel.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/Panel.java index 2ba29fed56..3a9995e179 100644 --- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/Panel.java +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/Panel.java @@ -36,4 +36,14 @@ public interface Panel extends Container, ContainerConstraint { default Boolean isReadOnly() { return null; } + + /** + * Checks if the container is wrap data. + * + * @return {@code true} if the container is wrap data, {@code false} otherwise + * @since com.adobe.cq.forms.core.components.models.form 5.3.0 + */ + default boolean isWrapData() { + return false; + } } diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/SignerInfo.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/SignerInfo.java new file mode 100644 index 0000000000..ce6dea3b8c --- /dev/null +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/SignerInfo.java @@ -0,0 +1,48 @@ +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~ Copyright 2026 Adobe + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + +package com.adobe.cq.forms.core.components.models.form; + +import org.osgi.annotation.versioning.ConsumerType; + +@ConsumerType +public interface SignerInfo { + + /** + * Check if first signer form filler + * + * @return the firstSignerFormFiller + * @since com.adobe.cq.forms.core.components.models.form 0.0.1 + */ + String getFirstSignerFormFiller(); + + /** + * Returns the workflow type + * + * @return the signer's email + * @since com.adobe.cq.forms.core.components.models.form 0.0.1 + */ + String getWorkflowType(); + + /** + * Returns the signer + * + * @return the signer + * @since com.adobe.cq.forms.core.components.models.form 0.0.1 + */ + String[] getSigners(); + +} \ No newline at end of file diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java index fa835dba69..08ebaeb6fd 100644 --- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java @@ -45,6 +45,7 @@ import com.adobe.cq.forms.core.components.datalayer.FormComponentData; import com.adobe.cq.forms.core.components.internal.datalayer.ComponentDataImpl; import com.adobe.cq.forms.core.components.internal.form.ReservedProperties; +import com.adobe.cq.forms.core.components.internal.models.v1.form.SignerInfoImpl; import com.adobe.cq.forms.core.components.models.form.BaseConstraint; import com.adobe.cq.forms.core.components.models.form.FieldType; import com.adobe.cq.forms.core.components.models.form.FormComponent; @@ -286,6 +287,7 @@ protected boolean getEditMode() { } public static final String CUSTOM_DOR_PROPERTY_WRAPPER = "fd:dor"; + public static final String CUSTOM_SIGNER_PROPERTY_WRAPPER = "fd:signerInfo"; // used for DOR and SPA editor to work public static final String CUSTOM_JCR_PATH_PROPERTY_WRAPPER = "fd:path"; @@ -319,6 +321,12 @@ protected boolean getEditMode() { if (rulesProperties.size() > 0) { properties.put(CUSTOM_RULE_PROPERTY_WRAPPER, rulesProperties); } + + Resource signerInfoResource = resource.getChild(CUSTOM_SIGNER_PROPERTY_WRAPPER); + if (signerInfoResource != null) { + properties.put(CUSTOM_SIGNER_PROPERTY_WRAPPER, SignerInfoImpl.getSignerDetails(signerInfoResource)); + } + return properties; } diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/_cq_dialog/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/_cq_dialog/.content.xml index 0f41726075..2141968b4e 100644 --- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/_cq_dialog/.content.xml +++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/_cq_dialog/.content.xml @@ -359,6 +359,12 @@ + Date: Fri, 7 Aug 2026 13:08:24 +0530 Subject: [PATCH 2/2] FORMS-26490: Updating pom.xml version for buddy build to IRS --- all/pom.xml | 2 +- bundles/af-core/pom.xml | 2 +- bundles/core/pom.xml | 2 +- examples/all/pom.xml | 2 +- examples/core/pom.xml | 2 +- examples/pom.xml | 2 +- examples/ui.apps/pom.xml | 2 +- examples/ui.content/pom.xml | 2 +- it/apps/pom.xml | 2 +- it/config/pom.xml | 2 +- it/content/pom.xml | 2 +- it/core/pom.xml | 2 +- jsdocs/pom.xml | 2 +- parent/pom.xml | 2 +- pom.xml | 2 +- ui.af.apps/pom.xml | 2 +- ui.apps/pom.xml | 2 +- ui.frontend/pom.xml | 2 +- ui.tests/pom.xml | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index 1a1811b1ad..b5162ceae5 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -21,7 +21,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../parent/pom.xml diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml index 25c207921e..ae60ce6aa5 100644 --- a/bundles/af-core/pom.xml +++ b/bundles/af-core/pom.xml @@ -20,7 +20,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml index 21d18bc8d0..90ef615e5e 100644 --- a/bundles/core/pom.xml +++ b/bundles/core/pom.xml @@ -20,7 +20,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/examples/all/pom.xml b/examples/all/pom.xml index 3851b0d13d..5e46626aaa 100644 --- a/examples/all/pom.xml +++ b/examples/all/pom.xml @@ -18,7 +18,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/examples/core/pom.xml b/examples/core/pom.xml index 9a216ab9af..9126ca7dce 100644 --- a/examples/core/pom.xml +++ b/examples/core/pom.xml @@ -18,7 +18,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/examples/pom.xml b/examples/pom.xml index c9921eaefe..31f3d364bc 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -18,7 +18,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../parent/pom.xml diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml index 07d4da9470..eb082b3f3e 100644 --- a/examples/ui.apps/pom.xml +++ b/examples/ui.apps/pom.xml @@ -18,7 +18,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml index f7526bfdbd..7d062b3db1 100644 --- a/examples/ui.content/pom.xml +++ b/examples/ui.content/pom.xml @@ -18,7 +18,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/it/apps/pom.xml b/it/apps/pom.xml index bd341d0f8b..6d50e94432 100644 --- a/it/apps/pom.xml +++ b/it/apps/pom.xml @@ -19,7 +19,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/it/config/pom.xml b/it/config/pom.xml index bd421012b3..d601e706ad 100644 --- a/it/config/pom.xml +++ b/it/config/pom.xml @@ -20,7 +20,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/it/content/pom.xml b/it/content/pom.xml index 01239ee2b4..6a3862f2b2 100644 --- a/it/content/pom.xml +++ b/it/content/pom.xml @@ -20,7 +20,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/it/core/pom.xml b/it/core/pom.xml index d1724199e7..47e7f4bbec 100644 --- a/it/core/pom.xml +++ b/it/core/pom.xml @@ -18,7 +18,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../../parent/pom.xml diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml index 4eb354494a..1c8da94b4f 100644 --- a/jsdocs/pom.xml +++ b/jsdocs/pom.xml @@ -22,7 +22,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../parent/pom.xml diff --git a/parent/pom.xml b/parent/pom.xml index 3421ec54a6..07e33f42bc 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -22,7 +22,7 @@ core-forms-components-parent pom - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent AEM Forms Core Components - Parent Parent POM for AEM Forms Core Components https://github.com/adobe/aem-core-forms-components diff --git a/pom.xml b/pom.xml index 4ddd9bde03..c8d8a29c73 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent parent/pom.xml diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml index 5436f5c38f..7d219876a9 100644 --- a/ui.af.apps/pom.xml +++ b/ui.af.apps/pom.xml @@ -20,7 +20,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../parent/pom.xml diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml index f6de258c61..834d7da9a7 100644 --- a/ui.apps/pom.xml +++ b/ui.apps/pom.xml @@ -20,7 +20,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../parent/pom.xml diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml index e455e252db..182c462348 100644 --- a/ui.frontend/pom.xml +++ b/ui.frontend/pom.xml @@ -16,7 +16,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../parent/pom.xml 4.0.0 diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml index 0a3a492b5e..8957da01e8 100644 --- a/ui.tests/pom.xml +++ b/ui.tests/pom.xml @@ -24,7 +24,7 @@ com.adobe.aem core-forms-components-parent - 1.1.79-SNAPSHOT + 1.1.79-SNAPSHOT-AdobeSignComponent ../parent/pom.xml