Skip to content

Commit

Permalink
Merge pull request #1219 from adobe/develop
Browse files Browse the repository at this point in the history
v.3.9.0 release
  • Loading branch information
davidjgonzalez authored Jan 24, 2025
2 parents d574785 + 6a21e82 commit 5eb635e
Show file tree
Hide file tree
Showing 27 changed files with 264 additions and 61 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/snapshot-deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +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
3 changes: 2 additions & 1 deletion .github/workflows/verify.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +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
2 changes: 1 addition & 1 deletion all/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<parent>
<groupId>com.adobe.aem.commons</groupId>
<artifactId>assetshare</artifactId>
<version>3.8.23-SNAPSHOT</version>
<version>3.9.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion core.cloud/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<groupId>com.adobe.aem.commons</groupId>
<artifactId>assetshare</artifactId>
<version>3.8.23-SNAPSHOT</version>
<version>3.9.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<groupId>com.adobe.aem.commons</groupId>
<artifactId>assetshare</artifactId>
<version>3.8.23-SNAPSHOT</version>
<version>3.9.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,16 @@
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;
import java.util.List;
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 {
Expand All @@ -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;

Expand Down Expand Up @@ -206,14 +212,29 @@ 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);
} else {
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("<li><a href=\"");
sb.append(url);
sb.append("\">");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -89,9 +88,19 @@ public boolean isAutoSearch() {
}

public String getGroup() {
Map<String, Integer> 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;
}
Expand Down Expand Up @@ -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);
}
}

Expand All @@ -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<String, Integer> 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<String, Integer> getGroupTracker(SlingHttpServletRequest request) {
HashMap<String, Integer> 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<OptionItem> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ enum ParamTypes {
LIMIT,
HIDDEN_PREDICATES,
SEARCH_PREDICATES,
ORDERBY;
ORDERBY,
INDEX_TAG,
FACET_STRATEGY
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,14 @@ public String getGuessTotal() {
return searchConfig.getGuessTotal();
}

public String getIndexTag() {
return searchConfig.getIndexTag();
}

public String getFacetStrategy() {
return searchConfig.getFacetStrategy();
}

public List<String> getPaths() {
return searchConfig.getPaths();
}
Expand Down Expand Up @@ -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.<String, String>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.<String, String>builder().
put(Predicate.PARAM_FACET_STRATEGY, facetStrategy).
build()));
}


private void addGuessTotalAsParameterPredicate(final PredicateGroup parameterGroup) {
parameterGroup.addAll(PredicateConverter.createPredicates(ImmutableMap.<String, String>builder().
put(Predicate.PARAM_GUESS_TOTAL, getGuessTotal()).
Expand Down Expand Up @@ -274,20 +312,16 @@ 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());
}

// 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<String> getPaths() {
final List<String> paths = Arrays.stream(properties.get(PN_PATHS, DEFAULT_PATHS)).filter(path ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Loading

0 comments on commit 5eb635e

Please sign in to comment.