Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix issue with Initial values #1218

Merged
merged 2 commits into from
Jan 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 String getGroup() {
Map<String, Integer> groupTracker = getGroupTracker(this.request);
String path = this.request.getResource().getPath();

Check warning on line 92 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L91-L92

Added lines #L91 - L92 were not covered by tests

if (groupTracker.get(path) != null) {
group = groupTracker.get(path);

Check warning on line 95 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L95

Added line #L95 was not covered by tests
} else {
group = this.request.getResource().getPath().hashCode();

Check warning on line 97 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L97

Added line #L97 was not covered by tests
}

return group + "_group";
}


public String getInitialValue() {
return null;
}
Expand Down Expand Up @@ -169,8 +178,12 @@
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);

Check warning on line 186 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L186

Added line #L186 was not covered by tests
}
}

Expand All @@ -190,39 +203,29 @@
* @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);

Check warning on line 206 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L206

Added line #L206 was not covered by tests

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());

Check warning on line 209 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L209

Added line #L209 was not covered by tests
// Processed
return false;

Check warning on line 211 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L211

Added line #L211 was not covered by tests
} 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");

Check warning on line 216 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L213-L216

Added lines #L213 - L216 were not covered by tests
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);

Check warning on line 223 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L223

Added line #L223 was not covered by tests
if (groupTracker == null) {
groupTracker = new HashMap<>();

Check warning on line 225 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L225

Added line #L225 was not covered by tests
}

if (legacyGroupTracker instanceof Integer) {
group = (Integer) legacyGroupTracker + 1;
request.setAttribute(REQUEST_ATTR_LEGACY_PREDICATE_GROUP_TRACKER, group);
} else {
group = -1;
}
return groupTracker;

Check warning on line 228 in core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/predicates/AbstractPredicate.java#L228

Added line #L228 was not covered by tests
}

public class AlphabeticalOptionItems implements Comparator<OptionItem> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,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
Loading