From e92b629f757455d7bd70c14295f23fab2239642c Mon Sep 17 00:00:00 2001 From: Ryan Morgan Date: Fri, 25 Sep 2009 08:51:14 -0700 Subject: [PATCH] Handle duplicate name errors in Application creation. --- hqu/hqapi1/app/ApplicationController.groovy | 9 ++++++++- .../hqapi1/test/ApplicationCreate_test.java | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/hqu/hqapi1/app/ApplicationController.groovy b/hqu/hqapi1/app/ApplicationController.groovy index db2856d2..723280e0 100644 --- a/hqu/hqapi1/app/ApplicationController.groovy +++ b/hqu/hqapi1/app/ApplicationController.groovy @@ -9,6 +9,7 @@ import org.hyperic.hq.appdef.shared.ApplicationValue import org.hyperic.hq.appdef.shared.ServiceValue import org.hyperic.dao.DAOFactory import org.hyperic.hq.appdef.server.session.AppServiceDAO +import org.hyperic.hq.appdef.shared.AppdefDuplicateNameException; class ApplicationController extends ApiController { @@ -105,7 +106,13 @@ class ApplicationController extends ApiController { applicationValue.applicationType = appMan.findApplicationType(1) newApp = appMan.createApplication( user, applicationValue, new ArrayList()) // Initialize appServices to avoid NPE - newApp.appServices = new ArrayList() + newApp.appServices = new ArrayList() + } catch (AppdefDuplicateNameException e) { + renderXml() { + ApplicationResponse() { + out << getFailureXML(ErrorCode.OBJECT_EXISTS) + } + } } catch (Exception e) { renderXml() { log.error("Error creating application", e) diff --git a/src/org/hyperic/hq/hqapi1/test/ApplicationCreate_test.java b/src/org/hyperic/hq/hqapi1/test/ApplicationCreate_test.java index a889d254..5b305617 100644 --- a/src/org/hyperic/hq/hqapi1/test/ApplicationCreate_test.java +++ b/src/org/hyperic/hq/hqapi1/test/ApplicationCreate_test.java @@ -75,4 +75,23 @@ public void testApplicationCreateWithPlatforms() throws Exception { ApplicationResponse response = appApi.createApplication(a); hqAssertFailureInvalidParameters(response); // Invalid - cannot have servers } + + public void testApplicationCreateDuplicateName() throws Exception { + + HQApi api = getApi(); + ApplicationApi appApi = api.getApplicationApi(); + + Application a = generateTestApplication(); + + ApplicationResponse createResponse = appApi.createApplication(a); + hqAssertSuccess(createResponse); + + // Attempt to create it again + ApplicationResponse dupResponse = appApi.createApplication(a); + hqAssertFailureObjectExists(dupResponse); + + StatusResponse deleteResponse = + appApi.deleteApplication(createResponse.getApplication().getId()); + hqAssertSuccess(deleteResponse); + } }