From d5b2103043525d2ebd02307e3bef22514a209cc0 Mon Sep 17 00:00:00 2001 From: "david g." Date: Wed, 22 Jan 2025 17:25:52 -0500 Subject: [PATCH 01/10] Update for codecov to use secret --- .github/workflows/snapshot-deploy.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/snapshot-deploy.yaml b/.github/workflows/snapshot-deploy.yaml index e04bd373f..5ccc1d1d8 100644 --- a/.github/workflows/snapshot-deploy.yaml +++ b/.github/workflows/snapshot-deploy.yaml @@ -69,4 +69,5 @@ jobs: - name: Upload CodeCov uses: codecov/codecov-action@v4 with: + token: ${{ secrets.CODECOV_TOKEN }} flags: unittests From 69fb6959818d5110577365630922e58ec8185982 Mon Sep 17 00:00:00 2001 From: "david g." Date: Wed, 22 Jan 2025 17:26:28 -0500 Subject: [PATCH 02/10] Update codecov token to use secrets --- .github/workflows/verify.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 45feacdc6..97f4251c6 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -45,4 +45,5 @@ jobs: - name: Upload CodeCov uses: codecov/codecov-action@v4 with: + token: ${{ secrets.CODECOV_TOKEN }} flags: unittests From 3ed3d6b69fe22cccb0d1150524839290f3a81af0 Mon Sep 17 00:00:00 2001 From: "david g." Date: Fri, 24 Jan 2025 08:23:05 -0500 Subject: [PATCH 03/10] Oak index configuration optimizations (#1217) * Added optimizations for Oak index selection and use --- all/pom.xml | 2 +- core.cloud/pom.xml | 2 +- core/pom.xml | 2 +- .../components/predicates/PagePredicate.java | 4 +- .../predicates/impl/PagePredicateImpl.java | 38 +++++++++++++ .../components/predicates/package-info.java | 2 +- .../components/search/SearchConfig.java | 12 +++++ .../search/impl/SearchConfigImpl.java | 22 ++++++++ .../components/search/package-info.java | 2 +- .../util/impl/OakIndexResolver.java | 9 +++- .../search/impl/FastPropertiesImplTest.json | 54 ++++++++++++++++++- dispatcher/pom.xml | 2 +- pom.xml | 2 +- ui.apps.structure/pom.xml | 2 +- ui.apps/pom.xml | 2 +- .../modals/share/_cq_dialog/.content.xml | 30 +++++++++++ .../search/results/_cq_dialog/.content.xml | 20 ++++++- .../search/results/_cq_template/.content.xml | 2 + ui.config/pom.xml | 2 +- ui.content.sample/pom.xml | 2 +- ui.content/pom.xml | 2 +- ui.frontend.theme.dark/pom.xml | 2 +- ui.frontend.theme.light/pom.xml | 2 +- 23 files changed, 200 insertions(+), 19 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index 20295733c..d63f06d5d 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -22,7 +22,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/core.cloud/pom.xml b/core.cloud/pom.xml index 670ab77f7..39e954c8b 100644 --- a/core.cloud/pom.xml +++ b/core.cloud/pom.xml @@ -23,7 +23,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/core/pom.xml b/core/pom.xml index 0361b7c0f..190706a23 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -23,7 +23,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/PagePredicate.java b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/PagePredicate.java index b52677950..17fac921c 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/PagePredicate.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/PagePredicate.java @@ -44,7 +44,9 @@ enum ParamTypes { LIMIT, HIDDEN_PREDICATES, SEARCH_PREDICATES, - ORDERBY; + ORDERBY, + INDEX_TAG, + FACET_STRATEGY } /** diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/impl/PagePredicateImpl.java b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/impl/PagePredicateImpl.java index 65a65d6e4..a3da02c6a 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/impl/PagePredicateImpl.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/impl/PagePredicateImpl.java @@ -168,6 +168,14 @@ public String getGuessTotal() { return searchConfig.getGuessTotal(); } + public String getIndexTag() { + return searchConfig.getIndexTag(); + } + + public String getFacetStrategy() { + return searchConfig.getFacetStrategy(); + } + public List getPaths() { return searchConfig.getPaths(); } @@ -230,11 +238,41 @@ public PredicateGroup getPredicateGroup(ParamTypes... excludeParamTypes) { addGuessTotalAsParameterPredicate(parameterGroup); } + // p.indexTag + if (!ArrayUtils.contains(excludeParamTypes, ParamTypes.INDEX_TAG)) { + addIndexTagAsParameterPredicate(parameterGroup); + } + + // p.facetStrategy + if (!ArrayUtils.contains(excludeParamTypes, ParamTypes.FACET_STRATEGY)) { + addFacetStrategyAsParameterPredicate(parameterGroup); + } + + root.add(parameterGroup); return root; } + private void addIndexTagAsParameterPredicate(final PredicateGroup parameterGroup) { + String indexTag = getIndexTag(); + if (StringUtils.isBlank(indexTag)) { return; } + + parameterGroup.addAll(PredicateConverter.createPredicates(ImmutableMap.builder(). + put(Predicate.PARAM_OPTIONS_INDEXTAG, indexTag). + build())); + } + + private void addFacetStrategyAsParameterPredicate(final PredicateGroup parameterGroup) { + String facetStrategy = getFacetStrategy(); + if (StringUtils.isBlank(facetStrategy)) { return; } + + parameterGroup.addAll(PredicateConverter.createPredicates(ImmutableMap.builder(). + put(Predicate.PARAM_FACET_STRATEGY, facetStrategy). + build())); + } + + private void addGuessTotalAsParameterPredicate(final PredicateGroup parameterGroup) { parameterGroup.addAll(PredicateConverter.createPredicates(ImmutableMap.builder(). put(Predicate.PARAM_GUESS_TOTAL, getGuessTotal()). diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/package-info.java b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/package-info.java index b55171ca6..6fdb0fbb5 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/package-info.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/package-info.java @@ -17,7 +17,7 @@ * */ -@Version("4.2.0") +@Version("4.3.0") package com.adobe.aem.commons.assetshare.components.predicates; import org.osgi.annotation.versioning.Version; diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/SearchConfig.java b/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/SearchConfig.java index f5efcd203..657b111b0 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/SearchConfig.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/SearchConfig.java @@ -72,6 +72,18 @@ public interface SearchConfig { */ String getGuessTotal(); + /** + * + * @return the index tag hint, or null if none is set + */ + default String getIndexTag() { return null; }; + + /** + * + * @return the facet strategy, or null if none is set + */ + default String getFacetStrategy() { return null; } + /** * @return the default */ diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/impl/SearchConfigImpl.java b/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/impl/SearchConfigImpl.java index efedb8a25..7d68208a9 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/impl/SearchConfigImpl.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/impl/SearchConfigImpl.java @@ -62,6 +62,8 @@ public class SearchConfigImpl implements SearchConfig, ComponentExporter { private String PN_GUESS_TOTAL = Predicate.PARAM_GUESS_TOTAL; private String PN_SPID = "searchProviderId"; private String PN_SEARCH_PREDICATES = "searchPredicates"; + private String PN_INDEX_TAG = "indexTag"; + private String PN_FACET_STRATEGY = "facetStrategy"; @Self private SlingHttpServletRequest request; @@ -148,6 +150,26 @@ public boolean isOrderByCase() { return properties.get(PN_ORDER_BY_CASE, DEFAULT_ORDER_BY_CASE); } + @Override + public String getIndexTag() { + String indexTag = properties.get(PN_INDEX_TAG, String.class); + if (StringUtils.isBlank(indexTag)) { + return null; + } else { + return indexTag; + } + } + + @Override + public String getFacetStrategy() { + String facetStrategy = properties.get(PN_FACET_STRATEGY, String.class); + if (StringUtils.isBlank(facetStrategy)) { + return null; + } else { + return facetStrategy; + } + } + @Override public List getPaths() { final List paths = Arrays.stream(properties.get(PN_PATHS, DEFAULT_PATHS)).filter(path -> diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/package-info.java b/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/package-info.java index 85786333a..0ff395ed9 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/package-info.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/components/search/package-info.java @@ -17,7 +17,7 @@ * */ -@Version("2.1.1") +@Version("2.2.0") package com.adobe.aem.commons.assetshare.components.search; import org.osgi.annotation.versioning.Version; diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/util/impl/OakIndexResolver.java b/core/src/main/java/com/adobe/aem/commons/assetshare/util/impl/OakIndexResolver.java index 0c56ecebe..7df6cdc97 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/util/impl/OakIndexResolver.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/util/impl/OakIndexResolver.java @@ -28,7 +28,12 @@ private OakIndexResolver() { public static final String resolveRankingOakIndex(final ResourceResolver resourceResolver, final String oakIndexRootName) { final Resource oakIndexes = resourceResolver.getResource(PATH_OAK_INDEX); - final Map map = new TreeMap<>(Collections.reverseOrder()); + //final Map map = new TreeMap<>(Collections.reverseOrder()); + + Map map = new TreeMap<>((a, b) -> { + // Parse the version strings into Comparable doubles + return Double.compare(Double.parseDouble(b), Double.parseDouble(a)); + }); StreamSupport.stream(oakIndexes.getChildren().spliterator(), false) // Only look at Lucene indexes @@ -40,7 +45,7 @@ public static final String resolveRankingOakIndex(final ResourceResolver resourc if (log.isDebugEnabled()) { log.debug("Resolved Oak Index [ {} ] -> [ {} ]", oakIndex.getPath(), version); } - map.put(version, oakIndex.getName()); + map.put(version.toString(), oakIndex.getName()); } else { if (log.isWarnEnabled()) { log.warn("Unable to parse version for Oak Index [ {} ]", oakIndex.getPath()); diff --git a/core/src/test/resources/com/adobe/aem/commons/assetshare/search/impl/FastPropertiesImplTest.json b/core/src/test/resources/com/adobe/aem/commons/assetshare/search/impl/FastPropertiesImplTest.json index 31f24f53f..7fa0107d8 100644 --- a/core/src/test/resources/com/adobe/aem/commons/assetshare/search/impl/FastPropertiesImplTest.json +++ b/core/src/test/resources/com/adobe/aem/commons/assetshare/search/impl/FastPropertiesImplTest.json @@ -1,5 +1,18 @@ { - "damAssetLucene-99-custom-1": { + "damAssetLucene": { + "jcr:primaryType": "oak:QueryIndexDefinition", + "type": "lucene", + "indexRules": { + "jcr:primaryType": "nt:unstructured", + "dam:Asset": { + "jcr:primaryType": "nt:unstructured", + "properties": { + "jcr:primaryType": "nt:unstructured" + } + } + } + }, + "damAssetLucene-100-custom-1": { "jcr:primaryType": "oak:QueryIndexDefinition", "type": "lucene", "indexRules": { @@ -38,6 +51,45 @@ } } } + }, + "damAssetLucene-98-custom-2": { + "jcr:primaryType": "oak:QueryIndexDefinition", + "type": "lucene", + "indexRules": { + "jcr:primaryType": "nt:unstructured", + "dam:Asset": { + "jcr:primaryType": "nt:unstructured", + "properties": { + "jcr:primaryType": "nt:unstructured" + } + } + } + }, + "damAssetLucene-87-custom-10": { + "jcr:primaryType": "oak:QueryIndexDefinition", + "type": "lucene", + "indexRules": { + "jcr:primaryType": "nt:unstructured", + "dam:Asset": { + "jcr:primaryType": "nt:unstructured", + "properties": { + "jcr:primaryType": "nt:unstructured" + } + } + } + }, + "damAssetLucene-1": { + "jcr:primaryType": "oak:QueryIndexDefinition", + "type": "lucene", + "indexRules": { + "jcr:primaryType": "nt:unstructured", + "dam:Asset": { + "jcr:primaryType": "nt:unstructured", + "properties": { + "jcr:primaryType": "nt:unstructured" + } + } + } } } diff --git a/dispatcher/pom.xml b/dispatcher/pom.xml index 1d649558e..cf772121e 100644 --- a/dispatcher/pom.xml +++ b/dispatcher/pom.xml @@ -7,7 +7,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 169c1e052..9b01ac961 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ com.adobe.aem.commons assetshare pom - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT Asset Share Commons - Reactor Project asset-share-commons diff --git a/ui.apps.structure/pom.xml b/ui.apps.structure/pom.xml index 44cb6fa93..b2d7a95a4 100644 --- a/ui.apps.structure/pom.xml +++ b/ui.apps.structure/pom.xml @@ -8,7 +8,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml index 17f7d6c52..55fad55ae 100644 --- a/ui.apps/pom.xml +++ b/ui.apps/pom.xml @@ -23,7 +23,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/modals/share/_cq_dialog/.content.xml b/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/modals/share/_cq_dialog/.content.xml index 6f367f3e7..392be332f 100644 --- a/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/modals/share/_cq_dialog/.content.xml +++ b/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/modals/share/_cq_dialog/.content.xml @@ -251,6 +251,36 @@ + + + + + + + + + + diff --git a/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/search/results/_cq_dialog/.content.xml b/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/search/results/_cq_dialog/.content.xml index bbc4258fe..77347b22a 100644 --- a/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/search/results/_cq_dialog/.content.xml +++ b/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/search/results/_cq_dialog/.content.xml @@ -82,6 +82,7 @@ min="1" name="./limit" value="50"/> + + + + + diff --git a/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/search/results/_cq_template/.content.xml b/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/search/results/_cq_template/.content.xml index 2cf726814..7240f1c94 100644 --- a/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/search/results/_cq_template/.content.xml +++ b/ui.apps/src/main/content/jcr_root/apps/asset-share-commons/components/search/results/_cq_template/.content.xml @@ -28,4 +28,6 @@ noResultsText="Your search did not match any assets." orderBy="@jcr:score" orderBySort="desc" + indexTag="" + facetStrategy="oak" paths="[/content/dam]"/> diff --git a/ui.config/pom.xml b/ui.config/pom.xml index 3e02f0aa7..9a8a55e36 100644 --- a/ui.config/pom.xml +++ b/ui.config/pom.xml @@ -23,7 +23,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/ui.content.sample/pom.xml b/ui.content.sample/pom.xml index 4e936453b..83dc70859 100644 --- a/ui.content.sample/pom.xml +++ b/ui.content.sample/pom.xml @@ -23,7 +23,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/ui.content/pom.xml b/ui.content/pom.xml index 7210980ff..9d2887889 100644 --- a/ui.content/pom.xml +++ b/ui.content/pom.xml @@ -22,7 +22,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/ui.frontend.theme.dark/pom.xml b/ui.frontend.theme.dark/pom.xml index 6ab12a5b3..f833ab5d4 100644 --- a/ui.frontend.theme.dark/pom.xml +++ b/ui.frontend.theme.dark/pom.xml @@ -23,7 +23,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml diff --git a/ui.frontend.theme.light/pom.xml b/ui.frontend.theme.light/pom.xml index 14f6aba67..afb5079ab 100644 --- a/ui.frontend.theme.light/pom.xml +++ b/ui.frontend.theme.light/pom.xml @@ -23,7 +23,7 @@ com.adobe.aem.commons assetshare - 3.8.23-SNAPSHOT + 3.9.0-SNAPSHOT ../pom.xml From 6167ea8e95264088baf47a6275b8fd97d84b2992 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 11:01:03 -0500 Subject: [PATCH 04/10] Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.0 to 3.11.2 (#1209) Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.10.0 to 3.11.2. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.10.0...maven-javadoc-plugin-3.11.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9b01ac961..97b57a634 100644 --- a/pom.xml +++ b/pom.xml @@ -462,7 +462,7 @@ Bundle-DocURL: https://opensource.adobe.com/asset-share-commons/ maven-javadoc-plugin - 3.10.0 + 3.11.2 ${project.build.sourceEncoding} From daa8cbb6b8d5bf69317bb6c654f396f5c43c89bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 11:01:16 -0500 Subject: [PATCH 05/10] Bump codecov/codecov-action from 4 to 5 (#1203) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4...v5) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/snapshot-deploy.yaml | 2 +- .github/workflows/verify.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/snapshot-deploy.yaml b/.github/workflows/snapshot-deploy.yaml index 5ccc1d1d8..3032c7073 100644 --- a/.github/workflows/snapshot-deploy.yaml +++ b/.github/workflows/snapshot-deploy.yaml @@ -67,7 +67,7 @@ jobs: MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - name: Upload CodeCov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} flags: unittests diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 97f4251c6..6c8223c59 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -43,7 +43,7 @@ jobs: run: mvn -U clean verify -Pcloud,jacoco-report - name: Upload CodeCov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} flags: unittests From 07b9e3a1e967de3d556dfcc6c6d3b36d69a5be75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 11:02:25 -0500 Subject: [PATCH 06/10] Bump org.codehaus.mojo:build-helper-maven-plugin from 3.4.0 to 3.6.0 (#1194) Bumps [org.codehaus.mojo:build-helper-maven-plugin](https://github.com/mojohaus/build-helper-maven-plugin) from 3.4.0 to 3.6.0. - [Release notes](https://github.com/mojohaus/build-helper-maven-plugin/releases) - [Commits](https://github.com/mojohaus/build-helper-maven-plugin/compare/3.4.0...3.6.0) --- updated-dependencies: - dependency-name: org.codehaus.mojo:build-helper-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 97b57a634..c1e20cb91 100644 --- a/pom.xml +++ b/pom.xml @@ -391,7 +391,7 @@ Bundle-DocURL: https://opensource.adobe.com/asset-share-commons/ org.codehaus.mojo build-helper-maven-plugin - 3.4.0 + 3.6.0 From 4a3ac59b8f992fd07123487c2c780efaf74524d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 11:02:36 -0500 Subject: [PATCH 07/10] Bump org.apache.maven.plugins:maven-source-plugin from 3.3.0 to 3.3.1 (#1192) Bumps [org.apache.maven.plugins:maven-source-plugin](https://github.com/apache/maven-source-plugin) from 3.3.0 to 3.3.1. - [Release notes](https://github.com/apache/maven-source-plugin/releases) - [Commits](https://github.com/apache/maven-source-plugin/compare/maven-source-plugin-3.3.0...maven-source-plugin-3.3.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-source-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c1e20cb91..5fc6f75e0 100644 --- a/pom.xml +++ b/pom.xml @@ -129,7 +129,7 @@ org.apache.maven.plugins maven-source-plugin - 3.3.0 + 3.3.1 true From 3bb7ff8b4ef97ca2ea2734028fa44dd1c508f4a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 11:02:46 -0500 Subject: [PATCH 08/10] Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.4.1 to 3.5.0 (#1190) Bumps [org.apache.maven.plugins:maven-enforcer-plugin](https://github.com/apache/maven-enforcer) from 3.4.1 to 3.5.0. - [Release notes](https://github.com/apache/maven-enforcer/releases) - [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.4.1...enforcer-3.5.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-enforcer-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5fc6f75e0..5b0a3277e 100644 --- a/pom.xml +++ b/pom.xml @@ -136,7 +136,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.4.1 + 3.5.0 enforce-maven From e5c4d0e3628de097419c80672881c991e20d194e Mon Sep 17 00:00:00 2001 From: "david g." Date: Fri, 24 Jan 2025 11:03:22 -0500 Subject: [PATCH 09/10] Fix issue with Initial values (#1218) * Fixed issue with predicate group management * Remove unused legacy predicate group tracking --- .../predicates/AbstractPredicate.java | 63 ++++++++++--------- .../predicates/impl/PagePredicateImpl.java | 4 -- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java index 70bafd21d..b0505e6fe 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java @@ -37,19 +37,18 @@ import javax.inject.Named; import java.util.Arrays; import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; public abstract class AbstractPredicate implements Predicate { private static final Logger log = LoggerFactory.getLogger(AbstractPredicate.class); public static final String REQUEST_ATTR_PREDICATE_GROUP_TRACKER = "asset-share-commons__predicate-group"; - public static final String REQUEST_ATTR_LEGACY_PREDICATE_GROUP_TRACKER = "asset-share-commons__legacy_predicate-group"; + public static final String REQUEST_ATTR_LEGACY_PREDICATE_GROUP_TRACKER = "DEPRECATED_DO_NOT_USE__asset-share-commons__legacy_predicate-group"; private static final String REQUEST_ATTR_FORM_ID_TRACKER = "asset-share-commons__form-id"; private static final String PN_GENERATE_PREDICATE_GROUP_ID = "generatePredicateGroupId"; - private static final Integer INITIAL_GROUP_ID = 0; - private static final Integer INITIAL_LEGACY_GROUP_ID = 10000 - 1; - @Self @Required private SlingHttpServletRequest request; @@ -89,9 +88,19 @@ public boolean isAutoSearch() { } public String getGroup() { + Map groupTracker = getGroupTracker(this.request); + String path = this.request.getResource().getPath(); + + if (groupTracker.get(path) != null) { + group = groupTracker.get(path); + } else { + group = this.request.getResource().getPath().hashCode(); + } + return group + "_group"; } + public String getInitialValue() { return null; } @@ -169,8 +178,12 @@ protected final void initPredicate(final SlingHttpServletRequest request, final protected synchronized final void initGroup(final SlingHttpServletRequest request) { /* Track Predicate Groups across Request */ - if (!isGroupIdGeneratingComponent(request) || !isReady() || !generateGroupId(request)) { + /*if (!isGroupIdGeneratingComponent(request) || !isReady() || !generateGroupId(request)) { generateLegacyGroupId(request); + }*/ + + if (isGroupIdGeneratingComponent(request)) { + generateGroupId(request); } } @@ -190,39 +203,29 @@ private boolean isGroupIdGeneratingComponent(SlingHttpServletRequest request) { * @return true if a group id was generated. */ private boolean generateGroupId(SlingHttpServletRequest request) { - Object groupTracker = request.getAttribute(REQUEST_ATTR_PREDICATE_GROUP_TRACKER); - - if (groupTracker == null) { - groupTracker = INITIAL_GROUP_ID; - } + HashMap groupTracker = getGroupTracker(request); - if (groupTracker instanceof Integer) { - group = (Integer) groupTracker + 1; - request.setAttribute(REQUEST_ATTR_PREDICATE_GROUP_TRACKER, group); + if (groupTracker.containsKey(request.getResource().getPath())) { + this.group = groupTracker.getOrDefault(request.getResource().getPath(), request.getResource().getPath().hashCode()); + // Processed + return false; + } else { + group = groupTracker.values().stream().max(Integer::compare).orElse(-1) + 1; + groupTracker.put(request.getResource().getPath(), group); + request.setAttribute(REQUEST_ATTR_PREDICATE_GROUP_TRACKER, groupTracker); + request.setAttribute("TEST", "I WWAS SET IN GENERATE GROUP ID"); return true; } - - return false; } - /** - * Set the legacy groupId and set the request attribute. - * - * @param request the Sling Http Request object. - */ - private void generateLegacyGroupId(SlingHttpServletRequest request) { - Object legacyGroupTracker = request.getAttribute(REQUEST_ATTR_LEGACY_PREDICATE_GROUP_TRACKER); - if (legacyGroupTracker == null) { - legacyGroupTracker = INITIAL_LEGACY_GROUP_ID; + private HashMap getGroupTracker(SlingHttpServletRequest request) { + HashMap groupTracker = (HashMap) request.getAttribute(REQUEST_ATTR_PREDICATE_GROUP_TRACKER); + if (groupTracker == null) { + groupTracker = new HashMap<>(); } - if (legacyGroupTracker instanceof Integer) { - group = (Integer) legacyGroupTracker + 1; - request.setAttribute(REQUEST_ATTR_LEGACY_PREDICATE_GROUP_TRACKER, group); - } else { - group = -1; - } + return groupTracker; } public class AlphabeticalOptionItems implements Comparator { diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/impl/PagePredicateImpl.java b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/impl/PagePredicateImpl.java index a3da02c6a..60cfe5ccb 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/impl/PagePredicateImpl.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/impl/PagePredicateImpl.java @@ -312,11 +312,9 @@ private void addHiddenPredicatesAsPredicateGroups(final PredicateGroup root) { private void addDefaultValuesAsPredicateGroups(final PredicateGroup root) { // Capture any existing values, however these should be null Object predicateGroupTracker = request.getAttribute(AbstractPredicate.REQUEST_ATTR_PREDICATE_GROUP_TRACKER); - Object legacyPredicateGroupTracker = request.getAttribute(AbstractPredicate.REQUEST_ATTR_LEGACY_PREDICATE_GROUP_TRACKER); // Reset group tracking, as any instantiation of a predicate will increment the group request.setAttribute(AbstractPredicate.REQUEST_ATTR_PREDICATE_GROUP_TRACKER, null); - request.setAttribute(AbstractPredicate.REQUEST_ATTR_LEGACY_PREDICATE_GROUP_TRACKER, null); for (final DefaultValuesPredicate defaultValuesPredicate : getDefaultValuesPredicates(currentPage)) { root.add(defaultValuesPredicate.getPredicateGroup()); @@ -324,8 +322,6 @@ private void addDefaultValuesAsPredicateGroups(final PredicateGroup root) { // Set back any existing values, though these should be null request.setAttribute(AbstractPredicate.REQUEST_ATTR_PREDICATE_GROUP_TRACKER, predicateGroupTracker); - request.setAttribute(AbstractPredicate.REQUEST_ATTR_LEGACY_PREDICATE_GROUP_TRACKER, legacyPredicateGroupTracker); - } private void addPathAsPredicateGroup(final PredicateGroup root) { From 6a21e828cfd70620399e9e44eca80695d66aa776 Mon Sep 17 00:00:00 2001 From: "david g." Date: Fri, 24 Jan 2025 11:08:27 -0500 Subject: [PATCH 10/10] Adding share tracking (#1210) * Adding share tracking --- .../share/impl/EmailShareServiceImpl.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java b/core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java index 6b9761a25..21c98b372 100644 --- a/core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java +++ b/core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java @@ -67,7 +67,7 @@ import org.slf4j.LoggerFactory; import javax.jcr.RepositoryException; -import javax.jcr.Value; +import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -75,6 +75,8 @@ import java.util.Map; import java.util.Objects; +import org.apache.http.client.utils.URIBuilder; + @Component(service = ShareService.class) @Designate(ocd = EmailShareServiceImpl.Cfg.class) public class EmailShareServiceImpl implements ShareService { @@ -90,6 +92,10 @@ public class EmailShareServiceImpl implements ShareService { private static final String EMAIL_ADDRESSES = "email"; private static final String EMAIL_ASSET_LINK_LIST_HTML = "assetLinksHTML"; + /* Share properties */ + private static final String PN_TRACKING_NAME = "trackingName"; + private static final String PN_TRACKING_VALUE = "trackingValue"; + private transient Cfg cfg; private transient BundleContext bundleContext; @@ -206,7 +212,7 @@ private final String getAssetLinkListHtml(final Config config, final String[] as // Unescape the URL since externalizer also escapes, resulting in a breaking, double-escaped URLs // This is required since assetDetailsResolver.getFullUrl(config, asset) performs its own escaping. - url = Text.unescape(url); + url = Text.unescape(url); if (RequireAem.ServiceType.AUTHOR.equals(requireAem.getServiceType())) { url = externalizer.authorLink(config.getResourceResolver(), url); @@ -214,6 +220,21 @@ private final String getAssetLinkListHtml(final Config config, final String[] as url = externalizer.externalLink(config.getResourceResolver(), cfg.externalizerDomain(), url); } + String trackingName = config.getProperties().get(PN_TRACKING_NAME, String.class); + String trackingValue = config.getProperties().get(PN_TRACKING_VALUE, String.class); + + try { + if (!StringUtils.isAnyBlank(trackingName, trackingValue)) { + URIBuilder uriBuilder = new URIBuilder(url); + uriBuilder.setParameter(trackingName, trackingValue); + url = uriBuilder.build().toString(); + } + } catch (URISyntaxException e) { + if (log.isWarnEnabled()) { + log.warn("Unable to part [ {} ] to a valid URL for use in a share e-mail.", url); + } + } + sb.append("
  • ");