Index: continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java =================================================================== --- continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java (revision 697686) +++ continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java (working copy) @@ -483,10 +483,17 @@ { 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 ); + } + else + { + return null; + } } catch ( ContinuumStoreException e ) { @@ -499,7 +506,14 @@ { try { - return buildDefinitionTemplateDao.addBuildDefinitionTemplate( buildDefinitionTemplate ); + if ( !hasDuplicateTemplateName( buildDefinitionTemplate ) ) + { + return buildDefinitionTemplateDao.addBuildDefinitionTemplate( buildDefinitionTemplate ); + } + else + { + return null; + } } catch ( ContinuumStoreException e ) { @@ -640,4 +654,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; + } }