diff --git a/source/java/org/alfresco/repo/web/scripts/replication/ReplicationDefinitionsPost.java b/source/java/org/alfresco/repo/web/scripts/replication/ReplicationDefinitionsPost.java index ea8ac3d41b..266be95845 100644 --- a/source/java/org/alfresco/repo/web/scripts/replication/ReplicationDefinitionsPost.java +++ b/source/java/org/alfresco/repo/web/scripts/replication/ReplicationDefinitionsPost.java @@ -55,9 +55,16 @@ public class ReplicationDefinitionsPost extends AbstractReplicationWebscript if(! json.has("description")) throw new WebScriptException(Status.STATUS_BAD_REQUEST, "description is required but wasn't supplied"); - // Create + // Ensure one doesn't already exist with that name + String name = json.getString("name"); + if(replicationService.loadReplicationDefinition(name) != null) + { + throw new WebScriptException(Status.STATUS_BAD_REQUEST, "A replication definition already exists with that name"); + } + + // Create the definition replicationDefinition = replicationService.createReplicationDefinition( - json.getString("name"), json.getString("description") + name, json.getString("description") ); // Set the extra parts diff --git a/source/java/org/alfresco/repo/web/scripts/replication/ReplicationRestApiTest.java b/source/java/org/alfresco/repo/web/scripts/replication/ReplicationRestApiTest.java index 10e58c7459..9f35937c28 100644 --- a/source/java/org/alfresco/repo/web/scripts/replication/ReplicationRestApiTest.java +++ b/source/java/org/alfresco/repo/web/scripts/replication/ReplicationRestApiTest.java @@ -818,9 +818,25 @@ public class ReplicationRestApiTest extends BaseWebScriptTest // Ensure we can't create with a duplicate name json = new JSONObject(); json.put("name", "Test"); + json.put("description", "New Duplicate"); + json.put("targetName", "New Duplicate Target"); response = sendRequest(new PostRequest(URL_DEFINITIONS, json.toString(), JSON), Status.STATUS_BAD_REQUEST); assertEquals(Status.STATUS_BAD_REQUEST, response.getStatus()); + + // Ensure that even though we got BAD REQUEST back, nothing changed + rd = replicationService.loadReplicationDefinition("New Definition"); + assertEquals("New Definition", rd.getReplicationName()); + assertEquals("Testing", rd.getDescription()); + assertEquals(ActionStatus.New, rd.getExecutionStatus()); + assertEquals(null, rd.getExecutionStartDate()); + assertEquals(null, rd.getExecutionEndDate()); + assertEquals(null, rd.getExecutionFailureMessage()); + assertEquals(null, rd.getLocalTransferReport()); + assertEquals(null, rd.getRemoteTransferReport()); + assertEquals(null, rd.getTargetName()); + assertEquals(0, rd.getPayload().size()); + assertEquals(true, rd.isEnabled()); } public void testReplicationDefinitionPut() throws Exception