ALF-4713 - It is possible to transfer content to the not enabled transfer target

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@22452 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mark Rogers
2010-09-13 13:26:40 +00:00
parent 1386e9f4b4
commit b20bac870c
3 changed files with 52 additions and 10 deletions

View File

@@ -9,6 +9,7 @@ transfer_service.comms.unsupported_protocol=Unsupported protocol: {0}
transfer_service.comms.unsuccessful_response=Received unsuccessful response code from target server: {0}, {1} transfer_service.comms.unsuccessful_response=Received unsuccessful response code from target server: {0}, {1}
transfer_service.comms.http_request_failed=Failed to execute HTTP request {0} to target: {1} status: {2} transfer_service.comms.http_request_failed=Failed to execute HTTP request {0} to target: {1} status: {2}
transfer_service.no_nodes=No nodes to transfer transfer_service.no_nodes=No nodes to transfer
transfer_service.target_not_enabled=Transfer target not enabled {0}
transfer_service.cancelled=Transfer cancelled transfer_service.cancelled=Transfer cancelled
transfer_service.failed_to_get_transfer_status=Failed to retrieve transfer status from target {0} transfer_service.failed_to_get_transfer_status=Failed to retrieve transfer status from target {0}
transfer_service.target_error=Transfer target failed with {0} transfer_service.target_error=Transfer target failed with {0}

View File

@@ -123,6 +123,7 @@ public class TransferServiceImpl2 implements TransferService2
private static final String MSG_FAILED_TO_GET_TRANSFER_STATUS = "transfer_service.failed_to_get_transfer_status"; private static final String MSG_FAILED_TO_GET_TRANSFER_STATUS = "transfer_service.failed_to_get_transfer_status";
private static final String MSG_TARGET_ERROR = "transfer_service.target_error"; private static final String MSG_TARGET_ERROR = "transfer_service.target_error";
private static final String MSG_UNKNOWN_TARGET_ERROR = "transfer_service.unknown_target_error"; private static final String MSG_UNKNOWN_TARGET_ERROR = "transfer_service.unknown_target_error";
private static final String MSG_TARGET_NOT_ENABLED = "transfer_service.target_not_enabled";
private static final String FILE_DIRECTORY = "transfer"; private static final String FILE_DIRECTORY = "transfer";
private static final String FILE_SUFFIX = ".xml"; private static final String FILE_SUFFIX = ".xml";
@@ -574,6 +575,7 @@ public class TransferServiceImpl2 implements TransferService2
manifest = createManifest(definition); manifest = createManifest(definition);
logger.debug("transfer begin"); logger.debug("transfer begin");
target = getTransferTarget(targetName); target = getTransferTarget(targetName);
checkTargetEnabled(target);
transfer = transmitter.begin(target); transfer = transmitter.begin(target);
String transferId = transfer.getTransferId(); String transferId = transfer.getTransferId();
TransferStatus status = new TransferStatus(); TransferStatus status = new TransferStatus();
@@ -662,6 +664,7 @@ public class TransferServiceImpl2 implements TransferService2
if (progress.getCurrentPosition() != pollPosition) if (progress.getCurrentPosition() != pollPosition)
{ {
pollPosition = progress.getCurrentPosition(); pollPosition = progress.getCurrentPosition();
logger.debug("committing :" + pollPosition);
eventProcessor.committing(progress.getEndPosition(), pollPosition); eventProcessor.committing(progress.getEndPosition(), pollPosition);
} }
@@ -772,11 +775,14 @@ public class TransferServiceImpl2 implements TransferService2
try try
{ {
logger.debug("now pull back the destination transfer report"); if(transfer != null)
destinationReport = persistDestinationTransferReport(reportName, transfer, target);
if (destinationReport != null)
{ {
eventProcessor.writeReport(destinationReport, TransferEventReport.ReportType.DESTINATION, endEventImpl.getTransferState()); logger.debug("now pull back the destination transfer report");
destinationReport = persistDestinationTransferReport(reportName, transfer, target);
if (destinationReport != null)
{
eventProcessor.writeReport(destinationReport, TransferEventReport.ReportType.DESTINATION, endEventImpl.getTransferState());
}
} }
logger.debug("now persist the client side transfer report"); logger.debug("now persist the client side transfer report");
@@ -1062,6 +1068,15 @@ public class TransferServiceImpl2 implements TransferService2
} }
} }
} }
private void checkTargetEnabled(TransferTarget target) throws TransferException
{
if(!target.isEnabled())
{
logger.debug("target is not enabled");
throw new TransferException(MSG_TARGET_NOT_ENABLED, new Object[] {target.getName()});
}
}
public void setNodeService(NodeService nodeService) public void setNodeService(NodeService nodeService)
{ {
@@ -1232,6 +1247,11 @@ public class TransferServiceImpl2 implements TransferService2
{ {
def.setEnabled((Boolean)properties.get(TransferModel.PROP_ENABLED)); def.setEnabled((Boolean)properties.get(TransferModel.PROP_ENABLED));
} }
else
{
// If the enableable aspect is not present then we don't want transfer failing.
def.setEnabled(Boolean.TRUE);
}
} }
/* (non-Javadoc) /* (non-Javadoc)
@@ -1408,8 +1428,5 @@ public class TransferServiceImpl2 implements TransferService2
boolean cancelMe = false; boolean cancelMe = false;
boolean cancelInProgress = false; boolean cancelInProgress = false;
} }
} }

View File

@@ -623,6 +623,9 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
* Step 6: Negative test : transfer no nodes * Step 6: Negative test : transfer no nodes
* transfer (should throw exception) * transfer (should throw exception)
* *
* Step 7: Negative test : transfer to a disabled transfer target
* transfer (should throw exception)
*
* This is a unit test so it does some shenanigans to send to the same instance of alfresco. * This is a unit test so it does some shenanigans to send to the same instance of alfresco.
*/ */
public void testTransferOneNode() throws Exception public void testTransferOneNode() throws Exception
@@ -689,6 +692,7 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
{ {
transferMe = transferService.getTransferTarget(targetName); transferMe = transferService.getTransferTarget(targetName);
} }
transferService.enableTransferTarget(targetName, true);
} }
finally finally
{ {
@@ -905,7 +909,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
endTransaction(); endTransaction();
} }
/** /**
* Step 6 * Step 6
* Negative test transfer nothing * Negative test transfer nothing
@@ -921,7 +924,28 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
{ {
// expect to go here // expect to go here
} }
/**
* Step 7: Negative test : transfer to a disabled transfer target
* transfer (should throw exception)
*/
logger.debug("Transfer again - with no content - should throw exception");
try
{
transferService.enableTransferTarget(targetName, false);
TransferDefinition definition = new TransferDefinition();
Set<NodeRef>nodes = new HashSet<NodeRef>();
nodes.add(deletedContentNodeRef);
definition.setNodes(nodes);
transferService.transfer(targetName, definition);
fail("target not enabled exception not thrown");
}
catch(TransferException te)
{
// expect to go here
assertTrue("check contents of exception message", te.getCause().getMessage().contains("enabled"));
}
} }
/** /**