From commits-return-5589-apmail-continuum-commits-archive=continuum.apache.org@continuum.apache.org Wed Jul 15 13:37:09 2009 Return-Path: Delivered-To: apmail-continuum-commits-archive@www.apache.org Received: (qmail 4878 invoked from network); 15 Jul 2009 13:37:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 15 Jul 2009 13:37:08 -0000 Received: (qmail 71125 invoked by uid 500); 15 Jul 2009 13:37:18 -0000 Delivered-To: apmail-continuum-commits-archive@continuum.apache.org Received: (qmail 71092 invoked by uid 500); 15 Jul 2009 13:37:18 -0000 Mailing-List: contact commits-help@continuum.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@continuum.apache.org Delivered-To: mailing list commits@continuum.apache.org Received: (qmail 71083 invoked by uid 99); 15 Jul 2009 13:37:18 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 Jul 2009 13:37:18 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 Jul 2009 13:37:14 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 82F392388908; Wed, 15 Jul 2009 13:36:53 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r794267 - in /continuum/trunk: continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/ continuum-core/src/test/java/org/apache/maven/continuum/builddefinition/ continuum-webapp/src/main/java/org/apache/maven/continuum/web/a... Date: Wed, 15 Jul 2009 13:36:53 -0000 To: commits@continuum.apache.org From: jzurbano@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090715133653.82F392388908@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jzurbano Date: Wed Jul 15 13:36:52 2009 New Revision: 794267 URL: http://svn.apache.org/viewvc?rev=794267&view=rev Log: [CONTINUUM-1755] - Duplicate build definition template name is allowed. merge r 794265:794266 from 1.3.x branch Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionServiceTest.java continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.java continuum/trunk/continuum-webapp/src/main/resources/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.properties Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java?rev=794267&r1=794266&r2=794267&view=diff ============================================================================== --- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java (original) +++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java Wed Jul 15 13:36:52 2009 @@ -491,15 +491,20 @@ { try { - BuildDefinitionTemplate stored = getBuildDefinitionTemplate( buildDefinitionTemplate.getId() ); - stored.setName( buildDefinitionTemplate.getName() ); - stored.setBuildDefinitions( buildDefinitionTemplate.getBuildDefinitions() ); - return buildDefinitionTemplateDao.updateBuildDefinitionTemplate( stored ); + if ( !hasDuplicateTemplateName( buildDefinitionTemplate ) ) + { + BuildDefinitionTemplate stored = getBuildDefinitionTemplate( buildDefinitionTemplate.getId() ); + stored.setName( buildDefinitionTemplate.getName() ); + stored.setBuildDefinitions( buildDefinitionTemplate.getBuildDefinitions() ); + return buildDefinitionTemplateDao.updateBuildDefinitionTemplate( stored ); + } } catch ( ContinuumStoreException e ) { throw new BuildDefinitionServiceException( e.getMessage(), e ); } + + return null; } public BuildDefinitionTemplate addBuildDefinitionTemplate( BuildDefinitionTemplate buildDefinitionTemplate ) @@ -507,12 +512,17 @@ { try { - return buildDefinitionTemplateDao.addBuildDefinitionTemplate( buildDefinitionTemplate ); + if ( !hasDuplicateTemplateName( buildDefinitionTemplate ) ) + { + return buildDefinitionTemplateDao.addBuildDefinitionTemplate( buildDefinitionTemplate ); + } } catch ( ContinuumStoreException e ) { throw new BuildDefinitionServiceException( e.getMessage(), e ); } + + return null; } public BuildDefinitionTemplate addBuildDefinitionInTemplate( BuildDefinitionTemplate buildDefinitionTemplate, @@ -647,4 +657,22 @@ throw new BuildDefinitionServiceException( e.getMessage(), e ); } } + + private boolean hasDuplicateTemplateName( BuildDefinitionTemplate buildDefinitionTemplate ) + throws BuildDefinitionServiceException + { + boolean isDuplicate = false; + List allBuildDefinitionTemplate = this.getAllBuildDefinitionTemplate(); + + for ( BuildDefinitionTemplate template : allBuildDefinitionTemplate ) + { + String name = buildDefinitionTemplate.getName(); + if ( ( template.getId() != buildDefinitionTemplate.getId() ) && ( template.getName().equals( name ) ) ) + { + isDuplicate = true; + break; + } + } + return isDuplicate; + } } Modified: continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionServiceTest.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionServiceTest.java?rev=794267&r1=794266&r2=794267&view=diff ============================================================================== --- continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionServiceTest.java (original) +++ continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionServiceTest.java Wed Jul 15 13:36:52 2009 @@ -144,12 +144,12 @@ throws Exception { BuildDefinitionTemplate template = new BuildDefinitionTemplate(); - template.setName( "test" ); + template.setName( "testTemplate" ); template = getBuildDefinitionService().addBuildDefinitionTemplate( template ); template = getBuildDefinitionService().getBuildDefinitionTemplate( template.getId() ); assertNotNull( template ); - assertEquals( "test", template.getName() ); + assertEquals( "testTemplate", template.getName() ); List all = getBuildDefinitionService().getAllBuildDefinitions(); assertEquals( 5, all.size() ); BuildDefinition bd = @@ -168,4 +168,14 @@ assertEquals( 5, all.size() ); } + + public void testAddDuplicateBuildDefinitionTemplate() + throws Exception + { + BuildDefinitionTemplate template = new BuildDefinitionTemplate(); + template.setName( "test" ); + + template = getBuildDefinitionService().addBuildDefinitionTemplate( template ); + assertNull( template ); + } } Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.java?rev=794267&r1=794266&r2=794267&view=diff ============================================================================== --- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.java (original) +++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.java Wed Jul 15 13:36:52 2009 @@ -150,6 +150,8 @@ { List selectedBuildDefinitions = getBuildDefinitionsFromSelectedBuildDefinitions(); + BuildDefinitionTemplate result; + AuditLog event = new AuditLog( buildDefinitionTemplate.getName(), AuditLogConstants.ADD_TEMPLATE ); event.setCategory( AuditLogConstants.TEMPLATE ); event.setCurrentUser( getPrincipal() ); @@ -157,15 +159,24 @@ if ( this.buildDefinitionTemplate.getId() > 0 ) { buildDefinitionTemplate.setBuildDefinitions( selectedBuildDefinitions ); - this.getContinuum().getBuildDefinitionService().updateBuildDefinitionTemplate( buildDefinitionTemplate ); + result = this.getContinuum().getBuildDefinitionService().updateBuildDefinitionTemplate( buildDefinitionTemplate ); event.setAction( AuditLogConstants.MODIFY_TEMPLATE ); - event.log(); } else { buildDefinitionTemplate.setBuildDefinitions( selectedBuildDefinitions ); this.buildDefinitionTemplate = this.getContinuum().getBuildDefinitionService().addBuildDefinitionTemplate( buildDefinitionTemplate ); + result = this.buildDefinitionTemplate; + } + + if ( result == null ) + { + addActionError( getText( "buildDefintionTemplate.name.exists" ) ); + return INPUT; + } + else + { event.log(); } Modified: continuum/trunk/continuum-webapp/src/main/resources/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.properties URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/resources/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.properties?rev=794267&r1=794266&r2=794267&view=diff ============================================================================== --- continuum/trunk/continuum-webapp/src/main/resources/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.properties (original) +++ continuum/trunk/continuum-webapp/src/main/resources/org/apache/maven/continuum/web/action/admin/BuildDefinitionTemplateAction.properties Wed Jul 15 13:36:52 2009 @@ -16,6 +16,7 @@ # specific language governing permissions and limitations # under the License. # +buildDefintionTemplate.name.exists = Name already exists buildDefintionTemplate.name.required = Name is required buildDefintion.buildFile.required = BuildFile is required -buildDefintion.description.required = Description is required \ No newline at end of file +buildDefintion.description.required = Description is required