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

Issue 3166 - New option to suppress status update in replication workflow processes #3182

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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com)

- #3159 - Add PageProperty annotation for Sling Models
- #3170 - Added a new MCP tool to bulk tag AEM content pages via an Excel file input.
- #3166 - New option to suppress status updates in replication workflow processes

## Fixed

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,15 @@
public class ParameterizedActivatePageProcess extends ActivatePageProcess {

private static final String AGENT_ARG = "replicationAgent";
private static final String ARG_REPLICATION_SUPPRESS_STATUS_UPDATE = "suppressStatusUpdate";

private transient ThreadLocal<String[]> agentId = new ThreadLocal<String[]>();
private boolean suppressStatusUpdate = false;

@Override
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
agentId.set(args.get(AGENT_ARG, new String[] {}));
this.suppressStatusUpdate = Boolean.parseBoolean(args.get(ARG_REPLICATION_SUPPRESS_STATUS_UPDATE, String.class));
super.execute(workItem, workflowSession, args);

}
Expand All @@ -78,6 +81,7 @@ public boolean isIncluded(Agent agent) {
return ArrayUtils.contains(agentId.get(), agent.getId());
}
});
opts.setSuppressStatusUpdate(suppressStatusUpdate);
return opts;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,15 @@
public class ParameterizedDeactivatePageProcess extends DeactivatePageProcess {

private static final String AGENT_ARG = "replicationAgent";
private static final String ARG_REPLICATION_SUPPRESS_STATUS_UPDATE = "suppressStatusUpdate";

private transient ThreadLocal<String[]> agentId = new ThreadLocal<String[]>();
private boolean suppressStatusUpdate = false;

@Override
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
agentId.set(args.get(AGENT_ARG, new String[] {}));
this.suppressStatusUpdate = Boolean.parseBoolean(args.get(ARG_REPLICATION_SUPPRESS_STATUS_UPDATE, String.class));
super.execute(workItem, workflowSession, args);

}
Expand All @@ -78,6 +81,7 @@ public boolean isIncluded(Agent agent) {
return ArrayUtils.contains(agentId.get(), agent.getId());
}
});
opts.setSuppressStatusUpdate(suppressStatusUpdate);
return opts;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ public class ReplicateWithOptionsWorkflowProcess implements WorkflowProcess {
private static final String ARG_TRAVERSE_TREE = "traverseTree";
private static final String ARG_REPLICATION_ACTION_TYPE = "replicationActionType";
private static final String ARG_REPLICATION_SYNCHRONOUS = "synchronous";
private static final String ARG_REPLICATION_SUPPRESS_STATUS_UPDATE = "suppressStatusUpdate";
private static final String ARG_REPLICATION_SUPPRESS_VERSIONS = "suppressVersions";
private static final String ARG_THROTTLE = "throttle";
private static final String ARG_AGENTS = "agents";
Expand Down Expand Up @@ -160,6 +161,7 @@ public ProcessArgs(MetaDataMap map) throws WorkflowException {
}
replicationOptions.setSynchronous(Boolean.parseBoolean(data.get(ARG_REPLICATION_SYNCHRONOUS)));
replicationOptions.setSuppressVersions(Boolean.parseBoolean(data.get(ARG_REPLICATION_SUPPRESS_VERSIONS)));
replicationOptions.setSuppressStatusUpdate(Boolean.parseBoolean(data.get(ARG_REPLICATION_SUPPRESS_STATUS_UPDATE)));

agents = Arrays.asList(StringUtils.split(data.get(ARG_AGENTS), ","));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,57 @@ public void testExecuteBrandPortal() throws Exception {
verifyNoInteractions(throttledTaskRunner);
}

@Test
public void testExecuteDeactivateWithSupressStatusUpdate() throws Exception {
when(workflowPackageManager.getPaths(context.resourceResolver(), "/content/payload"))
.thenReturn(Arrays.asList("/content/page", "/content/asset"));

StringBuilder args = new StringBuilder();
args.append("replicationActionType=Deactivate");
args.append(System.lineSeparator());
args.append("agents=agent1");
args.append(System.lineSeparator());
args.append("suppressStatusUpdate=true");

when(metaDataMap.get(WorkflowHelper.PROCESS_ARGS, "")).thenReturn(args.toString());
process.execute(workItem, workflowSession, metaDataMap);

ReplicationOptionsMatcher optionsMatcher = new ReplicationOptionsMatcher().withSuppressStatusUpdate(true);

verify(replicator).replicate(any(), eq(ReplicationActionType.DEACTIVATE), eq("/content/page"), argThat(optionsMatcher));
verify(replicator).replicate(any(), eq(ReplicationActionType.DEACTIVATE), eq("/content/asset"), argThat(optionsMatcher));
verifyNoMoreInteractions(replicator);
verifyNoInteractions(throttledTaskRunner);
}

@Test
public void testExecuteDeactivateWithSupressStatusUpdateFalse() throws Exception {
when(workflowPackageManager.getPaths(context.resourceResolver(), "/content/payload"))
.thenReturn(Arrays.asList("/content/page", "/content/asset"));

StringBuilder args = new StringBuilder();
args.append("replicationActionType=Deactivate");
args.append(System.lineSeparator());
args.append("agents=agent1");
args.append(System.lineSeparator());
args.append("suppressStatusUpdate=false");

when(metaDataMap.get(WorkflowHelper.PROCESS_ARGS, "")).thenReturn(args.toString());
process.execute(workItem, workflowSession, metaDataMap);

ReplicationOptionsMatcher optionsMatcher = new ReplicationOptionsMatcher().withSuppressStatusUpdate(false);

verify(replicator).replicate(any(), eq(ReplicationActionType.DEACTIVATE), eq("/content/page"), argThat(optionsMatcher));
verify(replicator).replicate(any(), eq(ReplicationActionType.DEACTIVATE), eq("/content/asset"), argThat(optionsMatcher));
verifyNoMoreInteractions(replicator);
verifyNoInteractions(throttledTaskRunner);
}

private static class ReplicationOptionsMatcher implements ArgumentMatcher<ReplicationOptions> {

private String filterAgentId;
private boolean brandPortalFilter;
private boolean suppressStatusUpdate;

public ReplicationOptionsMatcher withAgentIdFilter(String filterAgentId) {
this.filterAgentId = filterAgentId;
Expand All @@ -215,6 +262,11 @@ public ReplicationOptionsMatcher withBrandPortalFilter() {
return this;
}

public ReplicationOptionsMatcher withSuppressStatusUpdate(boolean suppressStatusUpdate) {
this.suppressStatusUpdate = suppressStatusUpdate;
return this;
}

@Override
public boolean matches(ReplicationOptions argument) {
ReplicationOptions options = (ReplicationOptions) argument;
Expand All @@ -227,6 +279,9 @@ public boolean matches(ReplicationOptions argument) {
if (brandPortalFilter) {
matches = matches && options.getFilter() instanceof BrandPortalAgentFilter;
}
if (suppressStatusUpdate) {
matches = matches && options.isSuppressStatusUpdate();
}
return matches;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,14 @@
jcr:primaryType="nt:unstructured"
sling:resourceType="acs-commons/components/workflow/select-agent/datasource"/>
</agentToUse>
<suppressStatusUpdate
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/checkbox"
fieldDescription="Check to suppress replication status updates"
fieldLabel="Suppress Status Update"
name="./metaData/suppressStatusUpdate"
text="Suppress Status Update"
value="true"/>
</items>
</arguments>
</items>
Expand Down
Loading