use of com.day.cq.replication.ReplicationActionType in project acs-aem-commons by Adobe-Consulting-Services.
the class DispatcherFlusherImplTest method testFlush_2.
@Test
public void testFlush_2() throws Exception {
final ResourceResolver resourceResolver = mock(ResourceResolver.class);
final Session session = mock(Session.class);
when(resourceResolver.adaptTo(Session.class)).thenReturn(session);
final ReplicationActionType actionType = ReplicationActionType.DELETE;
final boolean synchronous = false;
final String path1 = "/content/foo";
final String path2 = "/content/bar";
dispatcherFlusher.flush(resourceResolver, actionType, synchronous, path1, path2);
verify(replicator, times(1)).replicate(eq(session), eq(actionType), eq(path1), any(ReplicationOptions.class));
verify(replicator, times(1)).replicate(eq(session), eq(actionType), eq(path2), any(ReplicationOptions.class));
verifyNoMoreInteractions(replicator);
}
use of com.day.cq.replication.ReplicationActionType in project acs-aem-commons by Adobe-Consulting-Services.
the class DispatcherFlushRulesImplTest method testConfigureReplicationActionType_DEACTIVATE.
@Test
public void testConfigureReplicationActionType_DEACTIVATE() throws Exception {
final ReplicationActionType expected = ReplicationActionType.DEACTIVATE;
final ReplicationActionType actual = dispatcherFlushRules.configureReplicationActionType("DEACTIVATE");
assertEquals(expected, actual);
}
use of com.day.cq.replication.ReplicationActionType in project acs-aem-commons by Adobe-Consulting-Services.
the class DispatcherFlushRulesImplTest method testConfigureReplicationActionType_ACTIVATE.
@Test
public void testConfigureReplicationActionType_ACTIVATE() throws Exception {
final ReplicationActionType expected = ReplicationActionType.ACTIVATE;
final ReplicationActionType actual = dispatcherFlushRules.configureReplicationActionType("ACTIVATE");
assertEquals(expected, actual);
}
use of com.day.cq.replication.ReplicationActionType in project acs-aem-commons by Adobe-Consulting-Services.
the class PageRelocator method performNecessaryReplication.
private void performNecessaryReplication(ResourceResolver rr, String path) throws ReplicationException {
ReplicationActionType action;
if (path.startsWith(sourcePath)) {
action = ReplicationActionType.DEACTIVATE;
} else {
action = ReplicationActionType.ACTIVATE;
}
long start = System.currentTimeMillis();
if (!dryRun) {
replicator.replicate(rr.adaptTo(Session.class), action, path);
}
long end = System.currentTimeMillis();
if (path.startsWith(sourcePath)) {
note(path, Report.deactivate_time, end - start);
} else {
note(reversePathLookup(path), Report.activate_time, end - start);
}
}
use of com.day.cq.replication.ReplicationActionType in project acs-aem-commons by Adobe-Consulting-Services.
the class DispatcherFlusherServlet method doPost.
@Override
@SuppressWarnings("squid:S3776")
protected final void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
final Resource resource = request.getResource();
final ResourceResolver resourceResolver = request.getResourceResolver();
final PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
final Page currentPage = pageManager.getContainingPage(resource);
final ValueMap properties = resource.getValueMap();
/* Properties */
final String[] paths = properties.get("paths", new String[0]);
final ReplicationActionType replicationActionType = ReplicationActionType.valueOf(properties.get("replicationActionType", ReplicationActionType.ACTIVATE.name()));
final List<FlushResult> overallResults = new ArrayList<FlushResult>();
boolean caughtException = false;
ResourceResolver flushingResourceResolver = null;
try {
if (paths.length > 0) {
if (flushWithAdminResourceResolver) {
// Use the admin resource resolver for replication to ensure all
// replication permission checks are OK
// Make sure to close this resource resolver
flushingResourceResolver = resourceResolverFactory.getServiceResourceResolver(AUTH_INFO);
} else {
// Use the HTTP Request's resource resolver; don't close this resource resolver
flushingResourceResolver = resourceResolver;
}
final Map<Agent, ReplicationResult> results = dispatcherFlusher.flush(flushingResourceResolver, replicationActionType, true, paths);
for (final Map.Entry<Agent, ReplicationResult> entry : results.entrySet()) {
final Agent agent = entry.getKey();
final ReplicationResult result = entry.getValue();
overallResults.add(new FlushResult(agent, result));
}
}
} catch (ReplicationException e) {
log.error("Replication exception occurred during Dispatcher Flush request.", e);
caughtException = true;
} catch (LoginException e) {
log.error("Could not obtain an Admin Resource Resolver during Dispatcher Flush request.", e);
caughtException = true;
} finally {
if (flushWithAdminResourceResolver && flushingResourceResolver != null) {
// Close the admin resource resolver if opened by this servlet
flushingResourceResolver.close();
}
}
if (request.getRequestPathInfo().getExtension().equals("json")) {
response.setContentType("application/json");
JSONWriter writer = new JSONWriter(response.getWriter());
try {
writer.object();
for (final FlushResult result : overallResults) {
writer.key(result.agentId);
writer.value(result.success);
}
writer.endObject();
} catch (JSONException e) {
throw new ServletException("Unable to output JSON data", e);
}
} else {
String suffix;
if (caughtException) {
suffix = "replication-error";
} else {
suffix = StringUtils.join(overallResults, '/');
}
response.sendRedirect(request.getContextPath() + currentPage.getPath() + ".html/" + suffix);
}
}
Aggregations