]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4463 Added binding in internal rb class for new permission template operations
authorJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Fri, 5 Jul 2013 09:22:15 +0000 (11:22 +0200)
committerJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Fri, 5 Jul 2013 09:22:15 +0000 (11:22 +0200)
sonar-core/src/main/java/org/sonar/core/user/PermissionDao.java
sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionTemplateService.java
sonar-server/src/main/java/org/sonar/server/platform/Platform.java
sonar-server/src/main/webapp/WEB-INF/app/models/internal.rb
sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionTemplateServiceTest.java

index ed8967b29593186d533db65c74050d542423eaa2..9f99630b65f408c6cf09dffa6ea0afa1cf457f48 100644 (file)
@@ -65,6 +65,7 @@ public class PermissionDao implements TaskExtension, ServerExtension {
     return permissionTemplate;
   }
 
+  @CheckForNull
   public List<PermissionTemplateDto> selectAllPermissionTemplates() {
     SqlSession session = myBatis.openSession();
     try {
index e996b13403c2b4b99d30217a04c795215de7e86d..7be63ada0cfac378da029686dfd9f60ffe5833f3 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.sonar.server.permission;
 
+import com.google.common.collect.Lists;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.sonar.api.ServerComponent;
@@ -45,11 +46,30 @@ public class InternalPermissionTemplateService implements ServerComponent {
     this.userDao = userDao;
   }
 
+  @CheckForNull
+  public PermissionTemplate selectPermissionTemplate(String templateName) {
+    PermissionTemplateUpdater.checkUserCredentials();
+    PermissionTemplateDto permissionTemplateDto = permissionDao.selectPermissionTemplate(templateName);
+    return PermissionTemplate.create(permissionTemplateDto);
+  }
+
+  public List<PermissionTemplate> selectAllPermissionTemplates() {
+    PermissionTemplateUpdater.checkUserCredentials();
+    List<PermissionTemplate> permissionTemplates = Lists.newArrayList();
+    List<PermissionTemplateDto> permissionTemplateDtos = permissionDao.selectAllPermissionTemplates();
+    if(permissionTemplateDtos != null) {
+      for (PermissionTemplateDto permissionTemplateDto : permissionTemplateDtos) {
+        permissionTemplates.add(PermissionTemplate.create(permissionTemplateDto));
+      }
+    }
+    return permissionTemplates;
+  }
+
   public PermissionTemplate createPermissionTemplate(String name, String description) {
     PermissionTemplateUpdater.checkUserCredentials();
-    PermissionTemplateDto permissionTemplateDto = permissionDao.createPermissionTemplate(name, description);
     checkThatTemplateNameIsUnique(name);
-    if(permissionTemplateDto == null) {
+    PermissionTemplateDto permissionTemplateDto = permissionDao.createPermissionTemplate(name, description);
+    if(permissionTemplateDto.getId() == null) {
       String errorMsg = "Template creation failed";
       LOG.error(errorMsg);
       throw new ServerErrorException(errorMsg);
@@ -57,13 +77,6 @@ public class InternalPermissionTemplateService implements ServerComponent {
     return PermissionTemplate.create(permissionTemplateDto);
   }
 
-  @CheckForNull
-  public PermissionTemplate selectPermissionTemplate(String templateName) {
-    PermissionTemplateUpdater.checkUserCredentials();
-    PermissionTemplateDto permissionTemplateDto = permissionDao.selectPermissionTemplate(templateName);
-    return PermissionTemplate.create(permissionTemplateDto);
-  }
-
   public void deletePermissionTemplate(String templateName) {
     PermissionTemplateUpdater.checkUserCredentials();
     PermissionTemplateDto permissionTemplateDto = permissionDao.selectTemplateByName(templateName);
index 2d7014b3728ea118e223d2f15a0a34a0209d680c..be04a975fb38c53ed2bf10858f9be9354ee4d43d 100644 (file)
@@ -78,6 +78,7 @@ import org.sonar.server.issue.*;
 import org.sonar.server.notifications.NotificationCenter;
 import org.sonar.server.notifications.NotificationService;
 import org.sonar.server.permission.InternalPermissionService;
+import org.sonar.server.permission.InternalPermissionTemplateService;
 import org.sonar.server.plugins.*;
 import org.sonar.server.qualitymodel.DefaultModelManager;
 import org.sonar.server.rule.RubyRuleService;
@@ -257,6 +258,7 @@ public final class Platform {
     servicesContainer.addSingleton(DefaultUserFinder.class);
     servicesContainer.addSingleton(DefaultUserService.class);
     servicesContainer.addSingleton(InternalPermissionService.class);
+    servicesContainer.addSingleton(InternalPermissionTemplateService.class);
 
     // components
     servicesContainer.addSingleton(DefaultRubyComponentService.class);
index 912991a77fc244fa23840f5ba9253787a74854b8..ded7ff05ecaa5ff66b96e1f921239b6bfe1c9940 100644 (file)
@@ -50,6 +50,10 @@ class Internal
     component(Java::OrgSonarServerPermission::InternalPermissionService.java_class)
   end
 
+  def self.permission_templates
+    component(Java::OrgSonarServierPermission::InternalPermissionTemplateService.java_class)
+  end
+
   private
   def self.component(component_java_class)
     Java::OrgSonarServerPlatform::Platform.component(component_java_class)
index 7abe57e749669432246857c950001bde2c815294..d7e9bf89028f2b4cb53843f912c0bbb031343f08 100644 (file)
@@ -132,6 +132,22 @@ public class InternalPermissionTemplateServiceTest {
     assertThat(permissionTemplate.getGroupsForPermission(Permission.SYSTEM_ADMIN.key())).containsOnly("admin_group");
   }
 
+  @Test
+  public void should_retrieve_all_permission_templates() throws Exception {
+    PermissionTemplateDto template1 =
+      new PermissionTemplateDto().setId(1L).setName("template1").setDescription("template1");
+    PermissionTemplateDto template2 =
+      new PermissionTemplateDto().setId(2L).setName("template2").setDescription("template2");
+    when(permissionDao.selectAllPermissionTemplates()).thenReturn(Lists.newArrayList(template1, template2));
+
+    List<PermissionTemplate> templates = permissionTemplateService.selectAllPermissionTemplates();
+
+    assertThat(templates).hasSize(2);
+    assertThat(templates).onProperty("id").containsOnly(1L, 2L);
+    assertThat(templates).onProperty("name").containsOnly("template1", "template2");
+    assertThat(templates).onProperty("description").containsOnly("template1", "template2");
+  }
+
   @Test
   public void should_add_user_permission() throws Exception {
     UserDto userDto = new UserDto().setId(1L).setLogin("user").setName("user");