]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6499 WS permission/set_default_template fix when views default template has...
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Fri, 4 Sep 2015 09:30:24 +0000 (11:30 +0200)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Fri, 4 Sep 2015 09:47:30 +0000 (11:47 +0200)
server/sonar-server/src/main/java/org/sonar/server/permission/ws/SetDefaultTemplateAction.java
server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java
server/sonar-server/src/test/java/org/sonar/server/permission/ws/SetDefaultTemplateActionTest.java
server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java

index fc17933db81530a811b5ebe43e3521f1c017c853..785249451978de060d95d377dd9395ec3c1d5f89 100644 (file)
@@ -35,7 +35,6 @@ import org.sonar.server.user.UserSession;
 import static com.google.common.collect.FluentIterable.from;
 import static com.google.common.collect.Ordering.natural;
 import static java.lang.String.format;
-import static org.sonar.server.permission.DefaultPermissionTemplates.DEFAULT_TEMPLATE_PROPERTY;
 import static org.sonar.server.permission.DefaultPermissionTemplates.defaultRootQualifierTemplateProperty;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdminUser;
 import static org.sonar.server.permission.ws.Parameters.PARAM_QUALIFIER;
@@ -126,8 +125,5 @@ public class SetDefaultTemplateAction implements PermissionsWsAction {
 
   private void setDefaultTemplateUuid(String templateUuid, String qualifier) {
     settings.saveProperty(defaultRootQualifierTemplateProperty(qualifier), templateUuid);
-    if (Qualifiers.PROJECT.equals(qualifier)) {
-      settings.saveProperty(DEFAULT_TEMPLATE_PROPERTY, templateUuid);
-    }
   }
 }
index 688e3bf3c705f0a8017ecb98825f68c03126e89f..8da3049818c37aee9b9b05e827bccf508b50cc8f 100644 (file)
@@ -50,17 +50,21 @@ public class RegisterPermissionTemplates {
 
   public void start() {
     Profiler profiler = Profiler.create(Loggers.get(getClass())).startInfo("Register permission templates");
+    boolean shouldRegister = shouldRegister();
 
-    if (shouldRegister()) {
-      if (hasExistingPermissionsConfig()) {
-        String projectsPermissionsKey = settings.getString(defaultRootQualifierTemplateProperty(Qualifiers.PROJECT));
-        setDefaultProperty(projectsPermissionsKey);
-      } else {
-        insertDefaultTemplate();
-        setDefaultProperty(PermissionTemplateDto.DEFAULT.getKee());
-      }
+    if (hasExistingPermissionsConfig()) {
+      // needs to be done at each startup in the case a plugin has just been installed. The default property must be the project one
+      String defaultProjectPermissionTemplateUuid = settings.getString(defaultRootQualifierTemplateProperty(Qualifiers.PROJECT));
+      setDefaultProperty(defaultProjectPermissionTemplateUuid);
+    } else if (shouldRegister) {
+      insertDefaultTemplate();
+      setDefaultProperty(PermissionTemplateDto.DEFAULT.getKee());
+    }
+
+    if (shouldRegister) {
       registerInitialization();
     }
+
     profiler.stopDebug();
   }
 
@@ -113,9 +117,6 @@ public class RegisterPermissionTemplates {
   }
 
   private void setDefaultProperty(String defaultTemplate) {
-    if (settings.getString(DEFAULT_TEMPLATE_PROPERTY) == null) {
-      LOG.info("Set default permission template: " + defaultTemplate);
-      settings.saveProperty(DEFAULT_TEMPLATE_PROPERTY, defaultTemplate);
-    }
+    settings.saveProperty(DEFAULT_TEMPLATE_PROPERTY, defaultTemplate);
   }
 }
index a6d3274ebd1109f43091b6775b6fea0cf5a4a83c..f1e207999853122c8f8ecbc118e8bc3592ce93c2 100644 (file)
@@ -106,7 +106,7 @@ public class SetDefaultTemplateActionTest {
     String result = newRequest(template.getUuid(), null);
 
     assertThat(result).isEmpty();
-    assertThat(persistentSettings.getString(DEFAULT_TEMPLATE_PROPERTY)).isEqualTo(template.getUuid());
+    assertThat(persistentSettings.getString(DEFAULT_TEMPLATE_PROPERTY)).isEqualTo("any-template-uuid");
     assertThat(persistentSettings.getString(defaultRootQualifierTemplateProperty(PROJECT))).isEqualTo(template.getUuid());
     assertThat(persistentSettings.getString(defaultRootQualifierTemplateProperty(VIEW))).isEqualTo("any-view-template-uuid");
     assertThat(persistentSettings.getString(defaultRootQualifierTemplateProperty("DEV"))).isEqualTo("any-dev-template-uuid");
index 750248d7dc9f4464aecf60a44434bd19945f44f1..3165bce1f097d2e84d9476303a4aee1b8351e728 100644 (file)
@@ -108,7 +108,7 @@ public class RegisterPermissionTemplatesTest {
     RegisterPermissionTemplates initializer = new RegisterPermissionTemplates(dbClient, settings);
     initializer.start();
 
-    verifyZeroInteractions(permissionTemplateDao, settings);
+    verifyZeroInteractions(permissionTemplateDao);
     verify(loadedTemplateDao, never()).insert(any(LoadedTemplateDto.class));
   }