diff --git a/.circleci/config.yml b/.circleci/config.yml
index 06a3fd53c4..326143d9f0 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -36,7 +36,7 @@ shared: &shared
# run tests!
- run: mvn clean verify -B -U
- # store any dumps
+ # save any dumps
- run:
name: save any dumps
command: |
@@ -51,7 +51,7 @@ shared: &shared
# save test results
- run:
- name: Save test results
+ name: save test results
command: |
mkdir -p ~/test-results/junit/
find . -type f -regex ".*/surefire-reports/.*" -exec cp {} ~/test-results/junit/ \;
diff --git a/README.md b/README.md
index 5f73725d54..5cd89918d0 100644
--- a/README.md
+++ b/README.md
@@ -42,28 +42,29 @@ You can also subscribe via Email [aem-core-components-dev+subscribe@googlegroups
7. [Title](content/src/content/jcr_root/apps/core/wcm/components/title/v2/title)
8. [Image](content/src/content/jcr_root/apps/core/wcm/components/image/v2/image)
9. [Download](content/src/content/jcr_root/apps/core/wcm/components/download/v1/download)
-10. [Teaser](content/src/content/jcr_root/apps/core/wcm/components/teaser/v1/teaser)
-11. [Button](content/src/content/jcr_root/apps/core/wcm/components/button/v1/button)
-16. [List](content/src/content/jcr_root/apps/core/wcm/components/list/v2/list)
+10. [Experience Fragment](content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment)
+11. [Teaser](content/src/content/jcr_root/apps/core/wcm/components/teaser/v1/teaser)
+12. [Button](content/src/content/jcr_root/apps/core/wcm/components/button/v1/button)
+13. [List](content/src/content/jcr_root/apps/core/wcm/components/list/v2/list)
14. [Content Fragment](content/src/content/jcr_root/apps/core/wcm/components/contentfragment/v1/contentfragment)
15. [Content Fragment List](content/src/content/jcr_root/apps/core/wcm/components/contentfragmentlist/v1/contentfragmentlist)
-12. [Separator](content/src/content/jcr_root/apps/core/wcm/components/separator/v1/separator)
-13. [Sharing](content/src/content/jcr_root/apps/core/wcm/components/sharing/v1/sharing)
+16. [Separator](content/src/content/jcr_root/apps/core/wcm/components/separator/v1/separator)
+17. [Sharing](content/src/content/jcr_root/apps/core/wcm/components/sharing/v1/sharing)
### Container components
-17. [Container](content/src/content/jcr_root/apps/core/wcm/components/container/v1/container)
-18. [Carousel](content/src/content/jcr_root/apps/core/wcm/components/carousel/v1/carousel)
-19. [Accordion](content/src/content/jcr_root/apps/core/wcm/components/accordion/v1/accordion)
-20. [Tabs](content/src/content/jcr_root/apps/core/wcm/components/tabs/v1/tabs)
+18. [Container](content/src/content/jcr_root/apps/core/wcm/components/container/v1/container)
+19. [Carousel](content/src/content/jcr_root/apps/core/wcm/components/carousel/v1/carousel)
+20. [Accordion](content/src/content/jcr_root/apps/core/wcm/components/accordion/v1/accordion)
+21. [Tabs](content/src/content/jcr_root/apps/core/wcm/components/tabs/v1/tabs)
### Form components
-21. [Form container](content/src/content/jcr_root/apps/core/wcm/components/form/container/v2/container)
-22. [Form text field](content/src/content/jcr_root/apps/core/wcm/components/form/text/v2/text)
-23. [Form options field](content/src/content/jcr_root/apps/core/wcm/components/form/options/v2/options)
-24. [Form hidden field](content/src/content/jcr_root/apps/core/wcm/components/form/hidden/v2/hidden)
-25. [Form button](content/src/content/jcr_root/apps/core/wcm/components/form/button/v2/button)
+22. [Form container](content/src/content/jcr_root/apps/core/wcm/components/form/container/v2/container)
+23. [Form text field](content/src/content/jcr_root/apps/core/wcm/components/form/text/v2/text)
+24. [Form options field](content/src/content/jcr_root/apps/core/wcm/components/form/options/v2/options)
+25. [Form hidden field](content/src/content/jcr_root/apps/core/wcm/components/form/hidden/v2/hidden)
+26. [Form button](content/src/content/jcr_root/apps/core/wcm/components/form/button/v2/button)
Visit the [roadmap wiki page](https://github.com/adobe/aem-core-wcm-components/wiki) for main upcoming components and features.
@@ -77,7 +78,7 @@ The latest version of the Core Components, require the below system requirements
Core Components | AEM 6.5 | AEM 6.4 | AEM 6.3 | Java
----------------|---------|---------|---------|------
-[2.5.0](https://github.com/adobe/aem-core-wcm-components/releases/tag/core.wcm.components.reactor-2.5.0) | 6.5.0.0+ | 6.4.2.0+ | 6.3.3.0+ | 8, 11
+[2.6.0](https://github.com/adobe/aem-core-wcm-components/releases/tag/core.wcm.components.reactor-2.6.0) | 6.5.0.0+ | 6.4.4.0+ | 6.3.3.4+ | 8, 11
For a list of requirements for previous versions, see [Historical System Requirements](VERSIONS.md).
@@ -137,7 +138,7 @@ To include the core components package into your own project's maven build using
com.adobe.cq
core.wcm.components.all
zip
- 2.5.0
+ 2.6.0
```
@@ -162,7 +163,7 @@ To include the core components package into your own project using AEM Archetype
com.adobe.cq
core.wcm.components.all
zip
- 2.5.0
+ 2.6.0
```
diff --git a/VERSIONS.md b/VERSIONS.md
index 4bc92b553f..b826c1c7fe 100644
--- a/VERSIONS.md
+++ b/VERSIONS.md
@@ -4,6 +4,7 @@ See below for a full list of system requirements for historical versions of the
Core Components | Extension | AEM 6.5 | AEM 6.4 | AEM 6.3 | Java
----------------|-----------|---------|---------|---------|------
+[2.6.0](https://github.com/adobe/aem-core-wcm-components/releases/tag/core.wcm.components.reactor-2.6.0) | - | 6.5.0.0+ | 6.4.4.0+ | 6.3.3.4+ | 8, 11
[2.5.0](https://github.com/adobe/aem-core-wcm-components/releases/tag/core.wcm.components.reactor-2.5.0) | - | 6.5.0.0+ | 6.4.2.0+ | 6.3.3.0+ | 8, 11
[2.4.0](https://github.com/adobe/aem-core-wcm-components/releases/tag/core.wcm.components.reactor-2.4.0) | - | 6.5.0.0+ | 6.4.2.0+ | 6.3.3.0+ | 8, 11
[2.3.2](https://github.com/adobe/aem-core-wcm-components/releases/tag/core.wcm.components.reactor-2.3.2) | 1.0.12 | 6.5.0.0+ | 6.4.2.0+ | 6.3.3.0+ | 8
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index 5f90669e5e..747e9653dc 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -465,7 +465,6 @@
test
-
io.wcm
diff --git a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/ExperienceFragmentImpl.java b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/ExperienceFragmentImpl.java
index bb12e6a943..1b8c236cbd 100644
--- a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/ExperienceFragmentImpl.java
+++ b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/ExperienceFragmentImpl.java
@@ -23,6 +23,7 @@
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.models.annotations.Exporter;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.*;
@@ -33,6 +34,7 @@
import com.adobe.cq.export.json.ComponentExporter;
import com.adobe.cq.export.json.ExporterConstants;
import com.adobe.cq.wcm.core.components.models.ExperienceFragment;
+import com.adobe.cq.xf.ExperienceFragmentsConstants;
import com.day.cq.wcm.api.LanguageManager;
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.Template;
@@ -71,8 +73,8 @@ public class ExperienceFragmentImpl implements ExperienceFragment {
@ScriptVariable
private Page currentPage;
- @ValueMapValue(name = ExperienceFragment.PN_FRAGMENT_PATH, injectionStrategy = InjectionStrategy.OPTIONAL)
- private String fragmentPath;
+ @ValueMapValue(name = ExperienceFragment.PN_FRAGMENT_VARIATION_PATH, injectionStrategy = InjectionStrategy.OPTIONAL)
+ private String fragmentVariationPath;
@OSGiService
private LanguageManager languageManager;
@@ -80,29 +82,32 @@ public class ExperienceFragmentImpl implements ExperienceFragment {
@OSGiService
private LiveRelationshipManager relationshipManager;
- private String localizedFragmentPath;
+ private String localizedFragmentVariationPath;
@PostConstruct
protected void initModel() {
if (inTemplate()) {
String currentPageRootPath = getLocalizationRoot(currentPage.getPath());
// we should use getLocalizationRoot instead of getXfLocalizationRoot once the XF UI supports creating Live and Language Copies
- String xfRootPath = getXfLocalizationRoot(fragmentPath, currentPageRootPath);
+ String xfRootPath = getXfLocalizationRoot(fragmentVariationPath, currentPageRootPath);
if (!StringUtils.isEmpty(currentPageRootPath) && !StringUtils.isEmpty(xfRootPath)) {
- String xfRelativePath = StringUtils.substring(fragmentPath, xfRootPath.length());
+ String xfRelativePath = StringUtils.substring(fragmentVariationPath, xfRootPath.length());
String localizedXfRootPath = StringUtils.replace(currentPageRootPath, CONTENT_ROOT, EXPERIENCE_FRAGMENTS_ROOT, 1);
- localizedFragmentPath = StringUtils.join(localizedXfRootPath, xfRelativePath, JCR_CONTENT_ROOT);
+ localizedFragmentVariationPath = StringUtils.join(localizedXfRootPath, xfRelativePath, JCR_CONTENT_ROOT);
}
}
- String xfContentPath = StringUtils.join(fragmentPath, JCR_CONTENT_ROOT);
- if (!resourceExists(localizedFragmentPath) && resourceExists(xfContentPath)) {
- localizedFragmentPath = xfContentPath;
+ String xfContentPath = StringUtils.join(fragmentVariationPath, JCR_CONTENT_ROOT);
+ if (!resourceExists(localizedFragmentVariationPath) && resourceExists(xfContentPath)) {
+ localizedFragmentVariationPath = xfContentPath;
+ }
+ if (!isExperienceFragmentVariation(localizedFragmentVariationPath)) {
+ localizedFragmentVariationPath = null;
}
}
@Override
- public String getLocalizedFragmentPath() {
- return localizedFragmentPath;
+ public String getLocalizedFragmentVariationPath() {
+ return localizedFragmentVariationPath;
}
@NotNull
@@ -111,19 +116,19 @@ public String getLocalizedFragmentPath() {
}
/**
- * Returns the localization root of the resource defined at the given path
+ * Returns the localization root of the resource defined at the given path.
*
* Use case | Path | Root
- * ---------------------------------------- |--------------------------------------|------------------
+ * ------------------------------------------|--------------------------------------|------------------
* 1. No localization | /content/mysite/mypage | null
* 2. Language localization | /content/mysite/en/mypage | /content/mysite/en
* 3. Country-language localization | /content/mysite/us/en/mypage | /content/mysite/us/en
* 4. Country-language localization (variant)| /content/us/mysite/en/mypage | /content/us/mysite/en
* 5. Blueprint | /content/mysite/blueprint/mypage | /content/mysite/blueprint
- * 4. Livecopy | /content/mysite/livecopy/mypage | /content/mysite/livecopy
+ * 6. Live Copy | /content/mysite/livecopy/mypage | /content/mysite/livecopy
*
- * @param path the resource path.
- * @return the localization root of the resource at the given path if it exists, {@code null} otherwise.
+ * @param path the resource path
+ * @return the localization root of the resource at the given path if it exists, {@code null} otherwise
*/
private String getLocalizationRoot(String path) {
String root = null;
@@ -143,8 +148,8 @@ private String getLocalizationRoot(String path) {
/**
* Returns the language root of the resource.
*
- * @param resource The resource
- * @return The language root of the resource if it exists, {@code null} otherwise
+ * @param resource the resource
+ * @return the language root of the resource if it exists, {@code null} otherwise
*/
private String getLanguageRoot(Resource resource) {
Page rootPage = languageManager.getLanguageRoot(resource);
@@ -157,8 +162,8 @@ private String getLanguageRoot(Resource resource) {
/**
* Returns the path of the blueprint of the resource.
*
- * @param resource The resource
- * @return The path of the blueprint of the resource if it exists, {@code null} otherwise
+ * @param resource the resource
+ * @return the path of the blueprint of the resource if it exists, {@code null} otherwise
*/
private String getBlueprintPath(Resource resource) {
try {
@@ -183,8 +188,8 @@ private String getBlueprintPath(Resource resource) {
/**
* Returns the path of the live copy of the resource.
*
- * @param resource The resource
- * @return The path of the live copy of the resource if it exists, {@code null} otherwise
+ * @param resource the resource
+ * @return the path of the live copy of the resource if it exists, {@code null} otherwise
*/
private String getLiveCopyPath(Resource resource) {
try {
@@ -211,9 +216,9 @@ private String getLiveCopyPath(Resource resource) {
* to be used with XF.
* This method works around this issue by deducting the XF root from the XF path and the root of the current page.
*
- * @param xfPath The experience fragment path.
- * @param currentPageRoot The localization root of the current page.
- * @return The localization root of the experience fragment path if it exists, {@code null} otherwise.
+ * @param xfPath the experience fragment path
+ * @param currentPageRoot the localization root of the current page
+ * @return the localization root of the experience fragment path if it exists, {@code null} otherwise
*/
private String getXfLocalizationRoot(String xfPath, String currentPageRoot) {
String xfRoot = null;
@@ -234,8 +239,8 @@ private String getXfLocalizationRoot(String xfPath, String currentPageRoot) {
/**
* Checks if the resource exists at the given path.
*
- * @param path The resource path.
- * @return {@code true} if the resource exists, {@code false} otherwise.
+ * @param path the resource path
+ * @return {@code true} if the resource exists, {@code false} otherwise
*/
private boolean resourceExists(String path) {
return (StringUtils.isNotEmpty(path) && resolver.getResource(path) != null);
@@ -244,11 +249,28 @@ private boolean resourceExists(String path) {
/**
* Checks if the resource is defined in the template.
*
- * @return {@code true} if the resource is defined in the template, {@code false} otherwise.
+ * @return {@code true} if the resource is defined in the template, {@code false} otherwise
*/
private boolean inTemplate () {
Template template = currentPage.getTemplate();
return template != null && StringUtils.startsWith(resource.getPath(), template.getPath());
}
+ /**
+ * Checks if the resource at the given path is an Experience Fragment variation.
+ *
+ * @return {@code true} if the resource is an XF variation, {@code false} otherwise
+ */
+ private boolean isExperienceFragmentVariation(String path) {
+ if (StringUtils.isNotEmpty(path)) {
+ Resource resource = resolver.getResource(path);
+ if (resource != null) {
+ ValueMap properties = resource.getValueMap();
+ String xfVariantType = properties.get(ExperienceFragmentsConstants.PN_XF_VARIANT_TYPE, String.class);
+ return xfVariantType != null;
+ }
+ }
+ return false;
+ }
+
}
diff --git a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/NavigationImpl.java b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/NavigationImpl.java
index ee9d02e33d..a69713e037 100644
--- a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/NavigationImpl.java
+++ b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/NavigationImpl.java
@@ -242,7 +242,7 @@ private NavigationRoot(@NotNull Page navigationRoot, int configuredStructureDept
/**
* Gets the resource representation of the navigation root page.
*
- * @return The resource for the navigation root, empty if the resource could not be resolved.
+ * @return the resource for the navigation root, empty if the resource could not be resolved
*/
@NotNull
final Optional getPageResource() {
diff --git a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/PageImpl.java b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/PageImpl.java
index ce73def92b..d5ea0d8f30 100644
--- a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/PageImpl.java
+++ b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/PageImpl.java
@@ -234,9 +234,9 @@ public String getExportedType() {
/**
* Returns a map (resource name => Sling Model class) of the given resource children's Sling Models that can be adapted to {@link T}.
*
- * @param slingRequest The current request.
- * @param modelClass The Sling Model class to be adapted to.
- * @return Returns a map (resource name => Sling Model class) of the given resource children's Sling Models that can be adapted to {@link T}.
+ * @param slingRequest the current request
+ * @param modelClass the Sling Model class to be adapted to
+ * @return a map (resource name => Sling Model class) of the given resource children's Sling Models that can be adapted to {@link T}
*/
@NotNull
private Map getChildModels(@NotNull SlingHttpServletRequest slingRequest,
diff --git a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/models/ExperienceFragment.java b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/models/ExperienceFragment.java
index 7e7cd0e56b..f397e837ed 100644
--- a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/models/ExperienceFragment.java
+++ b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/models/ExperienceFragment.java
@@ -31,15 +31,15 @@ public interface ExperienceFragment extends ComponentExporter {
/**
* Name of the configuration policy property that specifies the experience fragment variation path. The property
- * should provide a String value.
+ * should provide a {@code String} value.
*
* @since com.adobe.cq.wcm.core.components.models 12.9.0
*/
- String PN_FRAGMENT_PATH = "fragmentPath";
+ String PN_FRAGMENT_VARIATION_PATH = "fragmentVariationPath";
/**
* Returns the localized path of the experience fragment variation if the experience fragment resource is defined
- * in the template. If not, it returns the configured fragment path if it exists, null otherwise.
+ * in the template. If not, it returns the configured fragment path if it exists, {@code null} otherwise.
*
* If both the content page and the experience fragment have a localized root (language, live copy or blueprint),
* - it is then assumed that the content pages and the experience fragments follow the same structure patterns -
@@ -49,7 +49,7 @@ public interface ExperienceFragment extends ComponentExporter {
* @return Localized experience fragment variation path
* @since com.adobe.cq.wcm.core.components.models 12.9.0
*/
- default String getLocalizedFragmentPath() {
+ default String getLocalizedFragmentVariationPath() {
throw new UnsupportedOperationException();
}
diff --git a/bundles/core/src/test/java/com/adobe/cq/wcm/core/components/internal/models/v1/ExperienceFragmentImplTest.java b/bundles/core/src/test/java/com/adobe/cq/wcm/core/components/internal/models/v1/ExperienceFragmentImplTest.java
index 3c9d88321a..7eae768ccc 100644
--- a/bundles/core/src/test/java/com/adobe/cq/wcm/core/components/internal/models/v1/ExperienceFragmentImplTest.java
+++ b/bundles/core/src/test/java/com/adobe/cq/wcm/core/components/internal/models/v1/ExperienceFragmentImplTest.java
@@ -153,7 +153,7 @@ public Object next() {
/**
* No localization structure
* XF component is defined in the page
- * fragmentPath is valid
+ * fragmentVariationPath is valid
*/
@Test
void testValidXFInPageWithoutLocalization() {
@@ -165,7 +165,7 @@ void testValidXFInPageWithoutLocalization() {
/**
* No localization structure
* XF component is defined in the template
- * fragmentPath is valid
+ * fragmentVariationPath is valid
*/
@Test
void testValidXFInTemplateWithoutLocalization() {
@@ -177,7 +177,7 @@ void testValidXFInTemplateWithoutLocalization() {
/**
* No localization structure
* XF component is defined in the page
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInPageWithoutLocalization() {
@@ -189,7 +189,7 @@ void testUndefinedXFInPageWithoutLocalization() {
/**
* No localization structure
* XF component is defined in the template
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInTemplateWithoutLocalization() {
@@ -201,7 +201,7 @@ void testUndefinedXFInTemplateWithoutLocalization() {
/**
* No localization structure
* XF component is defined in the page
- * fragmentPath is empty
+ * fragmentVariationPath is empty
*/
@Test
void testEmptyXFInPageWithoutLocalization() {
@@ -213,7 +213,7 @@ void testEmptyXFInPageWithoutLocalization() {
/**
* No localization structure
* XF component is defined in the template
- * fragmentPath is empty
+ * fragmentVariationPath is empty
*/
@Test
void testEmptyXFInTemplateWithoutLocalization() {
@@ -277,7 +277,7 @@ void testValidXFInTemplateWithLocalizationWithDifferentLanguage() {
/**
* Site with language localization
* XF component is defined in the page
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInPageWithLocalization() {
@@ -289,7 +289,7 @@ void testUndefinedXFInPageWithLocalization() {
/**
* Site with language localization
* XF component is defined in the template
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInTemplateWithLocalization() {
@@ -301,7 +301,7 @@ void testUndefinedXFInTemplateWithLocalization() {
/**
* Site with language localization
* XF component is defined in the page
- * fragmentPath is empty
+ * fragmentVariationPath is empty
*/
@Test
void testEmptyXFInPageWithLocalization() {
@@ -313,7 +313,7 @@ void testEmptyXFInPageWithLocalization() {
/**
* Site with language localization
* XF component is defined in the template
- * fragmentPath is empty
+ * fragmentVariationPath is empty
*/
@Test
void testEmptyXFInTemplateWithLocalization() {
@@ -377,7 +377,7 @@ void testValidXFInTemplateWithLocalizationWithDifferentCountryLanguage() {
/**
* Site with country-language localization
* XF component is defined in the page
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInPageWithLocalizationWithDifferentCountryLanguage() {
@@ -389,7 +389,7 @@ void testUndefinedXFInPageWithLocalizationWithDifferentCountryLanguage() {
/**
* Site with country-language localization
* XF component is defined in the template
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInTemplateWithLocalizationWithDifferentCountryLanguage() {
@@ -453,7 +453,7 @@ void testValidXFInTemplateWithLocalizationWithDifferentCountrySiteLanguage() {
/**
* Site with country-language localization (optional): eu/mysite/en
* XF component is defined in the page
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInPageWithLocalizationWithDifferentCountrySiteLanguage() {
@@ -465,7 +465,7 @@ void testUndefinedXFInPageWithLocalizationWithDifferentCountrySiteLanguage() {
/**
* Site with country-language localization (optional): eu/mysite/en
* XF component is defined in the template
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInTemplateWithLocalizationWithDifferentCountrySiteLanguage() {
@@ -529,7 +529,7 @@ void testValidXFInTemplateWithLocalizationWithDifferentCountry_Language() {
/**
* Site with country_language localization
* XF component is defined in the page
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInPageWithLocalizationWithDifferentCountry_Language() {
@@ -541,7 +541,7 @@ void testUndefinedXFInPageWithLocalizationWithDifferentCountry_Language() {
/**
* Site with country_language localization
* XF component is defined in the template
- * fragmentPath is undefined
+ * fragmentVariationPath is undefined
*/
@Test
void testUndefinedXFInTemplateWithLocalizationWithDifferentCountry_Language() {
diff --git a/bundles/core/src/test/java/com/adobe/cq/wcm/core/components/internal/models/v1/TextImplTest.java b/bundles/core/src/test/java/com/adobe/cq/wcm/core/components/internal/models/v1/TextImplTest.java
index 436d78e7f8..0b770dcce6 100644
--- a/bundles/core/src/test/java/com/adobe/cq/wcm/core/components/internal/models/v1/TextImplTest.java
+++ b/bundles/core/src/test/java/com/adobe/cq/wcm/core/components/internal/models/v1/TextImplTest.java
@@ -1,5 +1,5 @@
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ~ Copyright 2019 Adobe
+ ~ Copyright 2017 Adobe
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf1.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf1.json
index 8a34a1e88d..ea5d67b7b8 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf1.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf1.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/en/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/en/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf10.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf10.json
index 8a34a1e88d..ea5d67b7b8 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf10.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf10.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/en/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/en/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf11.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf11.json
index 7957b9c293..d924ce932b 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf11.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf11.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/es/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/es/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf11a.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf11a.json
index 8a34a1e88d..ea5d67b7b8 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf11a.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf11a.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/en/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/en/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf20.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf20.json
index 5ba571ecf4..f218e392e4 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf20.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf20.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/us/en/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/us/en/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf21.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf21.json
index 59f6cee0c4..083fc6bd99 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf21.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf21.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/us/es/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/us/es/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf21a.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf21a.json
index 5ba571ecf4..f218e392e4 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf21a.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf21a.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/us/en/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/us/en/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf30.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf30.json
index 5c8e2febe4..8cf92936d7 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf30.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf30.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/ch/mysite/fr/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/ch/mysite/fr/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf31.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf31.json
index 66c8add28b..fe0449b601 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf31.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf31.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/ch/mysite/de/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/ch/mysite/de/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf31a.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf31a.json
index 5c8e2febe4..8cf92936d7 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf31a.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf31a.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/ch/mysite/fr/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/ch/mysite/fr/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf40.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf40.json
index 32a5e1a946..78e56b19a6 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf40.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf40.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/ch_fr/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/ch_fr/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf41.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf41.json
index 13977e2deb..472dac24d6 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf41.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf41.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/ch_de/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/ch_de/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf41a.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf41a.json
index 32a5e1a946..78e56b19a6 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf41a.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf41a.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/ch_fr/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/ch_fr/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf50.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf50.json
index 0dcc75a93c..d6772d0a12 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf50.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf50.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/blueprint/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/blueprint/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf51.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf51.json
index 7d17f289d1..9f4a0923a6 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf51.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf51.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/livecopy/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/livecopy/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf51a.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf51a.json
index 0dcc75a93c..d6772d0a12 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf51a.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf51a.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/blueprint/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/blueprint/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf60.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf60.json
index 7d17f289d1..9f4a0923a6 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf60.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf60.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/livecopy/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/livecopy/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf61.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf61.json
index 0dcc75a93c..d6772d0a12 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf61.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf61.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/blueprint/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/blueprint/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/exporter-xf61a.json b/bundles/core/src/test/resources/experiencefragment/exporter-xf61a.json
index 7d17f289d1..9f4a0923a6 100644
--- a/bundles/core/src/test/resources/experiencefragment/exporter-xf61a.json
+++ b/bundles/core/src/test/resources/experiencefragment/exporter-xf61a.json
@@ -1,4 +1,4 @@
{
- "localizedFragmentPath":"/content/experience-fragments/mysite/livecopy/footer/master/jcr:content",
+ "localizedFragmentVariationPath":"/content/experience-fragments/mysite/livecopy/footer/master/jcr:content",
":type": "core/wcm/components/experiencefragment/v1/experiencefragment"
}
diff --git a/bundles/core/src/test/resources/experiencefragment/test-conf.json b/bundles/core/src/test/resources/experiencefragment/test-conf.json
index e9ec36acd3..6d1182e653 100644
--- a/bundles/core/src/test/resources/experiencefragment/test-conf.json
+++ b/bundles/core/src/test/resources/experiencefragment/test-conf.json
@@ -37,12 +37,12 @@
"xf-component-1a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/en/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/en/footer/master"
},
"xf-component-2a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/en/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/en/footer/master/undefined"
},
"xf-component-3a": {
"jcr:primaryType": "nt:unstructured",
@@ -51,17 +51,17 @@
"xf-component-10a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/en/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/en/footer/master"
},
"xf-component-11a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/es/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/es/footer/master"
},
"xf-component-12a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/en/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/en/footer/master/undefined"
},
"xf-component-13a": {
"jcr:primaryType": "nt:unstructured",
@@ -70,67 +70,67 @@
"xf-component-20a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/us/en/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/us/en/footer/master"
},
"xf-component-21a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/us/es/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/us/es/footer/master"
},
"xf-component-22a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/us/en/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/us/en/footer/master/undefined"
},
"xf-component-30a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch/mysite/fr/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch/mysite/fr/footer/master"
},
"xf-component-31a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch/mysite/de/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch/mysite/de/footer/master"
},
"xf-component-32a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch/mysite/en/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch/mysite/en/footer/master/undefined"
},
"xf-component-40a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch_fr/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch_fr/footer/master"
},
"xf-component-41a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch_de/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch_de/footer/master"
},
"xf-component-42a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch_fr/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch_fr/footer/master/undefined"
},
"xf-component-50a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/blueprint/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/blueprint/footer/master"
},
"xf-component-51a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/livecopy/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/livecopy/footer/master"
},
"xf-component-60a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/livecopy/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/livecopy/footer/master"
},
"xf-component-61a": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/blueprint/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/blueprint/footer/master"
}
}
}
diff --git a/bundles/core/src/test/resources/experiencefragment/test-content.json b/bundles/core/src/test/resources/experiencefragment/test-content.json
index 902016e464..acadb04d8a 100644
--- a/bundles/core/src/test/resources/experiencefragment/test-content.json
+++ b/bundles/core/src/test/resources/experiencefragment/test-content.json
@@ -1,11 +1,11 @@
{
- "mysite": {
- "jcr:primaryType": "sling:Folder",
- "jcr:content": {
- "jcr:primaryType": "cq:PageContent",
- "jcr:title": "Language Structure",
- "jcr:created": "Mon Apr 08 2019 20:21:55 GMT+0200"
- },
+ "mysite": {
+ "jcr:primaryType": "sling:Folder",
+ "jcr:content": {
+ "jcr:primaryType": "cq:PageContent",
+ "jcr:title": "Language Structure",
+ "jcr:created": "Mon Apr 08 2019 20:21:55 GMT+0200"
+ },
"page": {
"jcr:primaryType": "cq:Page",
"jcr:content": {
@@ -18,12 +18,12 @@
"xf-component-1": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/en/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/en/footer/master"
},
"xf-component-2": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/en/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/en/footer/master/undefined"
},
"xf-component-3": {
"jcr:primaryType": "nt:unstructured",
@@ -51,17 +51,17 @@
"xf-component-10": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/en/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/en/footer/master"
},
"xf-component-11": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/es/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/es/footer/master"
},
"xf-component-12": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/en/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/en/footer/master/undefined"
},
"xf-component-13": {
"jcr:primaryType": "nt:unstructured",
@@ -97,17 +97,17 @@
"xf-component-20": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/us/en/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/us/en/footer/master"
},
"xf-component-21": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/us/es/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/us/es/footer/master"
},
"xf-component-22": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/us/en/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/us/en/footer/master/undefined"
}
}
}
@@ -147,17 +147,17 @@
"xf-component-30": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch/mysite/fr/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch/mysite/fr/footer/master"
},
"xf-component-31": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch/mysite/de/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch/mysite/de/footer/master"
},
"xf-component-32": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch/mysite/en/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch/mysite/en/footer/master/undefined"
}
}
}
@@ -184,17 +184,17 @@
"xf-component-40": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch_fr/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch_fr/footer/master"
},
"xf-component-41": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch_de/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch_de/footer/master"
},
"xf-component-42": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/ch_fr/footer/master/undefined"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/ch_fr/footer/master/undefined"
}
}
}
@@ -219,12 +219,12 @@
"xf-component-50": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/blueprint/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/blueprint/footer/master"
},
"xf-component-51": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/livecopy/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/livecopy/footer/master"
}
}
}
@@ -249,21 +249,21 @@
"xf-component-60": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/livecopy/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/livecopy/footer/master"
},
"xf-component-61": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "core/wcm/components/experiencefragment/v1/experiencefragment",
- "fragmentPath": "/content/experience-fragments/mysite/blueprint/footer/master"
+ "fragmentVariationPath": "/content/experience-fragments/mysite/blueprint/footer/master"
}
}
}
}
}
},
- "experience-fragments": {
- "jcr:primaryType": "sling:Folder",
- "mysite": {
+ "experience-fragments": {
+ "jcr:primaryType": "sling:Folder",
+ "mysite": {
"jcr:primaryType": "sling:Folder",
"page": {
"jcr:primaryType": "cq:Page",
@@ -291,12 +291,14 @@
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Master",
+ "cq:xfVariantType": "web",
"cq:xfMasterVariation": "true"
}
},
"variation": {
"jcr:primaryType": "cq:Page",
"jcr:content": {
+ "cq:xfVariantType": "web",
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Variation"}
@@ -318,6 +320,7 @@
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:title": "Spanish Test Footer Master",
+ "cq:xfVariantType": "web",
"cq:xfMasterVariation": "true"
}
}
@@ -343,12 +346,14 @@
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Master",
+ "cq:xfVariantType": "web",
"cq:xfMasterVariation": "true"
}
},
"variation": {
"jcr:primaryType": "cq:Page",
"jcr:content": {
+ "cq:xfVariantType": "web",
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Variation"}
@@ -368,6 +373,7 @@
"master": {
"jcr:primaryType": "cq:Page",
"jcr:content": {
+ "cq:xfVariantType": "web",
"jcr:primaryType": "cq:PageContent",
"jcr:title": "Spanish Test Footer Master",
"cq:xfMasterVariation": "true"
@@ -392,12 +398,14 @@
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Master",
+ "cq:xfVariantType": "web",
"cq:xfMasterVariation": "true"
}
},
"variation": {
"jcr:primaryType": "cq:Page",
"jcr:content": {
+ "cq:xfVariantType": "web",
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Variation"}
@@ -419,6 +427,7 @@
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:title": "Spanish Test Footer Master",
+ "cq:xfVariantType": "web",
"cq:xfMasterVariation": "true"
}
}
@@ -439,12 +448,14 @@
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Master",
+ "cq:xfVariantType": "web",
"cq:xfMasterVariation": "true"
}
},
"variation": {
"jcr:primaryType": "cq:Page",
"jcr:content": {
+ "cq:xfVariantType": "web",
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Variation"}
@@ -466,6 +477,7 @@
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:title": "Spanish Test Footer Master",
+ "cq:xfVariantType": "web",
"cq:xfMasterVariation": "true"
}
}
@@ -486,12 +498,14 @@
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Master",
+ "cq:xfVariantType": "web",
"cq:xfMasterVariation": "true"
}
},
"variation": {
"jcr:primaryType": "cq:Page",
"jcr:content": {
+ "cq:xfVariantType": "web",
"jcr:primaryType": "cq:PageContent",
"jcr:title": "English Test Footer Variation"}
@@ -513,11 +527,12 @@
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:title": "Spanish Test Footer Master",
+ "cq:xfVariantType": "web",
"cq:xfMasterVariation": "true"
}
}
}
}
}
- }
+ }
}
diff --git a/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/.content.xml b/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/.content.xml
index f7b243ccd6..28ed295a4c 100644
--- a/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/.content.xml
+++ b/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/.content.xml
@@ -16,7 +16,7 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
diff --git a/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/README.md b/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/README.md
index a26adaab10..3a76bdc995 100644
--- a/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/README.md
+++ b/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/README.md
@@ -19,31 +19,34 @@ Experience Fragment (v1)
Experience fragment component written in HTL that renders an experience fragment variation.
## Features
-* Can be used on both templates and pages
-* Defines a configurable experience fragment variation to be displayed
-* Supports references for localized content: if the component is defined in a template and if the fragment is part of a localized structure below `/content/experience-fragments` that follows the same patterns as the site below `/content, the fragment with the same localization (language, blueprint or live copy) as the current page will be rendered.
+* Can be used on both templates and pages.
+* Defines a configurable experience fragment variation to be displayed.
+* Supports references for localized content: if the component is defined in a template and if the fragment is part of a localized structure below `/content/experience-fragments` that follows the same patterns as the site below `/content`, the fragment with the same localization (language, blueprint or live copy) as the current page will be rendered.
### Use Object
-The Experience fragment component uses the `com.adobe.cq.wcm.core.components.models.ExperienceFragment` Sling model as its Use-object.
+The experience fragment component uses the `com.adobe.cq.wcm.core.components.models.ExperienceFragment` Sling model as its Use-object.
### Edit Dialog Properties
-The following property is written to JCR for the Experience Fragment component and is expected to be available as a `Resource` property:
+The following property is written to JCR for the experience fragment component and is expected to be available as a `Resource` property:
-1. `./fragmentPath` - defines the path to the Experience Fragment to be rendered
+1. `./fragmentVariationPath` - defines the path to the experience fragment variation to be rendered.
## BEM Description
```
BLOCK cmp-experiencefragment
```
-Note: the rendered HTML markup of the Experience Component contains CSS classes that start with `xf-` (e.g. `xf-content-height` or `xf-master-building-block`):
+Note: the rendered HTML markup of the experience fragment component may contain CSS classes that start with `xf-` (e.g. `xf-content-height` or `xf-master-building-block`) -
those classes are private and should not be used in custom code (e.g. to style the markup).
## Information
* **Vendor**: Adobe
* **Version**: v1
-* **Compatibility**: AEM 6.4
+* **Compatibility**: AEM 6.3
* **Status**: production-ready
-* **Documentation**: [https://www.adobe.com/go/aem\_cmp\_experiencefragment\_v1](https://www.adobe.com/go/aem_cmp_experiencefragment_v1)
+* **Documentation**: [https://www.adobe.com/go/aem\_cmp\_xf\_v1](https://www.adobe.com/go/aem_cmp_xf_v1)
* **Component Library**: [https://www.adobe.com/go/aem\_cmp\_library\_xf](https://www.adobe.com/go/aem_cmp_library_xf)
+* **Author**: [Abhishek Aggarwal](https://github.com/abhishekagg19)
+* **Co-authors**: [Jean-Christophe Kautzmann](https://github.com/jckautzmann)
+_If you were involved in the authoring of this component and are not credited above, please reach out to us on [GitHub](https://github.com/adobe/aem-core-wcm-components)._
diff --git a/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/_cq_design_dialog/.content.xml b/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/_cq_design_dialog/.content.xml
index c632471098..f1df5b8a70 100644
--- a/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/_cq_design_dialog/.content.xml
+++ b/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/_cq_design_dialog/.content.xml
@@ -16,9 +16,8 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
>
-
-
+ fieldDescription="Choose the experience fragment variation to display.">
+
diff --git a/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/_cq_editConfig.xml b/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/_cq_editConfig.xml
index 21f7e92f7c..7ef081a2fa 100644
--- a/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/_cq_editConfig.xml
+++ b/content/src/content/jcr_root/apps/core/wcm/components/experiencefragment/v1/experiencefragment/_cq_editConfig.xml
@@ -22,7 +22,7 @@
+ data-sly-test.localizedFragmentVariationPath=${fragment.localizedFragmentVariationPath}
+ data-sly-resource="${@path=localizedFragmentVariationPath, selectors='content', wcmmode='disabled'}">
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/src/content/jcr_root/content/core-components-examples/library/experience-fragment/.content.xml b/examples/src/content/jcr_root/content/core-components-examples/library/experience-fragment/.content.xml
index 4a7d3f7af1..0f06f208a4 100644
--- a/examples/src/content/jcr_root/content/core-components-examples/library/experience-fragment/.content.xml
+++ b/examples/src/content/jcr_root/content/core-components-examples/library/experience-fragment/.content.xml
@@ -34,7 +34,7 @@
jcr:lastModifiedBy="admin"
jcr:primaryType="nt:unstructured"
sling:resourceType="core/wcm/components/text/v2/text"
- text="<p>Experience Fragment allows an experience fragment and its variations to be presented on a page.</p>
"
+ text="<p>Experience Fragment allows an experience fragment variation to be presented on a page.</p>
"
textIsRich="true"/>
+
+ fragmentVariationPath="/content/experience-fragments/core-components-examples/library/simple-experience-fragment/master"/>
-
diff --git a/examples/src/content/jcr_root/content/experience-fragments/core-components-examples/library/simple-experience-fragment/variation1/.content.xml b/examples/src/content/jcr_root/content/experience-fragments/core-components-examples/library/simple-experience-fragment/variation1/.content.xml
deleted file mode 100644
index c62d38ec5d..0000000000
--- a/examples/src/content/jcr_root/content/experience-fragments/core-components-examples/library/simple-experience-fragment/variation1/.content.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-