Replication Service transfer report tracking

Make the transfer service report available through the replication service, and add unit tests to show that it turns up as expected


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21441 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Nick Burch
2010-07-27 15:25:54 +00:00
parent 91aa8759f5
commit 3ffb67e824
2 changed files with 28 additions and 1 deletions

View File

@@ -182,6 +182,9 @@ public class ReplicationActionExecutor extends ActionExecuterAbstractBase {
throw new ReplicationServiceException("Unable to execute a disabled replication definition"); throw new ReplicationServiceException("Unable to execute a disabled replication definition");
} }
// Clear the previous transfer report reference
replicationDef.setLocalTransferReport(null);
// Lock the service - only one instance of the replication // Lock the service - only one instance of the replication
// should occur at a time // should occur at a time
ReplicationDefinitionLockExtender lock = ReplicationDefinitionLockExtender lock =
@@ -205,11 +208,14 @@ public class ReplicationActionExecutor extends ActionExecuterAbstractBase {
buildTransferDefinition(replicationDef, toTransfer); buildTransferDefinition(replicationDef, toTransfer);
// Off we go // Off we go
transferService.transfer( NodeRef transferReport = transferService.transfer(
replicationDef.getTargetName(), replicationDef.getTargetName(),
transferDefinition, transferDefinition,
lock lock
); );
// Record the details of the transfer report
replicationDef.setLocalTransferReport(transferReport);
} catch(Exception e) { } catch(Exception e) {
if(! (e instanceof TransferCancelledException)) if(! (e instanceof TransferCancelledException))
{ {

View File

@@ -46,6 +46,7 @@ import org.alfresco.service.cmr.replication.ReplicationDefinition;
import org.alfresco.service.cmr.replication.ReplicationService; import org.alfresco.service.cmr.replication.ReplicationService;
import org.alfresco.service.cmr.replication.ReplicationServiceException; import org.alfresco.service.cmr.replication.ReplicationServiceException;
import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
@@ -79,6 +80,7 @@ public class ReplicationServiceIntegrationTest extends TestCase
private ReplicationService replicationService; private ReplicationService replicationService;
private TransactionService transactionService; private TransactionService transactionService;
private TransferService transferService; private TransferService transferService;
private ContentService contentService;
private JobLockService jobLockService; private JobLockService jobLockService;
private ActionService actionService; private ActionService actionService;
private NodeService nodeService; private NodeService nodeService;
@@ -114,6 +116,7 @@ public class ReplicationServiceIntegrationTest extends TestCase
replicationService = (ReplicationService) ctx.getBean("replicationService"); replicationService = (ReplicationService) ctx.getBean("replicationService");
transactionService = (TransactionService) ctx.getBean("transactionService"); transactionService = (TransactionService) ctx.getBean("transactionService");
transferService = (TransferService) ctx.getBean("transferService"); transferService = (TransferService) ctx.getBean("transferService");
contentService = (ContentService) ctx.getBean("contentService");
jobLockService = (JobLockService) ctx.getBean("jobLockService"); jobLockService = (JobLockService) ctx.getBean("jobLockService");
actionService = (ActionService) ctx.getBean("actionService"); actionService = (ActionService) ctx.getBean("actionService");
nodeService = (NodeService) ctx.getBean("nodeService"); nodeService = (NodeService) ctx.getBean("nodeService");
@@ -662,6 +665,8 @@ public class ReplicationServiceIntegrationTest extends TestCase
rd.getPayload().add(folder1); rd.getPayload().add(folder1);
rd.getPayload().add(folder2a); rd.getPayload().add(folder2a);
assertEquals(null, rd.getLocalTransferReport());
txn = transactionService.getUserTransaction(); txn = transactionService.getUserTransaction();
txn.begin(); txn.begin();
actionService.executeAction(rd, replicationRoot); actionService.executeAction(rd, replicationRoot);
@@ -732,6 +737,22 @@ public class ReplicationServiceIntegrationTest extends TestCase
fail("Found zone as " + r.getChildRef() + " but it shouldn't be transfered!"); fail("Found zone as " + r.getChildRef() + " but it shouldn't be transfered!");
} }
} }
// Check we got a transfer report, and it looks sensible
NodeRef transferReport = rd.getLocalTransferReport();
assertNotNull(transferReport);
txn = transactionService.getUserTransaction();
txn.begin();
ContentReader transferReader =
contentService.getReader(transferReport, ContentModel.PROP_CONTENT);
String report = transferReader.getContentString();
assertTrue("XML not found in:\n" + report, report.contains("<?xml"));
assertTrue("Report XML not found in:\n" + report, report.contains("<report:transferReport"));
txn.commit();
} }
/** /**