]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-15142 - Add component qualifier to new value in Logs
authorBelen Pruvost <belen.pruvost@sonarsource.com>
Mon, 16 Aug 2021 14:55:23 +0000 (16:55 +0200)
committersonartech <sonartech@sonarsource.com>
Thu, 19 Aug 2021 20:08:15 +0000 (20:08 +0000)
62 files changed:
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/analysis/ProjectConfigurationFactoryTest.java
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ConfigurationRepositoryTest.java
server/sonar-ce/src/main/java/org/sonar/ce/db/ReadOnlyPropertiesDao.java
server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java
server/sonar-ce/src/test/java/org/sonar/ce/db/ReadOnlyPropertiesDaoTest.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/ComponentKeyNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/ComponentNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/DevOpsPlatformSettingNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/LicenseNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/NewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/PermissionNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/PermissionTemplateNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/PersonalAccessTokenNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/PluginNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/ProjectNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/PropertyNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/UserGroupNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/UserNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/UserTokenNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/audit/model/WebhookNewValue.java
server/sonar-db-dao/src/main/java/org/sonar/db/permission/GroupPermissionDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesDao.java
server/sonar-db-dao/src/test/java/org/sonar/db/audit/model/ComponentNewValueTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/permission/GroupPermissionDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/permission/GroupPermissionDaoWithPersisterTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/permission/UserPermissionDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/permission/UserPermissionDaoWithPersisterTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/property/PropertiesDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/property/PropertiesDaoWithPersisterTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoWithAuditTest.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/favorite/FavoriteDbTester.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/property/PropertyDbTester.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/user/UserDbTester.java
server/sonar-server-common/src/main/java/org/sonar/server/favorite/FavoriteUpdater.java
server/sonar-server-common/src/test/java/org/sonar/server/platform/StartupMetadataProviderTest.java
server/sonar-webserver-api/src/main/java/org/sonar/server/plugins/PluginConsentVerifier.java
server/sonar-webserver-api/src/main/java/org/sonar/server/project/ProjectDefaultVisibility.java
server/sonar-webserver-auth/src/test/java/org/sonar/server/user/UserUpdaterUpdateTest.java
server/sonar-webserver-core/src/main/java/org/sonar/server/platform/PersistentSettings.java
server/sonar-webserver-core/src/main/java/org/sonar/server/platform/serverid/ServerIdManager.java
server/sonar-webserver-core/src/test/java/org/sonar/server/platform/serverid/ServerIdManagerTest.java
server/sonar-webserver-es/src/test/java/org/sonar/server/permission/index/PermissionIndexerDaoTest.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/notification/ws/NotificationUpdater.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/GroupPermissionChanger.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/PermissionTemplateService.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/UserPermissionChanger.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/project/ws/UpdateVisibilityAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/setting/ws/SetAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/setting/ws/SettingsUpdater.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/SearchActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/GroupPermissionChangerTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/project/ws/UpdateVisibilityActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/setting/ws/ResetActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/setting/ws/SetActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/setting/ws/SettingsUpdaterTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/setting/ws/ValuesActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/ui/ws/ComponentActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/user/ws/DeactivateActionTest.java

index 91821b0ac8e898d2c419c8fc97c756746b9c39a9..ae139fc0b771db3c50653f0188ebf54c4dbae22d 100644 (file)
@@ -52,7 +52,7 @@ public class ProjectConfigurationFactoryTest {
   @Test
   public void return_project_settings() {
     ComponentDto project = db.components().insertPrivateProject();
-    db.properties().insertProperties(null, project.name(),
+    db.properties().insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("1").setValue("val1"),
       newComponentPropertyDto(project).setKey("2").setValue("val2"),
       newComponentPropertyDto(project).setKey("3").setValue("val3"));
@@ -68,7 +68,8 @@ public class ProjectConfigurationFactoryTest {
   public void project_settings_override_global_settings() {
     settings.setProperty("key", "value");
     ComponentDto project = db.components().insertPrivateProject();
-    db.properties().insertProperties(null, project.name(), newComponentPropertyDto(project).setKey("key").setValue("value2"));
+    db.properties().insertProperties(null, project.name(), project.qualifier(),
+      newComponentPropertyDto(project).setKey("key").setValue("value2"));
 
     Configuration projectConfig = underTest.newProjectConfiguration(project.getDbKey(), new DefaultBranchImpl());
 
index e22196d73bce6c2db62cd3c16188758412aa4c12..488507409e3597ae09f72276126180425c81771b 100644 (file)
@@ -139,7 +139,7 @@ public class ConfigurationRepositoryTest {
   }
 
   private void insertProjectProperty(ComponentDto project, String propertyKey, String propertyValue) {
-    db.properties().insertProperties(null, project.name(),
+    db.properties().insertProperties(null, project.name(), project.qualifier(),
       new PropertyDto().setKey(propertyKey).setValue(propertyValue).setComponentUuid(project.uuid()));
   }
 }
index af6175bd1bf5f08c2a95236f222d69d0d07639d0..f7eca8e91b91531c961ab74efcae505429cf1c3d 100644 (file)
@@ -44,7 +44,7 @@ public class ReadOnlyPropertiesDao extends PropertiesDao {
 
   @Override
   public void saveProperty(DbSession session, PropertyDto property, @Nullable String userLogin,
-    @Nullable String projectName) {
+    @Nullable String projectName, @Nullable String qualifier) {
     // do nothing
   }
 
@@ -54,12 +54,12 @@ public class ReadOnlyPropertiesDao extends PropertiesDao {
   }
 
   @Override
-  public void deleteProjectProperty(String key, String projectUuid, String projectName) {
+  public void deleteProjectProperty(String key, String projectUuid, String projectName, String qualifier) {
     // do nothing
   }
 
   @Override
-  public void deleteProjectProperty(String key, String projectUuid, DbSession session, String projectName) {
+  public void deleteProjectProperty(DbSession session, String key, String projectUuid, String projectName, String qualifier) {
     // do nothing
   }
 
index 5d4170ff6d4b8a44bc9cc40711b644165d1156e9..50fe9c75f8f7ebd8f2a081bbe794b098accbfd24 100644 (file)
@@ -144,7 +144,7 @@ public class ComputeEngineContainerImplTest {
 
   private void insertProperty(String key, String value) {
     PropertyDto dto = new PropertyDto().setKey(key).setValue(value);
-    db.getDbClient().propertiesDao().saveProperty(db.getSession(), dto, null, null);
+    db.getDbClient().propertiesDao().saveProperty(db.getSession(), dto, null, null, null);
     db.commit();
   }
 
index ae6cea38f6c47603620d484d1401d66c02555098..83894a129bcaf536a68b8c05ccbc7ccf215e6c41 100644 (file)
@@ -40,7 +40,7 @@ public class ReadOnlyPropertiesDaoTest {
 
   @Test
   public void insertProperty() {
-    underTest.saveProperty(dbSession, propertyDto, null, null);
+    underTest.saveProperty(dbSession, propertyDto, null, null, null);
 
     assertNoInteraction();
   }
@@ -54,7 +54,7 @@ public class ReadOnlyPropertiesDaoTest {
 
   @Test
   public void deleteProjectProperty() {
-    underTest.deleteProjectProperty(null, null, null);
+    underTest.deleteProjectProperty(null, null, null, null);
 
     assertNoInteraction();
 
@@ -62,7 +62,7 @@ public class ReadOnlyPropertiesDaoTest {
 
   @Test
   public void deleteProjectProperty1() {
-    underTest.deleteProjectProperty(null, null, dbSession, null);
+    underTest.deleteProjectProperty(dbSession, null, null, null, null);
 
     assertNoInteraction();
 
index 84a485ffc47c1aaa9f4e1c2ba9409edc1131f841..500771ddef8c8b93d572b35433d6c0cee282acff 100644 (file)
@@ -19,7 +19,7 @@
  */
 package org.sonar.db.audit.model;
 
-public class ComponentKeyNewValue implements NewValue{
+public class ComponentKeyNewValue extends NewValue{
 
   private final String componentUuid;
   private final String oldKey;
index 4de0e110055d026ba40a13d62008387e83699b6a..d45bd7f7d7f0cbaa0b3fe2538383c9e64e8cc3c9 100644 (file)
@@ -23,11 +23,7 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import org.apache.commons.lang.ObjectUtils;
 
-import static org.sonar.api.resources.Qualifiers.APP;
-import static org.sonar.api.resources.Qualifiers.PROJECT;
-import static org.sonar.api.resources.Qualifiers.VIEW;
-
-public class ComponentNewValue implements NewValue {
+public class ComponentNewValue extends NewValue {
 
   private String componentUuid;
   private String componentName;
@@ -38,26 +34,26 @@ public class ComponentNewValue implements NewValue {
   private String key;
   private Boolean isPrivate;
   private Boolean isEnabled;
-  private String prefix;
+  private String qualifier;
 
   public ComponentNewValue(String componentUuid, String name, String key, @Nullable String qualifier) {
     this.componentUuid = componentUuid;
     this.componentName = name;
     this.key = key;
-    this.generateComponentPrefix(qualifier);
+    this.qualifier = getQualifier(qualifier);
   }
 
   public ComponentNewValue(String rootComponentUuid, boolean isPrivate, @Nullable String qualifier) {
     this.rootComponentUuid = rootComponentUuid;
     this.isPrivate = isPrivate;
-    this.generateComponentPrefix(qualifier);
+    this.qualifier = getQualifier(qualifier);
   }
 
   public ComponentNewValue(String componentUuid, String name, boolean isPrivate, String qualifier) {
     this.componentUuid = componentUuid;
     this.componentName = name;
     this.isPrivate = isPrivate;
-    this.generateComponentPrefix(qualifier);
+    this.qualifier = this.getQualifier(qualifier);
   }
 
   public ComponentNewValue(String uuid, String name, String key, boolean enabled, String path, @Nullable String qualifier) {
@@ -66,7 +62,7 @@ public class ComponentNewValue implements NewValue {
     this.isEnabled = enabled;
     this.path = path;
     this.key = key;
-    this.generateComponentPrefix(qualifier);
+    this.qualifier = getQualifier(qualifier);
   }
 
   public ComponentNewValue(String uuid, boolean isPrivate, String name, String key, @Nullable String description, @Nullable String qualifier) {
@@ -75,7 +71,7 @@ public class ComponentNewValue implements NewValue {
     this.componentName = name;
     this.key = key;
     this.description = description;
-    this.generateComponentPrefix(qualifier);
+    this.qualifier = getQualifier(qualifier);
   }
 
   public String getComponentUuid() {
@@ -99,33 +95,17 @@ public class ComponentNewValue implements NewValue {
     return isPrivate;
   }
 
-  private void generateComponentPrefix(String qualifier) {
-    if (qualifier == null) {
-      this.prefix = "component";
-      return ;
-    }
-    switch (qualifier) {
-      case VIEW:
-        this.prefix = "portfolio";
-        break;
-      case APP:
-        this.prefix = "application";
-        break;
-      case PROJECT:
-        this.prefix = "project";
-        break;
-      default:
-        this.prefix = "component";
-        break;
-    }
+  public String getQualifier() {
+    return qualifier;
   }
 
   @Override
   public String toString() {
     StringBuilder sb = new StringBuilder("{");
-    addField(sb, "\"" + this.prefix + "Uuid\": ", this.componentUuid, true);
+    addField(sb, "\"componentUuid\": ", this.componentUuid, true);
     addField(sb, "\"rootComponentUuid\": ", this.rootComponentUuid, true);
-    addField(sb, "\"" + this.prefix + "Name\": ", this.componentName, true);
+    addField(sb, "\"componentName\": ", this.componentName, true);
+    addField(sb, "\"qualifier\": ", this.qualifier, true);
     addField(sb, "\"description\": ", this.description, true);
     addField(sb, "\"key\": ", this.key, true);
     addField(sb, "\"path\": ", this.path, true);
index 71876aa96c05a0c5648cfa611cb31781d8ed3b80..a9b4dfa1dbc2b93d086063063c6fcb547db7cdce 100644 (file)
@@ -26,7 +26,7 @@ import org.sonar.db.alm.setting.AlmSettingDto;
 import org.sonar.db.alm.setting.ProjectAlmSettingDto;
 import org.sonar.db.project.ProjectDto;
 
-public class DevOpsPlatformSettingNewValue implements NewValue {
+public class DevOpsPlatformSettingNewValue extends NewValue {
   @Nullable
   private String devOpsPlatformSettingUuid;
 
index 9445c53ea92396922f246ee58b400e282ac4f368..c03b67b851404ba6bddce6d2fed5950fd32c471d 100644 (file)
@@ -22,7 +22,7 @@ package org.sonar.db.audit.model;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 
-public class LicenseNewValue implements NewValue {
+public class LicenseNewValue extends NewValue {
   @Nullable
   private String edition;
 
index 547acb31f7d9803a390730cf34a95524080545f8..eaf854c5b5109e4b3ec4ec79e01e7f09c1159f70 100644 (file)
  */
 package org.sonar.db.audit.model;
 
+import javax.annotation.Nullable;
+
 import static com.google.common.base.Strings.isNullOrEmpty;
+import static org.sonar.api.resources.Qualifiers.APP;
+import static org.sonar.api.resources.Qualifiers.PROJECT;
+import static org.sonar.api.resources.Qualifiers.VIEW;
 
-public interface NewValue {
+public abstract class NewValue {
 
-  default void addField(StringBuilder sb, String field, String value, boolean isString) {
+  protected void addField(StringBuilder sb, String field, String value, boolean isString) {
     if (!isNullOrEmpty(value)) {
       sb.append(field);
       addQuote(sb, isString);
@@ -33,7 +38,7 @@ public interface NewValue {
     }
   }
 
-  default void endString(StringBuilder sb) {
+  protected void endString(StringBuilder sb) {
     int length = sb.length();
     if(sb.length() > 1) {
       sb.delete(length - 2, length - 1);
@@ -46,4 +51,23 @@ public interface NewValue {
       sb.append("\"");
     }
   }
+
+  protected String getQualifier(@Nullable String qualifier) {
+    if (qualifier == null) {
+      return null;
+    }
+    switch (qualifier) {
+      case VIEW:
+        return "portfolio";
+      case APP:
+        return "application";
+      case PROJECT:
+        return "project";
+      default:
+        return null;
+    }
+  }
+
+  @Override
+  public abstract String toString();
 }
index 51af099cbd89c741fd97092ca5c6d65a3f24e4ab..e0f8ed1c8344a3383f1c57c9054aac7726454a26 100644 (file)
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
 import org.sonar.db.permission.GroupPermissionDto;
 import org.sonar.db.permission.UserPermissionDto;
 
-public class PermissionNewValue implements NewValue {
+public class PermissionNewValue extends NewValue {
   @Nullable
   private String permissionUuid;
 
@@ -38,39 +38,46 @@ public class PermissionNewValue implements NewValue {
   private String userUuid;
 
   @Nullable
-  private String projectUuid;
+  private String componentUuid;
 
   @Nullable
-  private String projectName;
+  private String componentName;
 
   @Nullable
   private String role;
 
-  public PermissionNewValue(GroupPermissionDto groupPermissionDto) {
+  @Nullable
+  private String qualifier;
+
+  public PermissionNewValue(GroupPermissionDto groupPermissionDto, @Nullable String componentName, @Nullable String qualifier) {
     this.permissionUuid = groupPermissionDto.getUuid();
     this.role = groupPermissionDto.getRole();
     this.groupUuid = groupPermissionDto.getGroupUuid();
     this.groupName = groupPermissionDto.getGroupName();
-    this.projectUuid = groupPermissionDto.getComponentUuid();
-    this.projectName = groupPermissionDto.getComponentName();
+    this.componentUuid = groupPermissionDto.getComponentUuid();
+    this.role = groupPermissionDto.getRole();
+    this.componentName = componentName;
+    this.qualifier = getQualifier(qualifier);
   }
 
-  public PermissionNewValue(UserPermissionDto permissionDto, @Nullable String projectName) {
+  public PermissionNewValue(UserPermissionDto permissionDto, @Nullable String componentName, @Nullable String qualifier) {
     this.permissionUuid = permissionDto.getUuid();
     this.userUuid = permissionDto.getUserUuid();
-    this.projectUuid = permissionDto.getComponentUuid();
+    this.componentUuid = permissionDto.getComponentUuid();
     this.role = permissionDto.getPermission();
-    this.projectName = projectName;
+    this.componentName = componentName;
+    this.qualifier = getQualifier(qualifier);
   }
 
   public  PermissionNewValue(@Nullable String role, @Nullable String groupUuid, @Nullable String groupName, @Nullable String rootComponentUuid,
-    @Nullable String projectName, @Nullable String userUuid) {
+    @Nullable String componentName, @Nullable String qualifier, @Nullable String userUuid) {
     this.role = role;
     this.groupUuid = groupUuid;
     this.groupName = groupName;
-    this.projectUuid = rootComponentUuid;
-    this.projectName = projectName;
+    this.componentUuid = rootComponentUuid;
+    this.componentName = componentName;
     this.userUuid = userUuid;
+    this.qualifier = getQualifier(qualifier);
   }
 
   @CheckForNull
@@ -89,8 +96,8 @@ public class PermissionNewValue implements NewValue {
   }
 
   @CheckForNull
-  public String getProjectUuid() {
-    return this.projectUuid;
+  public String getComponentUuid() {
+    return this.componentUuid;
   }
 
   @CheckForNull
@@ -99,8 +106,13 @@ public class PermissionNewValue implements NewValue {
   }
 
   @CheckForNull
-  public String getProjectName() {
-    return this.projectName;
+  public String getComponentName() {
+    return this.componentName;
+  }
+
+  @CheckForNull
+  public String getQualifier() {
+    return this.qualifier;
   }
 
   @CheckForNull
@@ -115,8 +127,9 @@ public class PermissionNewValue implements NewValue {
     addField(sb, "\"role\": ", this.role, true);
     addField(sb, "\"groupUuid\": ", this.groupUuid, true);
     addField(sb, "\"groupName\": ", this.groupName, true);
-    addField(sb, "\"projectUuid\": ", this.projectUuid, true);
-    addField(sb, "\"projectName\": ", this.projectName, true);
+    addField(sb, "\"componentUuid\": ", this.componentUuid, true);
+    addField(sb, "\"componentName\": ", this.componentName, true);
+    addField(sb, "\"qualifier\": ", this.qualifier, true);
     addField(sb, "\"userUuid\": ", this.userUuid, true);
     endString(sb);
     return sb.toString();
index 1ca5679c358dc4dfb0dc7338484b34478f7dd2f7..26ff2491b9e39cd7c3ba758126ea511f5b8ac44f 100644 (file)
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
 import org.apache.commons.lang.ObjectUtils;
 import org.sonar.db.permission.template.PermissionTemplateDto;
 
-public class PermissionTemplateNewValue implements NewValue {
+public class PermissionTemplateNewValue extends NewValue {
   private String templateUuid;
   private String name;
 
index 3f46932d8cd9b380198287f8de9afbfa186b25d7..abc31df491acb938eb89dfe0a57a7e6512cc3b47 100644 (file)
@@ -25,7 +25,7 @@ import org.sonar.db.alm.pat.AlmPatDto;
 import org.sonar.db.alm.setting.AlmSettingDto;
 import org.sonar.db.user.UserDto;
 
-public class PersonalAccessTokenNewValue implements NewValue {
+public class PersonalAccessTokenNewValue extends NewValue {
   @Nullable
   private String patUuid;
 
index 3dfd947e1d8146b378f4f283ef9c5b27c0f76992..faff2a7521a86fac66e2499ecd2a889e0370bb87 100644 (file)
@@ -21,7 +21,7 @@ package org.sonar.db.audit.model;
 
 import org.sonar.db.plugin.PluginDto;
 
-public class PluginNewValue implements NewValue {
+public class PluginNewValue extends NewValue {
   private String pluginUuid;
   private String kee;
   private String basePluginKey;
index e10b52dd27e3b0fa3c96b2795941a902f87b6cab..ffe6c8ab41175c3000e6f982439d689ccfad77ad 100644 (file)
@@ -21,23 +21,13 @@ package org.sonar.db.audit.model;
 
 import org.apache.commons.lang.ObjectUtils;
 
-public class ProjectNewValue implements NewValue{
+public class ProjectNewValue extends NewValue{
 
   private final String uuid;
   private String name;
   private String description;
   private Boolean isPrivate;
 
-  public ProjectNewValue(String uuid, String name) {
-    this.uuid = uuid;
-    this.name = name;
-  }
-
-  public ProjectNewValue(String uuid, boolean isPrivate) {
-    this.uuid = uuid;
-    this.isPrivate = isPrivate;
-  }
-
   public ProjectNewValue(String uuid, boolean isPrivate, String name, String description) {
     this.uuid = uuid;
     this.isPrivate = isPrivate;
index e3f371b7f5e93648a2588de5e47b5d228d3f7607..3169c6ba55cc57420d8b19ee6dd229a445a3150a 100644 (file)
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
 import org.sonar.db.property.PropertyDto;
 import org.sonar.db.user.UserPropertyDto;
 
-public class PropertyNewValue implements NewValue {
+public class PropertyNewValue extends NewValue {
   @Nullable
   private String propertyKey;
 
@@ -38,10 +38,13 @@ public class PropertyNewValue implements NewValue {
   private String userLogin;
 
   @Nullable
-  private String projectUuid;
+  private String componentUuid;
 
   @Nullable
-  private String projectName;
+  private String componentName;
+
+  @Nullable
+  private String qualifier;
 
   public PropertyNewValue(UserPropertyDto userPropertyDto, String login) {
     this.propertyKey = userPropertyDto.getKey();
@@ -51,12 +54,13 @@ public class PropertyNewValue implements NewValue {
     setValue(propertyKey, userPropertyDto.getValue());
   }
 
-  public PropertyNewValue(PropertyDto propertyDto, @Nullable String userLogin, @Nullable String projectName) {
+  public PropertyNewValue(PropertyDto propertyDto, @Nullable String userLogin, @Nullable String componentName, @Nullable String qualifier) {
     this.propertyKey = propertyDto.getKey();
     this.userUuid = propertyDto.getUserUuid();
     this.userLogin = userLogin;
-    this.projectUuid = propertyDto.getComponentUuid();
-    this.projectName = projectName;
+    this.componentUuid = propertyDto.getComponentUuid();
+    this.componentName = componentName;
+    this.qualifier = getQualifier(qualifier);
 
     setValue(propertyKey, propertyDto.getValue());
   }
@@ -78,11 +82,12 @@ public class PropertyNewValue implements NewValue {
   }
 
   public PropertyNewValue(@Nullable String propertyKey, @Nullable String projectUuid,
-    @Nullable String projectName, @Nullable String userUuid) {
+    @Nullable String componentName, @Nullable String qualifier, @Nullable String userUuid) {
     this.propertyKey = propertyKey;
-    this.projectUuid = projectUuid;
-    this.projectName = projectName;
+    this.componentUuid = projectUuid;
+    this.componentName = componentName;
     this.userUuid = userUuid;
+    this.qualifier = getQualifier(qualifier);
   }
 
   @CheckForNull
@@ -106,13 +111,18 @@ public class PropertyNewValue implements NewValue {
   }
 
   @CheckForNull
-  public String getProjectUuid() {
-    return this.projectUuid;
+  public String getComponentUuid() {
+    return this.componentUuid;
+  }
+
+  @CheckForNull
+  public String getComponentName() {
+    return this.componentName;
   }
 
   @CheckForNull
-  public String getProjectName() {
-    return this.projectName;
+  public String getQualifier() {
+    return this.qualifier;
   }
 
   @Override
@@ -122,8 +132,9 @@ public class PropertyNewValue implements NewValue {
     addField(sb, "\"propertyValue\": ", this.propertyValue, true);
     addField(sb, "\"userUuid\": ", this.userUuid, true);
     addField(sb, "\"userLogin\": ", this.userLogin, true);
-    addField(sb, "\"projectUuid\": ", this.projectUuid, true);
-    addField(sb, "\"projectName\": ", this.projectName, true);
+    addField(sb, "\"componentUuid\": ", this.componentUuid, true);
+    addField(sb, "\"componentName\": ", this.componentName, true);
+    addField(sb, "\"qualifier\": ", this.qualifier, true);
     endString(sb);
     return sb.toString();
   }
index 3e2bc548aa6d27823a2edeed1b4782781f7bd1f8..f908aac657bee4560eaee81ac73004b94adba164 100644 (file)
@@ -25,7 +25,7 @@ import org.sonar.db.user.GroupDto;
 import org.sonar.db.user.UserDto;
 import org.sonar.db.user.UserGroupDto;
 
-public class UserGroupNewValue implements NewValue {
+public class UserGroupNewValue extends NewValue {
 
   @Nullable
   private String groupUuid;
index 00b41a82462a0588cb7a3b909adef2ad81d3d5db..9f96535f8c75d906bf6d6cb97a6144b0323a3014 100644 (file)
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
 import org.apache.commons.lang.ObjectUtils;
 import org.sonar.db.user.UserDto;
 
-public class UserNewValue implements NewValue {
+public class UserNewValue extends NewValue {
   private String userUuid;
   private String login;
 
index cb5c69ea438c47b0d80b52754e1721eefabc0a90..05f39e63e8db070a02152e59947d7ecdbd1ac772 100644 (file)
@@ -25,7 +25,7 @@ import org.apache.commons.lang.ObjectUtils;
 import org.sonar.db.user.UserDto;
 import org.sonar.db.user.UserTokenDto;
 
-public class UserTokenNewValue implements NewValue {
+public class UserTokenNewValue extends NewValue {
   @Nullable
   private String tokenUuid;
 
index c5a0c49043ddcf62b5f9b6d91e9d4ee23eb257d3..30cab0b497f04c806cae8715809884289e758d66 100644 (file)
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
 import org.sonar.db.project.ProjectDto;
 import org.sonar.db.webhook.WebhookDto;
 
-public class WebhookNewValue implements NewValue {
+public class WebhookNewValue extends NewValue {
   @Nullable
   private String webhookUuid;
 
index 77260c4c31e22839071cbc0bec584c9da061d8f0..9f6aef56f4c72015514d0cf9378c70012e9c2ade 100644 (file)
@@ -52,6 +52,7 @@ public class GroupPermissionDao implements Dao {
   /**
    * Returns the names of the groups that match the given query.
    * The virtual group "Anyone" may be returned as the value {@link DefaultGroups#ANYONE}.
+   *
    * @return group names, sorted in alphabetical order
    */
   public List<String> selectGroupNamesByQuery(DbSession dbSession, PermissionQuery query) {
@@ -122,22 +123,25 @@ public class GroupPermissionDao implements Dao {
     return mapper(session).selectGroupUuidsWithPermissionOnProjectBut(projectUuid, permission);
   }
 
-  public void insert(DbSession dbSession, GroupPermissionDto groupPermissionDto) {
+  public void insert(DbSession dbSession, GroupPermissionDto groupPermissionDto, @Nullable ComponentDto componentDto) {
     mapper(dbSession).insert(groupPermissionDto);
 
     if (auditPersister != null) {
-      auditPersister.addGroupPermission(dbSession, new PermissionNewValue(groupPermissionDto));
+      String componentName = (componentDto != null) ? componentDto.name() : null;
+      String qualifier = (componentDto != null) ? componentDto.qualifier() : null;
+      auditPersister.addGroupPermission(dbSession, new PermissionNewValue(groupPermissionDto, componentName, qualifier));
     }
   }
 
   /**
    * Delete all the permissions associated to a root component (project)
    */
-  public void deleteByRootComponentUuid(DbSession dbSession, String rootComponentUuid, String projectName) {
-    mapper(dbSession).deleteByRootComponentUuid(rootComponentUuid);
+  public void deleteByRootComponentUuid(DbSession dbSession, ComponentDto component) {
+    mapper(dbSession).deleteByRootComponentUuid(component.uuid());
 
     if (auditPersister != null) {
-      auditPersister.deleteGroupPermission(dbSession, new PermissionNewValue(null, null, null, rootComponentUuid, projectName, null));
+      auditPersister.deleteGroupPermission(dbSession, new PermissionNewValue(null, null, null, component.uuid(), component.name(),
+        component.qualifier(), null));
     }
   }
 
@@ -145,15 +149,22 @@ public class GroupPermissionDao implements Dao {
    * Delete all permissions of the specified group (group "AnyOne" if {@code groupUuid} is {@code null}) for the specified
    * component.
    */
-  public int deleteByRootComponentUuidAndGroupUuid(DbSession dbSession, String rootComponentUuid, @Nullable String groupUuid) {
-    return mapper(dbSession).deleteByRootComponentUuidAndGroupUuid(rootComponentUuid, groupUuid);
+  public int deleteByRootComponentUuidAndGroupUuid(DbSession dbSession, @Nullable String groupUuid, ComponentDto component) {
+    int deletedRecords = mapper(dbSession).deleteByRootComponentUuidAndGroupUuid(component.uuid(), groupUuid);
+
+    if (auditPersister != null) {
+      auditPersister.deleteGroupPermission(dbSession, new PermissionNewValue(null, groupUuid, "", component.uuid(), component.name(),
+        component.qualifier(), null));
+    }
+    return deletedRecords;
   }
 
-  public int deleteByRootComponentUuidForAnyOne(DbSession dbSession, String rootComponentUuid, String projectName) {
-    int deletedRecords = mapper(dbSession).deleteByRootComponentUuidAndGroupUuid(rootComponentUuid, null);
+  public int deleteByRootComponentUuidForAnyOne(DbSession dbSession, ComponentDto component) {
+    int deletedRecords = mapper(dbSession).deleteByRootComponentUuidAndGroupUuid(component.uuid(), null);
 
     if (auditPersister != null) {
-      auditPersister.deleteGroupPermission(dbSession, new PermissionNewValue(null, null, null, rootComponentUuid, projectName, null));
+      auditPersister.deleteGroupPermission(dbSession, new PermissionNewValue(null, null, null, component.uuid(),
+        component.name(), component.qualifier(), null));
     }
 
     return deletedRecords;
@@ -162,11 +173,12 @@ public class GroupPermissionDao implements Dao {
   /**
    * Delete the specified permission for the specified component for any group (including group AnyOne).
    */
-  public int deleteByRootComponentUuidAndPermission(DbSession dbSession, String rootComponentUuid, String permission, String projectName) {
-    int deletedRecords = mapper(dbSession).deleteByRootComponentUuidAndPermission(rootComponentUuid, permission);
+  public int deleteByRootComponentUuidAndPermission(DbSession dbSession, String permission, ComponentDto component) {
+    int deletedRecords = mapper(dbSession).deleteByRootComponentUuidAndPermission(component.uuid(), permission);
 
     if (auditPersister != null) {
-      auditPersister.deleteGroupPermission(dbSession, new PermissionNewValue(permission, null, null, rootComponentUuid, projectName, null));
+      auditPersister.deleteGroupPermission(dbSession, new PermissionNewValue(permission, null, null, component.uuid(),
+        component.name(), component.qualifier(), null));
     }
 
     return deletedRecords;
@@ -180,9 +192,10 @@ public class GroupPermissionDao implements Dao {
    *   <li>a permission granted to a group for a project</li>
    *   <li>a permission granted to anyone for a project</li>
    * </ul>
+   *
    * @param dbSession
-   * @param permission the kind of permission
-   * @param groupUuid if null, then anyone, else uuid of group
+   * @param permission        the kind of permission
+   * @param groupUuid         if null, then anyone, else uuid of group
    * @param rootComponentUuid if null, then global permission, otherwise the uuid of root component (project)
    */
   public void delete(DbSession dbSession, String permission,
@@ -192,7 +205,9 @@ public class GroupPermissionDao implements Dao {
 
     if (auditPersister != null) {
       String projectName = (componentDto != null) ? componentDto.name() : null;
-      auditPersister.deleteGroupPermission(dbSession, new PermissionNewValue(permission, groupUuid, groupName, rootComponentUuid, projectName, null));
+      String qualifier = (componentDto != null) ? componentDto.qualifier() : null;
+      auditPersister.deleteGroupPermission(dbSession, new PermissionNewValue(permission, groupUuid, groupName, rootComponentUuid,
+        projectName, qualifier, null));
     }
   }
 
index 47d90d2d5a7cc1b3ce5993c10e27d75147f2c645..42661794fbfb1bca24a69ed13599931e361ddc29 100644 (file)
@@ -117,8 +117,9 @@ public class UserPermissionDao implements Dao {
     mapper(dbSession).insert(dto);
 
     if (auditPersister != null) {
-      String projectName = (componentDto != null) ? componentDto.name() : null;
-      auditPersister.addUserPermission(dbSession, new PermissionNewValue(dto, projectName));
+      String componentName = (componentDto != null) ? componentDto.name() : null;
+      String qualifier = (componentDto != null) ? componentDto.qualifier() : null;
+      auditPersister.addUserPermission(dbSession, new PermissionNewValue(dto, componentName, qualifier));
     }
   }
 
@@ -129,41 +130,44 @@ public class UserPermissionDao implements Dao {
     mapper(dbSession).deleteGlobalPermission(userUuid, permission);
 
     if (auditPersister != null) {
-      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(permission, null, null, null,
-        null, userUuid));
+      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(permission, null, null,
+        null, null, null, userUuid));
     }
   }
 
   /**
    * Removes a single project permission from user
    */
-  public void deleteProjectPermission(DbSession dbSession, String userUuid, String permission, String projectUuid, @Nullable String projectName) {
-    mapper(dbSession).deleteProjectPermission(userUuid, permission, projectUuid);
+  public void deleteProjectPermission(DbSession dbSession, String userUuid, String permission, ComponentDto component) {
+    mapper(dbSession).deleteProjectPermission(userUuid, permission, component.uuid());
 
     if (auditPersister != null) {
-      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(permission, null, null, projectUuid, projectName, userUuid));
+      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(permission, null, null, component.uuid(),
+        component.name(), component.qualifier(), userUuid));
     }
   }
 
   /**
    * Deletes all the permissions defined on a project
    */
-  public void deleteProjectPermissions(DbSession dbSession, String projectUuid, String projectName) {
-    mapper(dbSession).deleteProjectPermissions(projectUuid);
+  public void deleteProjectPermissions(DbSession dbSession, ComponentDto component) {
+    mapper(dbSession).deleteProjectPermissions(component.uuid());
 
     if (auditPersister != null) {
-      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(null, null, null, projectUuid, projectName, null));
+      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(null, null, null, component.uuid(), component.name(),
+        component.qualifier(), null));
     }
   }
 
   /**
    * Deletes the specified permission on the specified project for any user.
    */
-  public int deleteProjectPermissionOfAnyUser(DbSession dbSession, String projectUuid, String permission, String projectName) {
-    int deletedRows = mapper(dbSession).deleteProjectPermissionOfAnyUser(projectUuid, permission);
+  public int deleteProjectPermissionOfAnyUser(DbSession dbSession, String permission, ComponentDto project) {
+    int deletedRows = mapper(dbSession).deleteProjectPermissionOfAnyUser(project.uuid(), permission);
 
     if (auditPersister != null) {
-      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(permission, null, null, projectUuid, projectName, null));
+      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(permission, null, null, project.uuid(), project.name(),
+        project.qualifier(), null));
     }
 
     return deletedRows;
@@ -173,7 +177,8 @@ public class UserPermissionDao implements Dao {
     mapper(dbSession).deleteByUserUuid(userUuid);
 
     if (auditPersister != null) {
-      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(null, null, null, null, null, userUuid));
+      auditPersister.deleteUserPermission(dbSession, new PermissionNewValue(null, null, null, null,
+        null, null, userUuid));
     }
   }
 
index f45ad0a9ad5f0182ae62d363b664805c7c2ae50c..29028f2c6fb0ae4b7beea022d1c6b935f7858046 100644 (file)
@@ -210,11 +210,12 @@ public class PropertiesDao implements Dao {
    *
    * @throws IllegalArgumentException if {@link PropertyDto#getKey()} is {@code null} or empty
    */
-  public void saveProperty(DbSession session, PropertyDto property, @Nullable String userLogin, @Nullable String projectName) {
+  public void saveProperty(DbSession session, PropertyDto property, @Nullable String userLogin, @Nullable String projectName,
+    @Nullable String qualifier) {
     save(getMapper(session), property.getKey(), property.getUserUuid(), property.getComponentUuid(), property.getValue());
 
     if (auditPersister != null && auditPersister.isTrackedProperty(property.getKey())) {
-      auditPersister.addProperty(session, new PropertyNewValue(property, userLogin, projectName), false);
+      auditPersister.addProperty(session, new PropertyNewValue(property, userLogin, projectName, qualifier), false);
     }
   }
 
@@ -247,7 +248,7 @@ public class PropertiesDao implements Dao {
 
   public void saveProperty(PropertyDto property) {
     try (DbSession session = mybatis.openSession(false)) {
-      saveProperty(session, property, null, null);
+      saveProperty(session, property, null, null, null);
       session.commit();
     }
   }
@@ -264,33 +265,34 @@ public class PropertiesDao implements Dao {
 
     if (auditPersister != null && query.key() != null && auditPersister.isTrackedProperty(query.key())) {
       auditPersister.deleteProperty(dbSession, new PropertyNewValue(query.key(), query.componentUuid(),
-        null, query.userUuid()), false);
+        null, null, query.userUuid()), false);
     }
 
     return deletedRows;
   }
 
-  public int delete(DbSession dbSession, PropertyDto dto, @Nullable String userLogin, @Nullable String projectName) {
+  public int delete(DbSession dbSession, PropertyDto dto, @Nullable String userLogin, @Nullable String projectName, @Nullable String qualifier) {
     int deletedRows = getMapper(dbSession).delete(dto.getKey(), dto.getUserUuid(), dto.getComponentUuid());
 
     if (auditPersister != null && auditPersister.isTrackedProperty(dto.getKey())) {
-      auditPersister.deleteProperty(dbSession, new PropertyNewValue(dto, userLogin, projectName), false);
+      auditPersister.deleteProperty(dbSession, new PropertyNewValue(dto, userLogin, projectName, qualifier), false);
     }
     return deletedRows;
   }
 
-  public void deleteProjectProperty(String key, String projectUuid, String projectName) {
+  public void deleteProjectProperty(String key, String projectUuid, String projectName, String qualifier) {
     try (DbSession session = mybatis.openSession(false)) {
-      deleteProjectProperty(key, projectUuid, session, projectName);
+      deleteProjectProperty(session, key, projectUuid, projectName, qualifier);
       session.commit();
     }
   }
 
-  public void deleteProjectProperty(String key, String projectUuid, DbSession session, String projectName) {
+  public void deleteProjectProperty(DbSession session, String key, String projectUuid, String projectName, String qualifier) {
     getMapper(session).deleteProjectProperty(key, projectUuid);
 
     if (auditPersister != null && auditPersister.isTrackedProperty(key)) {
-      auditPersister.deleteProperty(session, new PropertyNewValue(key, projectUuid, projectName, null), false);
+      auditPersister.deleteProperty(session, new PropertyNewValue(key, projectUuid, projectName, qualifier,
+        null), false);
     }
   }
 
index 79b82bca00f30858322bd48363f7c0bb7e019fce..f959cc148a232111d02041e3990a9305ae3f8a4f 100644 (file)
@@ -38,53 +38,65 @@ public class ComponentNewValueTest {
   }
 
   @Test
-  public void toString_addsPortfolioPrefix() {
+  public void toString_addsPortfolioQualifier() {
     ComponentNewValue newValue = new ComponentNewValue("uuid", "name", "key", true, "path", "VW");
 
-    assertThat(newValue.toString()).contains("portfolioUuid");
+    assertThat(newValue.toString())
+      .contains("componentUuid")
+      .contains("\"qualifier\": \"portfolio\"");
   }
 
   @Test
   public void toString_project_uuid_and_name_and_isPrivate() {
     ComponentNewValue newValue = new ComponentNewValue("uuid", "name", true,"TRK");
 
-    assertThat(newValue.toString()).contains("\"projectUuid\": \"uuid\"");
-    assertThat(newValue.toString()).contains("\"projectName\": \"name\"");
-    assertThat(newValue.toString()).contains("\"isPrivate\": true");
+    assertThat(newValue.toString())
+      .contains("\"componentUuid\": \"uuid\"")
+      .contains("\"componentName\": \"name\"")
+      .contains("\"qualifier\": \"project\"")
+      .contains("\"isPrivate\": true");
   }
 
   @Test
   public void toString_project_uuid_and_name_and_key() {
     ComponentNewValue newValue = new ComponentNewValue("uuid", "name", "key", "TRK");
 
-    assertThat(newValue.toString()).contains("\"projectUuid\": \"uuid\"");
-    assertThat(newValue.toString()).contains("\"projectName\": \"name\"");
-    assertThat(newValue.toString()).contains("\"key\": \"key\"");
+    assertThat(newValue.toString())
+      .contains("\"componentUuid\": \"uuid\"")
+      .contains("\"componentName\": \"name\"")
+      .contains("\"qualifier\": \"project\"")
+      .contains("\"key\": \"key\"");
   }
 
   @Test
   public void toString_project_uuid_and_name_and_key_and_isPrivate_and_description() {
     ComponentNewValue newValue = new ComponentNewValue("uuid", true, "name", "key", "description", "TRK");
 
-    assertThat(newValue.toString()).contains("\"projectUuid\": \"uuid\"");
-    assertThat(newValue.toString()).contains("\"projectName\": \"name\"");
-    assertThat(newValue.toString()).contains("\"isPrivate\": true");
-    assertThat(newValue.toString()).contains("\"key\": \"key\"");
-    assertThat(newValue.toString()).contains("\"description\": \"description\"");
+    assertThat(newValue.toString())
+      .contains("\"componentUuid\": \"uuid\"")
+      .contains("\"componentName\": \"name\"")
+      .contains("\"qualifier\": \"project\"")
+      .contains("\"isPrivate\": true")
+      .contains("\"key\": \"key\"")
+      .contains("\"description\": \"description\"");
   }
 
   @Test
-  public void toString_addsProjectPrefix() {
+  public void toString_addsProjectQualifier() {
     ComponentNewValue newValue = new ComponentNewValue("uuid", "name", "key", true, "path", "TRK");
 
-    assertThat(newValue.toString()).contains("projectUuid");
+    assertThat(newValue.toString())
+      .contains("componentUuid")
+      .contains("\"qualifier\": \"project\"");
   }
 
   @Test
-  public void toString_addsApplicationPrefix() {
+  public void toString_addsApplicationQualifier() {
     ComponentNewValue newValue = new ComponentNewValue("uuid", "name", "key", true, "path", "APP");
 
-    assertThat(newValue.toString()).contains("applicationUuid");
+    assertThat(newValue.toString())
+      .contains("componentUuid")
+      .contains("\"qualifier\": \"application\"");
   }
 
 }
index 6714fcdb93e23cc18ca93f532a9ff3144cebf875..24d8075b28e7bbfe284090eec981ff1b6ad3739f 100644 (file)
@@ -561,7 +561,7 @@ public class GroupPermissionDaoTest {
     db.users().insertProjectPermissionOnGroup(group1, "perm2", project1);
     db.users().insertProjectPermissionOnGroup(group2, "perm3", project2);
 
-    underTest.deleteByRootComponentUuid(dbSession, project1.uuid(), project1.name());
+    underTest.deleteByRootComponentUuid(dbSession, project1);
     dbSession.commit();
 
     assertThat(db.countSql("select count(uuid) from group_roles where component_uuid='" + project1.uuid() + "'")).isZero();
@@ -580,7 +580,7 @@ public class GroupPermissionDaoTest {
     db.users().insertProjectPermissionOnAnyone("perm4", project1);
     db.users().insertProjectPermissionOnAnyone("perm5", project2);
 
-    underTest.deleteByRootComponentUuid(dbSession, project1.uuid(), project1.name());
+    underTest.deleteByRootComponentUuid(dbSession, project1);
     dbSession.commit();
 
     assertThat(db.countSql("select count(uuid) from group_roles where component_uuid='" + project1.uuid() + "'")).isZero();
@@ -698,7 +698,7 @@ public class GroupPermissionDaoTest {
     assertThat(underTest.selectGlobalPermissionsOfGroup(dbSession, group.getUuid()))
       .containsOnly("p4");
 
-    int deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, project.uuid(), null);
+    int deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, null, project);
 
     assertThat(deletedCount).isEqualTo(1);
     assertThat(underTest.selectProjectPermissionsOfGroup(dbSession, null, project.uuid()))
@@ -736,7 +736,7 @@ public class GroupPermissionDaoTest {
     assertThat(underTest.selectGlobalPermissionsOfGroup(dbSession, group2.getUuid()))
       .containsOnly("p7");
 
-    int deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, project.uuid(), group1.getUuid());
+    int deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, group1.getUuid(), project);
 
     assertThat(deletedCount).isEqualTo(1);
     assertThat(underTest.selectProjectPermissionsOfGroup(dbSession, null, project.uuid()))
@@ -750,7 +750,7 @@ public class GroupPermissionDaoTest {
     assertThat(underTest.selectGlobalPermissionsOfGroup(dbSession, group2.getUuid()))
       .containsOnly("p7");
 
-    deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, project.uuid(), group2.getUuid());
+    deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, group2.getUuid(), project);
 
     assertThat(deletedCount).isEqualTo(2);
     assertThat(underTest.selectProjectPermissionsOfGroup(dbSession, null, project.uuid()))
@@ -768,9 +768,10 @@ public class GroupPermissionDaoTest {
   @Test
   public void deleteByRootComponentUuidAndGroupUuid_has_no_effect_if_component_does_not_exist() {
     GroupDto group = db.users().insertGroup();
+    ComponentDto component = new ComponentDto().setUuid("1234");
 
-    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, "1234", null)).isZero();
-    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, "1234", group.getUuid())).isZero();
+    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession,  null, component)).isZero();
+    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, group.getUuid(), component)).isZero();
   }
 
   @Test
@@ -778,15 +779,15 @@ public class GroupPermissionDaoTest {
     ComponentDto project = randomPublicOrPrivateProject();
     GroupDto group = db.users().insertGroup();
 
-    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, project.uuid(), null)).isZero();
-    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, project.uuid(), group.getUuid())).isZero();
+    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession,  null, project)).isZero();
+    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, group.getUuid(), project)).isZero();
   }
 
   @Test
   public void deleteByRootComponentUuidAndGroupUuid_has_no_effect_if_group_does_not_exist() {
     ComponentDto project = randomPublicOrPrivateProject();
 
-    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, project.uuid(), "5678")).isZero();
+    assertThat(underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, "5678", project)).isZero();
   }
 
   @Test
@@ -801,7 +802,7 @@ public class GroupPermissionDaoTest {
     db.users().insertPermissionOnAnyone("p2");
     db.users().insertPermissionOnGroup(group1, "p3");
 
-    int deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, project.uuid(), null);
+    int deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, null, project);
 
     assertThat(deletedCount).isZero();
     assertThat(underTest.selectProjectPermissionsOfGroup(dbSession, null, project.uuid()))
@@ -823,7 +824,7 @@ public class GroupPermissionDaoTest {
     db.users().insertPermissionOnAnyone("p2");
     db.users().insertPermissionOnGroup(group1, "p3");
 
-    int deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, project.uuid(), group2.getUuid());
+    int deletedCount = underTest.deleteByRootComponentUuidAndGroupUuid(dbSession, group2.getUuid(), project);
 
     assertThat(deletedCount).isZero();
     assertThat(underTest.selectProjectPermissionsOfGroup(dbSession, group1.getUuid(), project.uuid()))
@@ -851,7 +852,7 @@ public class GroupPermissionDaoTest {
     assertThat(getProjectPermissionsForAnyOne(project)).containsOnly("p1", "p2");
     assertThat(getProjectPermissionsForGroup(project, group)).containsOnly("p1", "p2");
 
-    int deletedRows = underTest.deleteByRootComponentUuidAndPermission(dbSession, project.uuid(), "p1", project.name());
+    int deletedRows = underTest.deleteByRootComponentUuidAndPermission(dbSession, "p1", project);
 
     assertThat(deletedRows).isEqualTo(2);
     assertThat(getGlobalPermissionsForAnyone()).containsOnly("p1", "p2");
@@ -859,7 +860,7 @@ public class GroupPermissionDaoTest {
     assertThat(getProjectPermissionsForAnyOne(project)).containsOnly("p2");
     assertThat(getProjectPermissionsForGroup(project, group)).containsOnly("p2");
 
-    deletedRows = underTest.deleteByRootComponentUuidAndPermission(dbSession, project.uuid(), "p2", project.name());
+    deletedRows = underTest.deleteByRootComponentUuidAndPermission(dbSession,  "p2", project);
 
     assertThat(deletedRows).isEqualTo(2);
     assertThat(getGlobalPermissionsForAnyone()).containsOnly("p1", "p2");
@@ -875,7 +876,7 @@ public class GroupPermissionDaoTest {
     db.users().insertPermissionOnAnyone("p1");
     db.users().insertPermissionOnGroup(group, "p1");
 
-    assertThat(underTest.deleteByRootComponentUuidAndPermission(dbSession, project.uuid(), "p1", project.name())).isZero();
+    assertThat(underTest.deleteByRootComponentUuidAndPermission(dbSession, "p1", project)).isZero();
 
     assertThat(getGlobalPermissionsForAnyone()).containsOnly("p1");
     assertThat(getGlobalPermissionsForGroup(group)).containsOnly("p1");
@@ -892,7 +893,9 @@ public class GroupPermissionDaoTest {
     db.users().insertProjectPermissionOnGroup(group, "p1", project);
     db.users().insertProjectPermissionOnAnyone("p1", project);
 
-    assertThat(underTest.deleteByRootComponentUuidAndPermission(dbSession, "1324", "p1", "")).isZero();
+    ComponentDto anotherProject = new ComponentDto().setUuid("1324");
+
+    assertThat(underTest.deleteByRootComponentUuidAndPermission(dbSession, "p1", anotherProject)).isZero();
 
     assertThat(getGlobalPermissionsForAnyone()).containsOnly("p1");
     assertThat(getGlobalPermissionsForGroup(group)).containsOnly("p1");
@@ -907,7 +910,7 @@ public class GroupPermissionDaoTest {
     db.users().insertPermissionOnAnyone("p1");
     db.users().insertPermissionOnGroup(group, "p1");
 
-    assertThat(underTest.deleteByRootComponentUuidAndPermission(dbSession, project.uuid(), "p1", project.name())).isZero();
+    assertThat(underTest.deleteByRootComponentUuidAndPermission(dbSession, "p1", project)).isZero();
   }
 
   private Collection<String> getGlobalPermissionsForAnyone() {
index d15ca54dd36dae7e57dfa1178bb38261f424b9f5..94c5311e9165599626188cc7262d38efcefa195a 100644 (file)
@@ -55,14 +55,15 @@ public class GroupPermissionDaoWithPersisterTest {
       .setGroupUuid(group.getUuid())
       .setGroupName(group.getName())
       .setRole(ADMIN);
-    underTest.insert(dbSession, dto);
+    underTest.insert(dbSession, dto, null);
 
     verify(auditPersister).addGroupPermission(eq(dbSession), newValueCaptor.capture());
     PermissionNewValue newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid, PermissionNewValue::getGroupName, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
-      .containsExactly(dto.getUuid(), group.getUuid(), group.getName(), null, dto.getRole(), null);
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid,
+        PermissionNewValue::getGroupName, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(dto.getUuid(), group.getUuid(), group.getName(), null, dto.getRole(), null, null);
     assertThat(newValue.toString()).doesNotContain("projectUuid");
 
     underTest.delete(dbSession, ADMIN, group.getUuid(), group.getName(), null, null);
@@ -70,8 +71,9 @@ public class GroupPermissionDaoWithPersisterTest {
     verify(auditPersister).deleteGroupPermission(eq(dbSession), newValueCaptor.capture());
     newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid, PermissionNewValue::getGroupName, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid,
+        PermissionNewValue::getGroupName, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName)
       .containsExactly(null, group.getUuid(), group.getName(), null, ADMIN, null);
     assertThat(newValue.toString()).doesNotContain("permissionUuid");
   }
@@ -81,23 +83,25 @@ public class GroupPermissionDaoWithPersisterTest {
     GroupDto group = db.users().insertGroup();
     ComponentDto project = db.components().insertPrivateProject();
     GroupPermissionDto dto = getGroupPermission(group, project);
-    underTest.insert(dbSession, dto);
+    underTest.insert(dbSession, dto, project);
 
     verify(auditPersister).addGroupPermission(eq(dbSession), newValueCaptor.capture());
     PermissionNewValue newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid, PermissionNewValue::getGroupName, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
-      .containsExactly(dto.getUuid(), group.getUuid(), group.getName(), project.uuid(), dto.getRole(), project.name());
-    assertThat(newValue.toString()).contains("projectUuid");
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid,
+        PermissionNewValue::getGroupName, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(dto.getUuid(), group.getUuid(), group.getName(), project.uuid(), dto.getRole(), project.name(), "project");
+    assertThat(newValue.toString()).contains("componentUuid");
 
-    underTest.deleteByRootComponentUuid(dbSession, project.uuid(), project.name());
+    underTest.deleteByRootComponentUuid(dbSession, project);
 
     verify(auditPersister).deleteGroupPermission(eq(dbSession), newValueCaptor.capture());
     newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid, PermissionNewValue::getGroupName, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid,
+        PermissionNewValue::getGroupName, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName)
       .containsExactly(null, null, null, project.uuid(), null, project.name());
     assertThat(newValue.toString()).doesNotContain("permissionUuid");
   }
@@ -107,24 +111,26 @@ public class GroupPermissionDaoWithPersisterTest {
     GroupDto group = db.users().insertGroup();
     ComponentDto project = db.components().insertPrivateProject();
     GroupPermissionDto dto = getGroupPermission(group, project);
-    underTest.insert(dbSession, dto);
+    underTest.insert(dbSession, dto, project);
 
     verify(auditPersister).addGroupPermission(eq(dbSession), newValueCaptor.capture());
     PermissionNewValue newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid, PermissionNewValue::getGroupName, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
-      .containsExactly(dto.getUuid(), group.getUuid(), group.getName(), project.uuid(), dto.getRole(), project.name());
-    assertThat(newValue.toString()).contains("projectUuid");
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid,
+        PermissionNewValue::getGroupName, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(dto.getUuid(), group.getUuid(), group.getName(), project.uuid(), dto.getRole(), project.name(), "project");
+    assertThat(newValue.toString()).contains("componentUuid");
 
-    underTest.deleteByRootComponentUuidForAnyOne(dbSession, project.uuid(), project.name());
+    underTest.deleteByRootComponentUuidForAnyOne(dbSession, project);
 
     verify(auditPersister).deleteGroupPermission(eq(dbSession), newValueCaptor.capture());
     newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
-      .containsExactly(null, project.uuid(), null, project.name());
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid,
+        PermissionNewValue::getGroupName, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName)
+      .containsExactly(null, null, null, project.uuid(), null, project.name());
     assertThat(newValue.toString()).doesNotContain("permissionUuid");
   }
 
@@ -133,23 +139,24 @@ public class GroupPermissionDaoWithPersisterTest {
     GroupDto group = db.users().insertGroup();
     ComponentDto project = db.components().insertPrivateProject();
     GroupPermissionDto dto = getGroupPermission(group, project);
-    underTest.insert(dbSession, dto);
+    underTest.insert(dbSession, dto, project);
 
     verify(auditPersister).addGroupPermission(eq(dbSession), newValueCaptor.capture());
     PermissionNewValue newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid, PermissionNewValue::getGroupName, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
-      .containsExactly(dto.getUuid(), group.getUuid(), group.getName(), project.uuid(), dto.getRole(), project.name());
-    assertThat(newValue.toString()).contains("projectUuid");
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid,
+        PermissionNewValue::getGroupName, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(dto.getUuid(), group.getUuid(), group.getName(), project.uuid(), dto.getRole(), project.name(), "project");
+    assertThat(newValue.toString()).contains("componentUuid");
 
-    underTest.deleteByRootComponentUuidAndPermission(dbSession, project.uuid(), dto.getRole(), project.name());
+    underTest.deleteByRootComponentUuidAndPermission(dbSession, dto.getRole(), project);
 
     verify(auditPersister).deleteGroupPermission(eq(dbSession), newValueCaptor.capture());
     newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getGroupUuid, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName)
       .containsExactly(null, null, project.uuid(), ADMIN, project.name());
     assertThat(newValue.toString()).doesNotContain("permissionUuid");
   }
index eec32dd69f6802cfdbb7dd9c0b53923ede60edf7..a276c319cd4abf4c24d0acc06f048922ad4945c1 100644 (file)
@@ -397,10 +397,10 @@ public class UserPermissionDaoTest {
     addProjectPermission("perm", user2, project1);
 
     // no such provision -> ignore
-    underTest.deleteProjectPermission(dbSession, user1.getUuid(), "anotherPerm", project1.uuid(), project1.name());
+    underTest.deleteProjectPermission(dbSession, user1.getUuid(), "anotherPerm", project1);
     assertThat(db.countRowsOfTable(dbSession, "user_roles")).isEqualTo(4);
 
-    underTest.deleteProjectPermission(dbSession, user1.getUuid(), "perm", project1.uuid(), project1.name());
+    underTest.deleteProjectPermission(dbSession, user1.getUuid(), "perm", project1);
     assertThatProjectPermissionDoesNotExist(user1, "perm", project1);
     assertThat(db.countRowsOfTable(dbSession, "user_roles")).isEqualTo(3);
   }
@@ -416,7 +416,7 @@ public class UserPermissionDaoTest {
     addProjectPermission("perm", user2, project1);
     addProjectPermission("perm", user1, project2);
 
-    underTest.deleteProjectPermissions(dbSession, project1.uuid(), project1.name());
+    underTest.deleteProjectPermissions(dbSession, project1);
     assertThat(db.countRowsOfTable(dbSession, "user_roles")).isEqualTo(2);
     assertThatProjectHasNoPermissions(project1);
   }
@@ -520,8 +520,9 @@ public class UserPermissionDaoTest {
   public void deleteProjectPermissionOfAnyUser_has_no_effect_if_specified_component_does_not_exist() {
     UserDto user = insertUser();
     db.users().insertPermissionOnUser(user, SCAN);
+    ComponentDto component = newPrivateProjectDto();
 
-    int deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, "124", SCAN.getKey(), "");
+    int deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, SCAN.getKey(), component);
 
     assertThat(deletedCount).isZero();
     assertThat(underTest.selectGlobalPermissionsOfUser(dbSession, user.getUuid())).containsOnly(SCAN.getKey());
@@ -533,7 +534,7 @@ public class UserPermissionDaoTest {
     db.users().insertPermissionOnUser(user, SCAN);
     ComponentDto project = randomPublicOrPrivateProject();
 
-    int deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, project.uuid(), SCAN.getKey(), "");
+    int deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, SCAN.getKey(), project);
 
     assertThat(deletedCount).isZero();
     assertThat(underTest.selectGlobalPermissionsOfUser(dbSession, user.getUuid())).containsOnly(SCAN.getKey());
@@ -546,7 +547,7 @@ public class UserPermissionDaoTest {
     ComponentDto project = randomPublicOrPrivateProject();
     db.users().insertProjectPermissionOnUser(user, SCAN.getKey(), project);
 
-    int deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, project.uuid(), "p1", project.name());
+    int deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, "p1", project);
 
     assertThat(deletedCount).isZero();
     assertThat(underTest.selectGlobalPermissionsOfUser(dbSession, user.getUuid())).containsOnly(SCAN.getKey());
@@ -567,7 +568,7 @@ public class UserPermissionDaoTest {
     db.users().insertProjectPermissionOnUser(user2, SCAN.getKey(), project2);
     db.users().insertProjectPermissionOnUser(user2, PROVISION_PROJECTS.getKey(), project2);
 
-    int deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, project1.uuid(), SCAN.getKey(), project1.name());
+    int deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, SCAN.getKey(), project1);
 
     assertThat(deletedCount).isEqualTo(2);
     assertThat(underTest.selectGlobalPermissionsOfUser(dbSession, user1.getUuid())).containsOnly(SCAN.getKey());
@@ -577,7 +578,7 @@ public class UserPermissionDaoTest {
     assertThat(underTest.selectProjectPermissionsOfUser(dbSession, user1.getUuid(), project2.uuid())).containsOnly(SCAN.getKey());
     assertThat(underTest.selectProjectPermissionsOfUser(dbSession, user2.getUuid(), project2.uuid())).containsOnly(SCAN.getKey(), PROVISION_PROJECTS.getKey());
 
-    deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, project2.uuid(), SCAN.getKey(), project2.name());
+    deletedCount = underTest.deleteProjectPermissionOfAnyUser(dbSession, SCAN.getKey(), project2);
 
     assertThat(deletedCount).isEqualTo(2);
     assertThat(underTest.selectGlobalPermissionsOfUser(dbSession, user1.getUuid())).containsOnly(SCAN.getKey());
index b0c37ac949254f2e80664b6705c3462aecc9891e..dbbfd2c85e6b03e0e8471e0a85b3a8424da12f67 100644 (file)
@@ -58,9 +58,9 @@ public class UserPermissionDaoWithPersisterTest {
     verify(auditPersister).addUserPermission(eq(dbSession), newValueCaptor.capture());
     PermissionNewValue newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
-      .containsExactly(dto.getUuid(), user.getUuid(), null, dto.getPermission(), null);
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(dto.getUuid(), user.getUuid(), null, dto.getPermission(), null, null);
     assertThat(newValue.toString()).doesNotContain("projectUuid");
 
     underTest.deleteGlobalPermission(dbSession, user.getUuid(), SYSTEM_ADMIN);
@@ -68,8 +68,8 @@ public class UserPermissionDaoWithPersisterTest {
     verify(auditPersister).deleteUserPermission(eq(dbSession), newValueCaptor.capture());
     newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName)
       .containsExactly(null, user.getUuid(), null, dto.getPermission(), null);
     assertThat(newValue.toString()).doesNotContain("permissionUuid");
   }
@@ -84,20 +84,55 @@ public class UserPermissionDaoWithPersisterTest {
     verify(auditPersister).addUserPermission(eq(dbSession), newValueCaptor.capture());
     PermissionNewValue newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
-      .containsExactly(dto.getUuid(), user.getUuid(), project.uuid(), dto.getPermission(), project.name());
-    assertThat(newValue.toString()).contains("projectUuid");
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(dto.getUuid(), user.getUuid(), project.uuid(), dto.getPermission(), project.name(), "project");
+    assertThat(newValue.toString()).contains("componentUuid");
 
-    underTest.deleteProjectPermission(dbSession, user.getUuid(), SYSTEM_ADMIN, project.projectUuid(), project.name());
+    underTest.deleteProjectPermission(dbSession, user.getUuid(), SYSTEM_ADMIN, project);
 
     verify(auditPersister).deleteUserPermission(eq(dbSession), newValueCaptor.capture());
     newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName)
       .containsExactly(null, user.getUuid(), project.uuid(), dto.getPermission(), project.name());
-    assertThat(newValue.toString()).doesNotContain("permissionUuid");
+    assertThat(newValue.toString())
+      .doesNotContain("permissionUuid");
+  }
+
+  @Test
+  public void userPortfolioPermissionIsPersisted() {
+    UserDto user = insertUser(u -> u.setLogin("login1").setName("Marius").setEmail("email1@email.com"));
+    ComponentDto portfolio = db.components().insertPublicPortfolio();
+    UserPermissionDto dto = new UserPermissionDto(Uuids.create(), SYSTEM_ADMIN, user.getUuid(), portfolio.uuid());
+    underTest.insert(dbSession, dto, portfolio);
+
+    verify(auditPersister).addUserPermission(eq(dbSession), newValueCaptor.capture());
+    PermissionNewValue newValue = newValueCaptor.getValue();
+    assertThat(newValue)
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(dto.getUuid(), user.getUuid(), portfolio.uuid(), dto.getPermission(), portfolio.name(), "portfolio");
+    assertThat(newValue.toString())
+      .contains("componentUuid");
+  }
+
+  @Test
+  public void userApplicationPermissionIsPersisted() {
+    UserDto user = insertUser(u -> u.setLogin("login1").setName("Marius").setEmail("email1@email.com"));
+    ComponentDto application = db.components().insertPublicApplication();
+    UserPermissionDto dto = new UserPermissionDto(Uuids.create(), SYSTEM_ADMIN, user.getUuid(), application.uuid());
+    underTest.insert(dbSession, dto, application);
+
+    verify(auditPersister).addUserPermission(eq(dbSession), newValueCaptor.capture());
+    PermissionNewValue newValue = newValueCaptor.getValue();
+    assertThat(newValue)
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(dto.getUuid(), user.getUuid(), application.uuid(), dto.getPermission(), application.name(), "application");
+    assertThat(newValue.toString())
+      .contains("componentUuid");
   }
 
   @Test
@@ -106,14 +141,14 @@ public class UserPermissionDaoWithPersisterTest {
     ComponentDto project = db.components().insertPrivateProject();
     UserPermissionDto dto = new UserPermissionDto(Uuids.create(), SCAN_EXECUTION, user.getUuid(), project.uuid());
     underTest.insert(dbSession, dto, project);
-    underTest.deleteProjectPermissionOfAnyUser(dbSession, project.projectUuid(), SCAN_EXECUTION, project.name());
+    underTest.deleteProjectPermissionOfAnyUser(dbSession, SCAN_EXECUTION, project);
 
     verify(auditPersister).deleteUserPermission(eq(dbSession), newValueCaptor.capture());
     PermissionNewValue newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
-      .containsExactly(null, null, project.uuid(), SCAN_EXECUTION, project.name());
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(null, null, project.uuid(), SCAN_EXECUTION, project.name(), "project");
     assertThat(newValue.toString()).doesNotContain("userUuid");
   }
 
@@ -128,9 +163,9 @@ public class UserPermissionDaoWithPersisterTest {
     verify(auditPersister).deleteUserPermission(eq(dbSession), newValueCaptor.capture());
     PermissionNewValue newValue = newValueCaptor.getValue();
     assertThat(newValue)
-      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getProjectUuid,
-        PermissionNewValue::getRole, PermissionNewValue::getProjectName)
-      .containsExactly(null, user.getUuid(), null, null, null);
+      .extracting(PermissionNewValue::getPermissionUuid, PermissionNewValue::getUserUuid, PermissionNewValue::getComponentUuid,
+        PermissionNewValue::getRole, PermissionNewValue::getComponentName, PermissionNewValue::getQualifier)
+      .containsExactly(null, user.getUuid(), null, null, null, null);
     assertThat(newValue.toString()).contains("userUuid");
   }
 
index e560a5cc4fcd275989540a27987303fbe751fba2..cdb218b2025404a3bc8f2a074315641a24407060 100644 (file)
@@ -36,6 +36,7 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.sonar.api.impl.utils.AlwaysIncreasingSystem2;
+import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.web.UserRole;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
@@ -646,10 +647,10 @@ public class PropertiesDaoTest {
   public void select_by_key_and_matching_value() {
     ComponentDto project1 = db.components().insertPrivateProject();
     ComponentDto project2 = db.components().insertPrivateProject();
-    db.properties().insertProperties(null, project1.name(), newComponentPropertyDto("key", "value", project1));
-    db.properties().insertProperties(null, project2.name(), newComponentPropertyDto("key", "value", project2));
-    db.properties().insertProperties(null, null, newGlobalPropertyDto("key", "value"));
-    db.properties().insertProperties(null, project1.name(), newComponentPropertyDto("another key", "value", project1));
+    db.properties().insertProperties(null, project1.name(), project1.qualifier(), newComponentPropertyDto("key", "value", project1));
+    db.properties().insertProperties(null, project2.name(), project2.qualifier(), newComponentPropertyDto("key", "value", project2));
+    db.properties().insertProperties(null, null, null, newGlobalPropertyDto("key", "value"));
+    db.properties().insertProperties(null, project1.name(), project1.qualifier(), newComponentPropertyDto("another key", "value", project1));
 
     assertThat(underTest.selectByKeyAndMatchingValue(db.getSession(), "key", "value"))
       .extracting(PropertyDto::getValue, PropertyDto::getComponentUuid)
@@ -666,12 +667,12 @@ public class PropertiesDaoTest {
     ComponentDto project1 = db.components().insertPrivateProject();
     ComponentDto file1 = db.components().insertComponent(ComponentTesting.newFileDto(project1));
     ComponentDto project2 = db.components().insertPrivateProject();
-    db.properties().insertProperties(user1.getLogin(), project1.name(), newPropertyDto("key", "1", project1, user1));
-    db.properties().insertProperties(user1.getLogin(), project2.name(), newPropertyDto("key", "2", project2, user1));
-    db.properties().insertProperties(user1.getLogin(), file1.name(), newPropertyDto("key", "3", file1, user1));
-    db.properties().insertProperties(user1.getLogin(), project1.name(), newPropertyDto("another key", "4", project1, user1));
-    db.properties().insertProperties(user2.getLogin(), project1.name(), newPropertyDto("key", "5", project1, user2));
-    db.properties().insertProperties(null, null, newGlobalPropertyDto("key", "global"));
+    db.properties().insertProperties(user1.getLogin(), project1.name(), project1.qualifier(), newPropertyDto("key", "1", project1, user1));
+    db.properties().insertProperties(user1.getLogin(), project2.name(), project2.qualifier(), newPropertyDto("key", "2", project2, user1));
+    db.properties().insertProperties(user1.getLogin(), file1.name(), null, newPropertyDto("key", "3", file1, user1));
+    db.properties().insertProperties(user1.getLogin(), project1.name(), project1.qualifier(), newPropertyDto("another key", "4", project1, user1));
+    db.properties().insertProperties(user2.getLogin(), project1.name(), project1.qualifier(), newPropertyDto("key", "5", project1, user2));
+    db.properties().insertProperties(null, null, null, newGlobalPropertyDto("key", "global"));
 
     assertThat(underTest.selectByKeyAndUserUuidAndComponentQualifier(db.getSession(), "key", user1.getUuid(), "TRK"))
       .extracting(PropertyDto::getValue).containsExactlyInAnyOrder("1", "2");
@@ -904,7 +905,7 @@ public class PropertiesDaoTest {
     String uuid6 = insertProperty("user.two", "two", null, "100", "login", null);
     String uuid7 = insertProperty("other.one", "one", "project3", null, null, "project3");
 
-    underTest.deleteProjectProperty("struts.one", "project1", "project1");
+    underTest.deleteProjectProperty("struts.one", "project1", "project1", Qualifiers.PROJECT);
 
     assertThatPropertiesRowByUuid(uuid1)
       .hasKey("global.one")
@@ -1224,7 +1225,7 @@ public class PropertiesDaoTest {
 
   private void insertProperties(@Nullable String userLogin, @Nullable String projectName, PropertyDto... properties) {
     for (PropertyDto propertyDto : properties) {
-      underTest.saveProperty(session, propertyDto, userLogin, projectName);
+      underTest.saveProperty(session, propertyDto, userLogin, projectName, Qualifiers.PROJECT);
     }
     session.commit();
   }
@@ -1235,7 +1236,7 @@ public class PropertiesDaoTest {
       .setComponentUuid(componentUuid)
       .setUserUuid(userUuid)
       .setValue(value);
-    db.properties().insertProperty(dto, projectName, userLogin);
+    db.properties().insertProperty(dto, projectName, Qualifiers.PROJECT, userLogin);
 
     return (String) db.selectFirst(session, "select uuid as \"uuid\" from properties" +
       " where prop_key='" + key + "'" +
index d0349a5906150ad11fc6985d8da3001d5ecb20a8..26ef4bf051d63987624c00b53392eaed4d60cc23 100644 (file)
@@ -28,6 +28,7 @@ import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.sonar.api.impl.utils.AlwaysIncreasingSystem2;
+import org.sonar.api.resources.Qualifiers;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.DbTester;
@@ -121,7 +122,7 @@ public class PropertiesDaoWithPersisterTest {
     when(auditPersister.isTrackedProperty(KEY)).thenReturn(true);
 
     PropertyDto propertyDto = getPropertyDto(KEY);
-    underTest.saveProperty(session, propertyDto, USER_LOGIN, PROJECT_NAME);
+    underTest.saveProperty(session, propertyDto, USER_LOGIN, PROJECT_NAME, Qualifiers.PROJECT);
 
     verify(auditPersister).isTrackedProperty(KEY);
     verify(auditPersister).addProperty(any(), newValueCaptor.capture(), eq(false));
@@ -129,10 +130,50 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValue)
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName, PropertyNewValue::getQualifier)
       .containsExactly(propertyDto.getKey(), propertyDto.getValue(), propertyDto.getUserUuid(),
-        USER_LOGIN, propertyDto.getComponentUuid(), PROJECT_NAME);
-    assertThat(newValue.toString()).contains("projectUuid");
+        USER_LOGIN, propertyDto.getComponentUuid(), PROJECT_NAME, "project");
+    assertThat(newValue.toString()).contains("componentUuid");
+  }
+
+  @Test
+  public void saveApplicationTrackedPropertyIsPersisted() {
+    when(auditPersister.isTrackedProperty(KEY)).thenReturn(true);
+
+    PropertyDto propertyDto = getPropertyDto(KEY);
+    underTest.saveProperty(session, propertyDto, USER_LOGIN, "app-name", Qualifiers.APP);
+
+    verify(auditPersister).isTrackedProperty(KEY);
+    verify(auditPersister).addProperty(any(), newValueCaptor.capture(), eq(false));
+    PropertyNewValue newValue = newValueCaptor.getValue();
+    assertThat(newValue)
+      .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
+        PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName, PropertyNewValue::getQualifier)
+      .containsExactly(propertyDto.getKey(), propertyDto.getValue(), propertyDto.getUserUuid(),
+        USER_LOGIN, propertyDto.getComponentUuid(), "app-name", "application");
+    assertThat(newValue.toString())
+      .contains("componentUuid");
+  }
+
+  @Test
+  public void savePortfolioTrackedPropertyIsPersisted() {
+    when(auditPersister.isTrackedProperty(KEY)).thenReturn(true);
+
+    PropertyDto propertyDto = getPropertyDto(KEY);
+    underTest.saveProperty(session, propertyDto, USER_LOGIN, "portfolio-name", Qualifiers.VIEW);
+
+    verify(auditPersister).isTrackedProperty(KEY);
+    verify(auditPersister).addProperty(any(), newValueCaptor.capture(), eq(false));
+    PropertyNewValue newValue = newValueCaptor.getValue();
+    assertThat(newValue)
+      .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
+        PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName, PropertyNewValue::getQualifier)
+      .containsExactly(propertyDto.getKey(), propertyDto.getValue(), propertyDto.getUserUuid(),
+        USER_LOGIN, propertyDto.getComponentUuid(), "portfolio-name", "portfolio");
+    assertThat(newValue.toString())
+      .contains("componentUuid");
   }
 
   @Test
@@ -140,7 +181,7 @@ public class PropertiesDaoWithPersisterTest {
     when(auditPersister.isTrackedProperty(SECURED_KEY)).thenReturn(true);
 
     PropertyDto propertyDto = getPropertyDto(SECURED_KEY);
-    underTest.saveProperty(session, propertyDto, USER_LOGIN, PROJECT_NAME);
+    underTest.saveProperty(session, propertyDto, USER_LOGIN, PROJECT_NAME, Qualifiers.PROJECT);
 
     verify(auditPersister).isTrackedProperty(SECURED_KEY);
     verify(auditPersister).addProperty(any(), newValueCaptor.capture(), eq(false));
@@ -148,10 +189,10 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValue)
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName, PropertyNewValue::getQualifier)
       .containsExactly(propertyDto.getKey(), null, propertyDto.getUserUuid(),
-        USER_LOGIN, propertyDto.getComponentUuid(), PROJECT_NAME);
-    assertThat(newValue.toString()).contains("projectUuid");
+        USER_LOGIN, propertyDto.getComponentUuid(), PROJECT_NAME, "project");
+    assertThat(newValue.toString()).contains("componentUuid");
   }
 
   @Test
@@ -167,7 +208,7 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValue)
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(query.key(), null, query.userUuid(),
         null, query.componentUuid(), null);
     assertThat(newValue.toString()).doesNotContain("userLogin");
@@ -189,7 +230,7 @@ public class PropertiesDaoWithPersisterTest {
     when(auditPersister.isTrackedProperty(KEY)).thenReturn(true);
 
     PropertyDto propertyDto = getPropertyDto(KEY);
-    underTest.delete(session, propertyDto, USER_LOGIN, PROJECT_NAME);
+    underTest.delete(session, propertyDto, USER_LOGIN, PROJECT_NAME, Qualifiers.PROJECT);
 
     verify(auditPersister).isTrackedProperty(KEY);
     verify(auditPersister).deleteProperty(any(), newValueCaptor.capture(), eq(false));
@@ -197,7 +238,7 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValue)
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(propertyDto.getKey(), propertyDto.getValue(), propertyDto.getUserUuid(),
         USER_LOGIN, propertyDto.getComponentUuid(), PROJECT_NAME);
     assertThat(newValue.toString()).contains("userLogin");
@@ -208,7 +249,7 @@ public class PropertiesDaoWithPersisterTest {
     when(auditPersister.isTrackedProperty(KEY)).thenReturn(false);
 
     PropertyDto propertyDto = getPropertyDto(KEY);
-    underTest.delete(session, propertyDto, USER_LOGIN, PROJECT_NAME);
+    underTest.delete(session, propertyDto, USER_LOGIN, PROJECT_NAME, Qualifiers.PROJECT);
 
     verify(auditPersister).isTrackedProperty(KEY);
     verifyNoMoreInteractions(auditPersister);
@@ -217,7 +258,7 @@ public class PropertiesDaoWithPersisterTest {
   @Test
   public void deleteTrackedProjectPropertyIsPersisted() {
     when(auditPersister.isTrackedProperty(KEY)).thenReturn(true);
-    underTest.deleteProjectProperty(KEY, PROJECT_UUID, PROJECT_NAME);
+    underTest.deleteProjectProperty(KEY, PROJECT_UUID, PROJECT_NAME, Qualifiers.PROJECT);
 
     verify(auditPersister).isTrackedProperty(KEY);
     verify(auditPersister).deleteProperty(any(), newValueCaptor.capture(), eq(false));
@@ -225,7 +266,7 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValue)
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(KEY, null, null,
         null, PROJECT_UUID, PROJECT_NAME);
     assertThat(newValue.toString()).doesNotContain("userLogin");
@@ -236,7 +277,7 @@ public class PropertiesDaoWithPersisterTest {
     when(auditPersister.isTrackedProperty(KEY)).thenReturn(false);
 
     PropertyDto propertyDto = getPropertyDto(KEY);
-    underTest.delete(session, propertyDto, USER_LOGIN, PROJECT_NAME);
+    underTest.delete(session, propertyDto, USER_LOGIN, PROJECT_NAME, Qualifiers.PROJECT);
 
     verify(auditPersister).isTrackedProperty(KEY);
     verifyNoMoreInteractions(auditPersister);
@@ -254,7 +295,7 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValue)
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(KEY, VALUE, null,
         null, null, null);
     assertThat(newValue.toString()).doesNotContain("projectUuid");
@@ -282,7 +323,7 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValue)
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(KEY, null, null,
         null, null, null);
     assertThat(newValue.toString()).doesNotContain("projectUuid");
@@ -311,14 +352,14 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValues.get(0))
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(KEY, null, user.getUuid(),
         user.getLogin(), null, null);
     assertThat(newValues.get(0).toString()).contains("userUuid");
     assertThat(newValues.get(1))
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(SECURED_KEY, null, user.getUuid(),
         user.getLogin(), null, null);
     assertThat(newValues.get(1).toString()).doesNotContain("value");
@@ -337,14 +378,14 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValues.get(0))
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(KEY, null, null,
         user.getLogin(), null, null);
     assertThat(newValues.get(0).toString()).contains("userLogin");
     assertThat(newValues.get(1))
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(SECURED_KEY, null, null,
         user.getLogin(), null, null);
     assertThat(newValues.get(1).toString()).doesNotContain("value");
@@ -362,7 +403,7 @@ public class PropertiesDaoWithPersisterTest {
     assertThat(newValue)
       .extracting(PropertyNewValue::getPropertyKey, PropertyNewValue::getPropertyValue,
         PropertyNewValue::getUserUuid, PropertyNewValue::getUserLogin,
-        PropertyNewValue::getProjectUuid, PropertyNewValue::getProjectName)
+        PropertyNewValue::getComponentUuid, PropertyNewValue::getComponentName)
       .containsExactly(KEY, VALUE, null,
         null, null, null);
     assertThat(newValue.toString()).doesNotContain("projectUuid");
@@ -418,12 +459,9 @@ public class PropertiesDaoWithPersisterTest {
       .setComponentUuid(project.uuid())
       .setUserUuid(user.getUuid())
       .setValue(value);
-    db.properties().insertProperty(dto1, project.name(), user.getLogin());
-    db.properties().insertProperty(dto2, project.name(), user.getLogin());
-    db.properties().insertProperty(dto3, project.name(), user.getLogin());
-    List<PropertyDto> list = db.getDbClient().propertiesDao().selectByKeyAndMatchingValue(session, KEY, VALUE);
-    list = db.getDbClient().propertiesDao().selectByKeyAndMatchingValue(session, ANOTHER_KEY, VALUE);
-    list = db.getDbClient().propertiesDao().selectByKeyAndMatchingValue(session, SECURED_KEY, VALUE);
+    db.properties().insertProperty(dto1, project.name(), project.qualifier(), user.getLogin());
+    db.properties().insertProperty(dto2, project.name(), project.qualifier(), user.getLogin());
+    db.properties().insertProperty(dto3, project.name(), project.qualifier(), user.getLogin());
     return user;
   }
 }
index efa49b31960e7f815d5187e6b0c8f17b6847a39b..6aa13a36cb03f6f4831d3de3ccbea5e537e06ec8 100644 (file)
@@ -1646,7 +1646,7 @@ public class PurgeDaoTest {
         .setKey(randomAlphabetic(3))
         .setValue(randomAlphabetic(3))
         .setComponentUuid(componentDto.uuid()),
-      componentDto.name(), null));
+      componentDto.name(), componentDto.qualifier(), null));
   }
 
   private void insertPropertyFor(Collection<BranchDto> branches) {
@@ -1654,7 +1654,7 @@ public class PurgeDaoTest {
         .setKey(randomAlphabetic(3))
         .setValue(randomAlphabetic(3))
         .setComponentUuid(branchDto.getUuid()),
-      branchDto.getKey(), null));
+      branchDto.getKey(), null,null));
   }
 
   private Stream<String> getComponentUuidsOfMeasures() {
index 4e7344ee6832680c9a2474850552f7543ee29b35..22d7cf8bfc18a0198c73bae8593a9930f5a79adb 100644 (file)
@@ -62,8 +62,9 @@ public class PurgeDaoWithAuditTest {
     verify(auditPersister).deleteComponent(any(DbSession.class), newValueCaptor.capture(), eq(project.qualifier()));
     ComponentNewValue componentNewValue = newValueCaptor.getValue();
     assertThat(componentNewValue)
-      .extracting(ComponentNewValue::getComponentUuid, ComponentNewValue::getComponentName, ComponentNewValue::getKey)
-      .containsExactly(project.uuid(), project.name(), project.getKey());
+      .extracting(ComponentNewValue::getComponentUuid, ComponentNewValue::getComponentName, ComponentNewValue::getKey,
+        ComponentNewValue::getQualifier)
+      .containsExactly(project.uuid(), project.name(), project.getKey(), "project");
   }
 
 }
index b31b05d85bd371d83ea081509a85332f4a6d7cb9..fd75fb402273c72eb895fdbce516738675febe16 100644 (file)
@@ -43,7 +43,7 @@ public class FavoriteDbTester {
         .setKey(PROP_FAVORITE_KEY)
         .setUserUuid(userUuid)
         .setComponentUuid(componentDto.uuid()),
-      userLogin, componentDto.name());
+      userLogin, componentDto.name(), componentDto.qualifier());
     dbSession.commit();
   }
 
index c53992da6e1e22a622bd8b89d1692571af73a5a7..aac7f1fdbf4b23a13218c488ef7f92579c55b587 100644 (file)
@@ -25,7 +25,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import javax.annotation.Nullable;
-import org.sonar.core.util.UuidFactory;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.DbTester;
@@ -47,20 +46,23 @@ public class PropertyDbTester {
     this.dbSession = db.getSession();
   }
 
-  public PropertyDto insertProperty(PropertyDto property, @Nullable String componentName, @Nullable String userLogin) {
-    dbClient.propertiesDao().saveProperty(dbSession, property, userLogin, componentName);
+  public PropertyDto insertProperty(PropertyDto property, @Nullable String componentName, @Nullable String qualifier,
+    @Nullable String userLogin) {
+    dbClient.propertiesDao().saveProperty(dbSession, property, userLogin, qualifier, componentName);
     db.commit();
 
     return property;
   }
 
-  public void insertProperties(@Nullable String userLogin, @Nullable String projectName, PropertyDto... properties) {
-    insertProperties(asList(properties), userLogin, projectName);
+  public void insertProperties(@Nullable String userLogin, @Nullable String projectName, @Nullable String qualifier,
+    PropertyDto... properties) {
+    insertProperties(asList(properties), userLogin, qualifier, projectName);
   }
 
-  public void insertProperties(List<PropertyDto> properties, @Nullable String userLogin, @Nullable String projectName) {
+  public void insertProperties(List<PropertyDto> properties, @Nullable String userLogin, @Nullable String projectName,
+    @Nullable String qualifier) {
     for (PropertyDto propertyDto : properties) {
-      dbClient.propertiesDao().saveProperty(dbSession, propertyDto, userLogin, projectName);
+      dbClient.propertiesDao().saveProperty(dbSession, propertyDto, userLogin, projectName, qualifier);
     }
     dbSession.commit();
   }
@@ -88,7 +90,8 @@ public class PropertyDbTester {
       propertyDtos.add(newGlobalPropertyDto().setKey(settingBaseKey).setValue(idsValue));
     }
     String componentName = componentDto == null ? null : componentDto.name();
-    insertProperties(propertyDtos, null, componentName);
+    String qualififer = componentDto == null ? null : componentDto.qualifier();
+    insertProperties(propertyDtos, null, componentName, qualififer);
   }
 
   public PropertyDbTester verifyInternal(String key, @Nullable String expectedValue) {
index feefd300e54c81a3cac8eac1837343006c34b4a7..2a5ac2dfa86991f691c1554fe750eb78d9d000d8 100644 (file)
@@ -200,7 +200,7 @@ public class UserDbTester {
       .setUuid(Uuids.createFast())
       .setGroupUuid(null)
       .setRole(permission);
-    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto);
+    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto, null);
     db.commit();
     return dto;
   }
@@ -214,7 +214,7 @@ public class UserDbTester {
       .setUuid(Uuids.createFast())
       .setGroupUuid(group.getUuid())
       .setRole(permission);
-    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto);
+    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto, null);
     db.commit();
     return dto;
   }
@@ -239,7 +239,7 @@ public class UserDbTester {
       .setRole(permission)
       .setComponentUuid(project.uuid())
       .setComponentName(project.name());
-    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto);
+    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto, project);
     db.commit();
     return dto;
   }
@@ -260,7 +260,7 @@ public class UserDbTester {
       .setRole(permission)
       .setComponentUuid(project.uuid())
       .setComponentName(project.name());
-    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto);
+    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto, project);
     db.commit();
     return dto;
   }
@@ -306,7 +306,7 @@ public class UserDbTester {
   }
 
   public void deletePermissionFromUser(ComponentDto project, UserDto user, String permission) {
-    db.getDbClient().userPermissionDao().deleteProjectPermission(db.getSession(), user.getUuid(), permission, project.uuid(), project.name());
+    db.getDbClient().userPermissionDao().deleteProjectPermission(db.getSession(), user.getUuid(), permission, project);
     db.commit();
   }
 
index 6deb01b0806a5645c767ee19a85f09a343015df0..e5abb24554061efce88b611293f75baf893693a2 100644 (file)
@@ -63,7 +63,7 @@ public class FavoriteUpdater {
         .setComponentUuid(componentDto.uuid())
         .setUserUuid(userUuid),
       userLogin,
-      componentDto.name());
+      componentDto.name(), componentDto.qualifier());
   }
 
   /**
@@ -80,7 +80,7 @@ public class FavoriteUpdater {
         .setKey(PROP_FAVORITE_KEY)
         .setComponentUuid(component.uuid())
         .setUserUuid(userUuid),
-      userLogin, component.name());
+      userLogin, component.name(), component.qualifier());
     checkArgument(result == 1, "Component '%s' is not a favorite", component.getDbKey());
   }
 }
index 0851cd9b1ba6a4bc63d2854d9debc35e149d5570..74a37ad19a688dd107c0f9983e00b477468e2c0a 100644 (file)
@@ -102,7 +102,7 @@ public class StartupMetadataProviderTest {
 
   private void testLoadingFromDatabase(SonarRuntime runtime, boolean isStartupLeader) {
     dbTester.properties().insertProperty(new PropertyDto().setKey(CoreProperties.SERVER_STARTTIME).setValue(formatDateTime(A_DATE)),
-      null, null);
+      null, null, null);
     when(webServer.isStartupLeader()).thenReturn(isStartupLeader);
 
     StartupMetadata metadata = underTest.provide(system, runtime, webServer, dbTester.getDbClient());
index 70e31993887f85dcaf87e67b58d2d18620df3359..178ec824b7aaf2bd740f52ca96e2bceb7f42623e 100644 (file)
@@ -54,7 +54,7 @@ public class PluginConsentVerifier implements Startable {
       if (hasExternalPlugins && NOT_ACCEPTED == PluginRiskConsent.valueOf(property.getValue())) {
         addWarningInSonarDotLog();
         property.setValue(REQUIRED.name());
-        dbClient.propertiesDao().saveProperty(session, property, null, null);
+        dbClient.propertiesDao().saveProperty(session, property, null, null, null);
         session.commit();
       } else if (!hasExternalPlugins && REQUIRED == PluginRiskConsent.valueOf(property.getValue())) {
         dbClient.propertiesDao().deleteGlobalProperty(PLUGINS_RISK_CONSENT, session);
index aabae7c3665373baab0342d9f24be91292b3f9fd..07d0d37da1cf6dc9fc322d355bea3942f93c4d7a 100644 (file)
@@ -46,6 +46,6 @@ public class ProjectDefaultVisibility {
   public void set(DbSession dbSession, Visibility visibility) {
     dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto()
       .setKey(PROJECTS_DEFAULT_VISIBILITY_PROPERTY_NAME)
-      .setValue(visibility.getLabel()), null, null);
+      .setValue(visibility.getLabel()), null, null, null);
   }
 }
index d0269c968910a34337850daa8bc4d9fdfe11fc66..9440c0225da28e3a0ad84bf34c21da889c94d283 100644 (file)
@@ -233,12 +233,12 @@ public class UserUpdaterUpdateTest {
     ComponentDto project1 = db.components().insertPrivateProject();
     ComponentDto project2 = db.components().insertPrivateProject();
     ComponentDto anotherProject = db.components().insertPrivateProject();
-    db.properties().insertProperties(oldUser.getLogin(), project1.name(),
+    db.properties().insertProperties(oldUser.getLogin(), project1.name(), project1.qualifier(),
       new PropertyDto().setKey(DEFAULT_ISSUE_ASSIGNEE).setValue(oldUser.getLogin()),
       new PropertyDto().setKey(DEFAULT_ISSUE_ASSIGNEE).setValue(oldUser.getLogin()).setComponentUuid(project1.uuid()));
-    db.properties().insertProperties(oldUser.getLogin(), project2.name(),
+    db.properties().insertProperties(oldUser.getLogin(), project2.name(), project2.qualifier(),
       new PropertyDto().setKey(DEFAULT_ISSUE_ASSIGNEE).setValue(oldUser.getLogin()).setComponentUuid(project2.uuid()));
-    db.properties().insertProperties(oldUser.getLogin(), anotherProject.name(),
+    db.properties().insertProperties(oldUser.getLogin(), anotherProject.name(), anotherProject.qualifier(),
       new PropertyDto().setKey(DEFAULT_ISSUE_ASSIGNEE).setValue("another login").setComponentUuid(anotherProject.uuid()));
     userIndexer.indexAll();
 
index f64d38a65e3fe553af236f4f195c7a179a347712..cd50694adce3ed18efdac6104318c79ce33b5f81 100644 (file)
@@ -72,7 +72,7 @@ public class PersistentSettings {
     if (value == null) {
       dbClient.propertiesDao().deleteGlobalProperty(key, dbSession);
     } else {
-      dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto().setKey(key).setValue(value), null, null);
+      dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto().setKey(key).setValue(value), null, null, null);
     }
     // refresh the cache of settings
     delegate.setProperty(key, value);
index 700f7819c1e8756553e046ead75eec9e24bd02d2..f87fa6f23c2d7760d357a7a7b86cbed8f69f824d 100644 (file)
@@ -139,7 +139,8 @@ public class ServerIdManager implements Startable {
   }
 
   private void persistServerId(DbSession dbSession, ServerId serverId) {
-    dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto().setKey(SERVER_ID).setValue(serverId.toString()), null, null);
+    dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto().setKey(SERVER_ID).setValue(serverId.toString()),
+      null, null, null);
   }
 
   private void persistChecksum(DbSession dbSession, String checksump) {
index 003c972b70e67c716dad28a2eb20bcfbe2e65223..97d28f8991786da7b29a958cd57329d966961db7 100644 (file)
@@ -345,7 +345,7 @@ public class ServerIdManagerTest {
 
   private void insertServerId(String serverId) {
     dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto().setKey(CoreProperties.SERVER_ID).setValue(serverId),
-      null, null);
+      null, null, null);
     dbSession.commit();
   }
 
index 36d56d951bd58e9a6fe7ea720eb3bc53bb7f7974..e7aba7949a562cefe33ce047b188ca95d02c9237 100644 (file)
@@ -173,7 +173,7 @@ public class PermissionIndexerDaoTest {
         .setRole(USER)
         .setComponentUuid(project.uuid())
         .setComponentName(project.name());
-      dbClient.groupPermissionDao().insert(dbSession, dto);
+      dbClient.groupPermissionDao().insert(dbSession, dto, project);
     }
     dbSession.commit();
 
index 60779ed731b1c44043b2e457de0f64a621e320f5..d19281c6d5c739814ff7cbff123d3f2f70cffa06 100644 (file)
@@ -49,6 +49,7 @@ public class NotificationUpdater {
     String key = String.join(".", PROP_NOTIFICATION_PREFIX, dispatcher, channel);
     String projectUuid = project == null ? null : project.uuid();
     String projectName = project == null ? null : project.name();
+    String qualifier = project == null ? null : project.qualifier();
 
     List<PropertyDto> existingNotification = dbClient.propertiesDao().selectByQuery(
       PropertyQuery.builder()
@@ -67,7 +68,7 @@ public class NotificationUpdater {
       .setUserUuid(user.getUuid())
       .setValue(PROP_NOTIFICATION_VALUE)
       .setComponentUuid(projectUuid),
-      user.getLogin(), projectName);
+      user.getLogin(), projectName, qualifier);
   }
 
   /**
@@ -77,6 +78,7 @@ public class NotificationUpdater {
     String key = String.join(".", PROP_NOTIFICATION_PREFIX, dispatcher, channel);
     String projectUuid = project == null ? null : project.uuid();
     String projectName = project == null ? null : project.name();
+    String qualifier = project == null ? null : project.qualifier();
 
     List<PropertyDto> existingNotification = dbClient.propertiesDao().selectByQuery(
       PropertyQuery.builder()
@@ -93,7 +95,7 @@ public class NotificationUpdater {
       .setKey(key)
       .setUserUuid(user.getUuid())
       .setValue(PROP_NOTIFICATION_VALUE)
-      .setComponentUuid(projectUuid), user.getLogin(), projectName);
+      .setComponentUuid(projectUuid), user.getLogin(), projectName, qualifier);
   }
 
   private static Predicate<PropertyDto> notificationScope(@Nullable ComponentDto project) {
index 283042c2e2f43ad9508f35a3676edfd050a705f3..1b7b340e567d00fe5aecbd07e19298511946e851 100644 (file)
@@ -131,7 +131,7 @@ public class GroupPermissionChanger {
       .map(GroupDto::getName)
       .ifPresent(addedDto::setGroupName);
 
-    dbClient.groupPermissionDao().insert(dbSession, addedDto);
+    dbClient.groupPermissionDao().insert(dbSession, addedDto, change.getProject());
     return true;
   }
 
index 1c5a3256dc493a3034a83d2b93899766cb5373b6..76c8155e94587da240d6e6bc7d137f921f14cc11 100644 (file)
@@ -126,8 +126,8 @@ public class PermissionTemplateService {
   }
 
   private void copyPermissions(DbSession dbSession, PermissionTemplateDto template, ComponentDto project, @Nullable String projectCreatorUserUuid) {
-    dbClient.groupPermissionDao().deleteByRootComponentUuid(dbSession, project.uuid(), project.name());
-    dbClient.userPermissionDao().deleteProjectPermissions(dbSession, project.uuid(), project.name());
+    dbClient.groupPermissionDao().deleteByRootComponentUuid(dbSession, project);
+    dbClient.userPermissionDao().deleteProjectPermissions(dbSession, project);
 
     List<PermissionTemplateUserDto> usersPermissions = dbClient.permissionTemplateDao().selectUserPermissionsByTemplateId(dbSession, template.getUuid());
     Map<String, String> userDtoMap = dbClient.userDao().selectByUuids(dbSession, usersPermissions.stream().map(PermissionTemplateUserDto::getUserUuid).collect(Collectors.toSet()))
@@ -155,7 +155,7 @@ public class PermissionTemplateService {
           .setRole(gp.getPermission())
           .setComponentUuid(project.uuid())
           .setComponentName(project.name());
-        dbClient.groupPermissionDao().insert(dbSession, dto);
+        dbClient.groupPermissionDao().insert(dbSession, dto, null);
       });
 
     List<PermissionTemplateCharacteristicDto> characteristics = dbClient.permissionTemplateCharacteristicDao().selectByTemplateUuids(dbSession, singletonList(template.getUuid()));
index 1a3de04965b24e431caa19b6adadad691427bf40..35edf77c0fbecee9efa0e555f4af719ab88a6656 100644 (file)
@@ -107,11 +107,10 @@ public class UserPermissionChanger {
       return false;
     }
     checkOtherAdminsExist(dbSession, change);
-    String projectUuid = change.getProjectUuid();
-    String projectName = change.getProject() == null ? null : change.getProject().name();
-    if (projectUuid != null) {
+    ComponentDto project = change.getProject();
+    if (project != null) {
       dbClient.userPermissionDao().deleteProjectPermission(dbSession, change.getUserId().getUuid(), change.getPermission(),
-        projectUuid, projectName);
+        project);
     } else {
       dbClient.userPermissionDao().deleteGlobalPermission(dbSession, change.getUserId().getUuid(), change.getPermission());
     }
index 0d8f6aa2640a879542c0f4c4afb777873160e1ab..b395be13fccd1b0159cfeb6c4e6257578f016033 100644 (file)
@@ -151,7 +151,7 @@ public class UpdateVisibilityAction implements ProjectsWsAction {
 
   private void updatePermissionsToPrivate(DbSession dbSession, ComponentDto component) {
     // delete project permissions for group AnyOne
-    dbClient.groupPermissionDao().deleteByRootComponentUuidForAnyOne(dbSession, component.uuid(), component.name());
+    dbClient.groupPermissionDao().deleteByRootComponentUuidForAnyOne(dbSession, component);
     // grant UserRole.CODEVIEWER and UserRole.USER to any group or user with at least one permission on project
     PUBLIC_PERMISSIONS.forEach(permission -> {
       dbClient.groupPermissionDao().selectGroupUuidsWithPermissionOnProjectBut(dbSession, component.uuid(), permission)
@@ -174,15 +174,15 @@ public class UpdateVisibilityAction implements ProjectsWsAction {
       .setGroupUuid(groupUuid)
       .setGroupName(groupName)
       .setRole(permission)
-      .setComponentName(component.name()));
+      .setComponentName(component.name()), component);
   }
 
   private void updatePermissionsToPublic(DbSession dbSession, ComponentDto component) {
     PUBLIC_PERMISSIONS.forEach(permission -> {
       // delete project group permission for UserRole.CODEVIEWER and UserRole.USER
-      dbClient.groupPermissionDao().deleteByRootComponentUuidAndPermission(dbSession, component.uuid(), permission, component.name());
+      dbClient.groupPermissionDao().deleteByRootComponentUuidAndPermission(dbSession, permission, component);
       // delete project user permission for UserRole.CODEVIEWER and UserRole.USER
-      dbClient.userPermissionDao().deleteProjectPermissionOfAnyUser(dbSession, component.uuid(), permission, component.name());
+      dbClient.userPermissionDao().deleteProjectPermissionOfAnyUser(dbSession, permission, component);
     });
   }
 
index bfa2f5d524cc0d51f57f41ca215f0d1daae62b0b..52237b4a733e903a0759fdfbe39f65d4bd1ff186 100644 (file)
@@ -145,6 +145,7 @@ public class SetAction implements SettingsWsAction {
   private void doHandle(DbSession dbSession, SetRequest request) {
     Optional<ComponentDto> component = searchComponent(dbSession, request);
     String projectName = component.isPresent() ? component.get().name() : null;
+    String qualifier = component.isPresent() ? component.get().qualifier() : null;
     checkPermissions(component);
 
     PropertyDefinition definition = propertyDefinitions.get(request.getKey());
@@ -159,7 +160,7 @@ public class SetAction implements SettingsWsAction {
       validate(request);
       PropertyDto property = toProperty(request, component);
       value = property.getValue();
-      dbClient.propertiesDao().saveProperty(dbSession, property, null, projectName);
+      dbClient.propertiesDao().saveProperty(dbSession, property, null, projectName, qualifier);
     }
 
     dbSession.commit();
@@ -177,17 +178,18 @@ public class SetAction implements SettingsWsAction {
     String key = persistedKey(request);
     String componentUuid = component.isPresent() ? component.get().uuid() : null;
     String componentName = component.isPresent() ? component.get().name() : null;
+    String qualifier = component.isPresent() ? component.get().qualifier() : null;
 
     deleteSettings(dbSession, component, key);
     dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto().setKey(key).setValue(inlinedFieldKeys)
-      .setComponentUuid(componentUuid), null, componentName);
+      .setComponentUuid(componentUuid), null, componentName, qualifier);
 
     List<String> fieldValues = request.getFieldValues();
     IntStream.of(fieldIds).boxed()
       .flatMap(i -> readOneFieldValues(fieldValues.get(i - 1), request.getKey()).entrySet().stream()
         .map(entry -> new KeyValue(key + "." + i + "." + entry.getKey(), entry.getValue())))
       .forEach(keyValue -> dbClient.propertiesDao().saveProperty(dbSession, toFieldProperty(keyValue, componentUuid),
-        null, componentName));
+        null, componentName, qualifier));
 
     return inlinedFieldKeys;
   }
index fe8f0973b1cbb1762d5e44898211225dd3667582..50ce79791d0cc91c33118bd40b4fd5f944a5c253 100644 (file)
@@ -75,7 +75,8 @@ public class SettingsUpdater {
 
   private void deleteSetting(DbSession dbSession, String settingKey, Optional<ComponentDto> componentDto) {
     if (componentDto.isPresent()) {
-      dbClient.propertiesDao().deleteProjectProperty(settingKey, componentDto.get().uuid(), dbSession, componentDto.get().name());
+      dbClient.propertiesDao().deleteProjectProperty(dbSession, settingKey, componentDto.get().uuid(), componentDto.get().name(),
+        componentDto.get().qualifier());
     } else {
       dbClient.propertiesDao().deleteGlobalProperty(settingKey, dbSession);
     }
index 097969e1ad3a786ef6629dbc9a7c2ffe6fd8c570..be7e7c5d219b71dbfa37022606b9ebce399be6e3 100644 (file)
@@ -558,7 +558,7 @@ public class SearchProjectsActionTest {
     Stream.of(javaProject, markDownProject).forEach(this::addFavourite);
     index();
 
-    addFavourite(null, null);
+    addFavourite(null, null, null);
 
     SearchProjectsWsResponse result = call(request.setFilter("isFavorite"));
 
@@ -1342,12 +1342,12 @@ public class SearchProjectsActionTest {
   }
 
   private void addFavourite(ComponentDto project) {
-    addFavourite(project.uuid(), project.name());
+    addFavourite(project.uuid(), project.name(), project.qualifier());
   }
 
-  private void addFavourite(@Nullable String componentUuid, @Nullable String componentName) {
+  private void addFavourite(@Nullable String componentUuid, @Nullable String componentName, @Nullable String qualifier) {
     dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto().setKey("favourite")
-      .setComponentUuid(componentUuid).setUserUuid(userSession.getUuid()), userSession.getLogin(), componentName);
+      .setComponentUuid(componentUuid).setUserUuid(userSession.getUuid()), userSession.getLogin(), componentName, qualifier);
     dbSession.commit();
   }
 
index 1ddb8a22a835a0ba1b8608a74e43f1243316120b..0c30faf1f31740473572809d2220dc619502b91b 100644 (file)
@@ -1399,7 +1399,7 @@ public class SearchActionTest {
         .setGroupUuid(null)
         .setComponentUuid(project.uuid())
         .setComponentName(project.name())
-        .setRole(permission));
+        .setRole(permission), project);
     session.commit();
     userSession.logIn().addProjectPermission(permission, project);
   }
index d0ea8c710c244743116338619390d4ad05598871..03435d3c93b468b040da446a0063479d2b83fd69 100644 (file)
@@ -434,7 +434,7 @@ public class GroupPermissionChangerTest {
       .setRole(perm)
       .setComponentUuid(privateProject.uuid())
       .setComponentName(privateProject.name());
-    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto);
+    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto, privateProject);
     db.commit();
   }
 }
index d1b3b62f515712f5db1536db609b1ce18e9c37b2..ecc8c918a5f30cddd7939e759a7e74b05e1395ad 100644 (file)
@@ -476,7 +476,7 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
       .setRole(perm)
       .setComponentUuid(project.uuid())
       .setComponentName(project.name());
-    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto);
+    db.getDbClient().groupPermissionDao().insert(db.getSession(), dto, project);
     db.commit();
   }
 }
index 803b2addb257c1946841426deedc3cdfa9199018..af34d9d4c6e5ee80967ed395021bff5ed6256b46 100644 (file)
@@ -612,7 +612,7 @@ public class UpdateVisibilityActionTest {
       .setRole(permission)
       .setComponentUuid(component.uuid())
       .setComponentName(component.name());
-    dbTester.getDbClient().groupPermissionDao().insert(dbTester.getSession(), dto);
+    dbTester.getDbClient().groupPermissionDao().insert(dbTester.getSession(), dto, component);
     dbTester.commit();
   }
 
@@ -624,7 +624,7 @@ public class UpdateVisibilityActionTest {
       .setRole(permission)
       .setComponentUuid(component.uuid())
       .setComponentName(component.name());
-    dbTester.getDbClient().groupPermissionDao().insert(dbTester.getSession(), dto);
+    dbTester.getDbClient().groupPermissionDao().insert(dbTester.getSession(), dto, component);
     dbTester.commit();
   }
 
index 1a37184ef6f134c2e2674bc77972d54150f681ef..111843174b1013629ecf1b0bcb6e8c8414834c1a 100644 (file)
@@ -96,7 +96,7 @@ public class ResetActionTest {
   public void remove_global_setting() {
     logInAsSystemAdministrator();
     definitions.addComponent(PropertyDefinition.builder("foo").build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
 
     executeRequestOnGlobalSetting("foo");
     assertGlobalPropertyDoesNotExist("foo");
@@ -105,7 +105,7 @@ public class ResetActionTest {
   @Test
   public void remove_global_setting_even_if_not_defined() {
     logInAsSystemAdministrator();
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
 
     executeRequestOnGlobalSetting("foo");
     assertGlobalPropertyDoesNotExist("foo");
@@ -115,7 +115,7 @@ public class ResetActionTest {
   public void remove_component_setting() {
     logInAsProjectAdmin();
     definitions.addComponent(PropertyDefinition.builder("foo").onQualifiers(PROJECT).build());
-    propertyDb.insertProperties(null, null, newComponentPropertyDto(project).setKey("foo").setValue("value"));
+    propertyDb.insertProperties(null, null, null, newComponentPropertyDto(project).setKey("foo").setValue("value"));
 
     executeRequestOnProjectSetting("foo");
     assertProjectPropertyDoesNotExist("foo");
@@ -124,7 +124,7 @@ public class ResetActionTest {
   @Test
   public void remove_component_setting_even_if_not_defined() {
     logInAsProjectAdmin();
-    propertyDb.insertProperties(null, null, newComponentPropertyDto(project).setKey("foo").setValue("value"));
+    propertyDb.insertProperties(null, null, null, newComponentPropertyDto(project).setKey("foo").setValue("value"));
 
     executeRequestOnProjectSetting("foo");
     assertProjectPropertyDoesNotExist("foo");
@@ -134,7 +134,7 @@ public class ResetActionTest {
   public void remove_hidden_setting() {
     logInAsSystemAdministrator();
     definitions.addComponent(PropertyDefinition.builder("foo").hidden().build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
 
     executeRequestOnGlobalSetting("foo");
     assertGlobalPropertyDoesNotExist("foo");
@@ -143,8 +143,8 @@ public class ResetActionTest {
   @Test
   public void ignore_project_setting_when_removing_global_setting() {
     logInAsSystemAdministrator();
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
-    propertyDb.insertProperties(null, project.name(), newComponentPropertyDto(project).setKey("foo").setValue("value"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, project.name(), project.qualifier(), newComponentPropertyDto(project).setKey("foo").setValue("value"));
 
     executeRequestOnGlobalSetting("foo");
 
@@ -155,8 +155,8 @@ public class ResetActionTest {
   @Test
   public void ignore_global_setting_when_removing_project_setting() {
     logInAsProjectAdmin();
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
-    propertyDb.insertProperties(null, project.name(), newComponentPropertyDto(project).setKey("foo").setValue("value"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, project.name(), project.qualifier(), newComponentPropertyDto(project).setKey("foo").setValue("value"));
 
     executeRequestOnProjectSetting("foo");
 
@@ -168,7 +168,7 @@ public class ResetActionTest {
   public void ignore_user_setting_when_removing_global_setting() {
     logInAsSystemAdministrator();
     UserDto user = dbClient.userDao().insert(dbSession, UserTesting.newUserDto());
-    propertyDb.insertProperties(user.getLogin(), null, newUserPropertyDto("foo", "one", user));
+    propertyDb.insertProperties(user.getLogin(), null, null, newUserPropertyDto("foo", "one", user));
 
     executeRequestOnGlobalSetting("foo");
     assertUserPropertyExists("foo", user);
@@ -178,7 +178,7 @@ public class ResetActionTest {
   public void ignore_user_setting_when_removing_project_setting() {
     logInAsProjectAdmin();
     UserDto user = dbClient.userDao().insert(dbSession, UserTesting.newUserDto());
-    propertyDb.insertProperties(user.getLogin(), null, newUserPropertyDto("foo", "one", user));
+    propertyDb.insertProperties(user.getLogin(), null, null, newUserPropertyDto("foo", "one", user));
 
     executeRequestOnProjectSetting("foo");
     assertUserPropertyExists("foo", user);
@@ -195,7 +195,7 @@ public class ResetActionTest {
   public void remove_setting_by_deprecated_key() {
     logInAsSystemAdministrator();
     definitions.addComponent(PropertyDefinition.builder("foo").deprecatedKey("old").build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
 
     executeRequestOnGlobalSetting("old");
     assertGlobalPropertyDoesNotExist("foo");
@@ -206,7 +206,7 @@ public class ResetActionTest {
     ComponentDto project = db.components().insertPublicProject();
     ComponentDto branch = db.components().insertProjectBranch(project);
     definitions.addComponent(PropertyDefinition.builder("foo").onQualifiers(PROJECT).build());
-    propertyDb.insertProperties(null, branch.name(), newComponentPropertyDto(branch).setKey("foo").setValue("value"));
+    propertyDb.insertProperties(null, branch.name(), null, newComponentPropertyDto(branch).setKey("foo").setValue("value"));
     userSession.logIn().addProjectPermission(ADMIN, project);
 
     ws.newRequest()
index 8e5dd2cf61992440986889f3373d3a160e6ccdce..40cb5265d9650e3841096432334541b827055c6c 100644 (file)
@@ -138,7 +138,7 @@ public class SetActionTest {
 
   @Test
   public void update_existing_global_setting() {
-    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my value"), null, null);
+    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my value"), null, null, null);
     assertGlobalSetting("my.key", "my value");
 
     callForGlobalSetting("my.key", "my new value");
@@ -149,7 +149,7 @@ public class SetActionTest {
 
   @Test
   public void persist_new_project_setting() {
-    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value"), null, null);
+    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value"), null, null, null);
     ComponentDto project = db.components().insertPrivateProject();
     logInAsProjectAdministrator(project);
 
@@ -172,9 +172,9 @@ public class SetActionTest {
 
   @Test
   public void update_existing_project_setting() {
-    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value"), null, null);
+    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value"), null, null, null);
     ComponentDto project = db.components().insertPrivateProject();
-    propertyDb.insertProperty(newComponentPropertyDto("my.key", "my project value", project), project.name(), null);
+    propertyDb.insertProperty(newComponentPropertyDto("my.key", "my project value", project), project.name(), null, null);
     assertComponentSetting("my.key", "my project value", project.uuid());
     logInAsProjectAdministrator(project);
 
@@ -256,7 +256,7 @@ public class SetActionTest {
           .type(PropertyType.STRING)
           .build()))
       .build());
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto("my.key", "1,2,3,4"),
       newGlobalPropertyDto("my.key.1.firstField", "oldFirstValue"),
       newGlobalPropertyDto("my.key.1.secondField", "oldSecondValue"),
@@ -305,11 +305,11 @@ public class SetActionTest {
           .build()))
       .build());
     ComponentDto project = db.components().insertPrivateProject();
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto("my.key", "1"),
       newGlobalPropertyDto("my.key.1.firstField", "oldFirstValue"),
       newGlobalPropertyDto("my.key.1.secondField", "oldSecondValue"));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto("my.key", "1", project),
       newComponentPropertyDto("my.key.1.firstField", "componentFirstValue", project),
       newComponentPropertyDto("my.key.1.firstField", "componentSecondValue", project));
@@ -377,8 +377,8 @@ public class SetActionTest {
 
   @Test
   public void user_setting_is_not_updated() {
-    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my user value").setUserUuid("42"), null, "user_login");
-    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value"), null, null);
+    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my user value").setUserUuid("42"), null, null, "user_login");
+    propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value"), null, null, null);
 
     callForGlobalSetting("my.key", "my new global value");
 
index d9b9373c6f00a5ac06e5b90aab22e27a0041102e..0807e2bfab664d31ea0aad3ab50b53bb8c415e5d 100644 (file)
@@ -72,9 +72,9 @@ public class SettingsUpdaterTest {
   @Test
   public void delete_global_settings() {
     definitions.addComponent(PropertyDefinition.builder("foo").build());
-    propertyDb.insertProperties(null, project.name(), newComponentPropertyDto(project).setKey("foo").setValue("value"));
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("bar").setValue("two"));
+    propertyDb.insertProperties(null, project.name(), project.qualifier(), newComponentPropertyDto(project).setKey("foo").setValue("value"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("bar").setValue("two"));
 
     underTest.deleteGlobalSettings(dbSession, "foo", "bar");
 
@@ -86,9 +86,9 @@ public class SettingsUpdaterTest {
   @Test
   public void delete_component_settings() {
     definitions.addComponent(PropertyDefinition.builder("foo").build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("value"));
-    propertyDb.insertProperties(null, project.name(), newComponentPropertyDto(project).setKey("foo").setValue("one"));
-    propertyDb.insertProperties(null, project.name(), newComponentPropertyDto(project).setKey("bar").setValue("two"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("value"));
+    propertyDb.insertProperties(null, project.name(), project.qualifier(), newComponentPropertyDto(project).setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, project.name(), project.qualifier(), newComponentPropertyDto(project).setKey("bar").setValue("two"));
 
     underTest.deleteComponentSettings(dbSession, project, "foo", "bar");
 
@@ -99,7 +99,7 @@ public class SettingsUpdaterTest {
 
   @Test
   public void does_not_fail_when_deleting_unknown_setting() {
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
 
     underTest.deleteGlobalSettings(dbSession, "unknown");
 
@@ -109,8 +109,8 @@ public class SettingsUpdaterTest {
   @Test
   public void does_not_delete_user_settings() {
     UserDto user = dbClient.userDao().insert(dbSession, UserTesting.newUserDto());
-    propertyDb.insertProperties(user.getLogin(), null, newUserPropertyDto("foo", "one", user));
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(user.getLogin(), null, null, newUserPropertyDto("foo", "one", user));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
 
     underTest.deleteGlobalSettings(dbSession, "foo");
 
@@ -126,7 +126,7 @@ public class SettingsUpdaterTest {
         PropertyFieldDefinition.build("key").name("Key").build(),
         PropertyFieldDefinition.build("size").name("Size").build()))
       .build());
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("foo").setValue("1,2"),
       newGlobalPropertyDto().setKey("foo.1.key").setValue("key1"),
       newGlobalPropertyDto().setKey("foo.1.size").setValue("size1"),
@@ -149,7 +149,7 @@ public class SettingsUpdaterTest {
         PropertyFieldDefinition.build("key").name("Key").build(),
         PropertyFieldDefinition.build("size").name("Size").build()))
       .build());
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("foo").setValue("1,2"),
       newComponentPropertyDto(project).setKey("foo.1.key").setValue("key1"),
       newComponentPropertyDto(project).setKey("foo.1.size").setValue("size1"),
@@ -172,7 +172,7 @@ public class SettingsUpdaterTest {
         PropertyFieldDefinition.build("key").name("Key").build(),
         PropertyFieldDefinition.build("size").name("Size").build()))
       .build());
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("other").setValue("1,2"),
       newComponentPropertyDto(project).setKey("other.1.key").setValue("key1"));
 
index 90d3aff90298cfbf0765821642cecd2b6cd0e373..44b54b4cb6ed1ba1e075cd6908d803886ed12c34 100644 (file)
@@ -101,7 +101,7 @@ public class ValuesActionTest {
     definitions.addComponent(PropertyDefinition
       .builder("foo")
       .build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
 
     ValuesWsResponse result = executeRequestForGlobalProperties("foo");
 
@@ -124,7 +124,7 @@ public class ValuesActionTest {
     definitions.addComponent(PropertyDefinition.builder("global")
       .multiValues(true)
       .build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("global").setValue("three,four"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("global").setValue("three,four"));
 
     ValuesWsResponse result = executeRequestForGlobalProperties("default", "global");
     assertThat(result.getSettingsList()).hasSize(2);
@@ -142,7 +142,7 @@ public class ValuesActionTest {
   public void return_multi_value_with_coma() {
     logIn();
     definitions.addComponent(PropertyDefinition.builder("global").multiValues(true).build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("global").setValue("three,four%2Cfive"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("global").setValue("three,four%2Cfive"));
 
     ValuesWsResponse result = executeRequestForGlobalProperties("global");
 
@@ -211,7 +211,7 @@ public class ValuesActionTest {
   public void return_global_values() {
     logIn();
     definitions.addComponent(PropertyDefinition.builder("property").defaultValue("default").build());
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       // The property is overriding default value
       newGlobalPropertyDto().setKey("property").setValue("one"));
 
@@ -226,9 +226,9 @@ public class ValuesActionTest {
     logInAsProjectUser();
     definitions.addComponent(
       PropertyDefinition.builder("property").defaultValue("default").onQualifiers(PROJECT).build());
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("property").setValue("one"));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       // The property is overriding global value
       newComponentPropertyDto(project).setKey("property").setValue("two"));
 
@@ -245,9 +245,9 @@ public class ValuesActionTest {
       PropertyDefinition.builder("global").build(),
       PropertyDefinition.builder("global.default").defaultValue("default").build(),
       PropertyDefinition.builder("project").onQualifiers(PROJECT).build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("global").setValue("one"));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("project").setValue("two"));
 
     ValuesWsResponse result = executeRequestForProjectProperties();
@@ -261,7 +261,7 @@ public class ValuesActionTest {
     logInAsProjectUser();
     definitions.addComponent(PropertyDefinition.builder("property").defaultValue("default").onQualifiers(PROJECT).build());
     // The property is not defined on project
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("property").setValue("one"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("property").setValue("one"));
 
     ValuesWsResponse result = executeRequestForProjectProperties("property");
 
@@ -272,7 +272,7 @@ public class ValuesActionTest {
   @Test
   public void return_values_even_if_no_property_definition() {
     logIn();
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("globalPropertyWithoutDefinition").setValue("value"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("globalPropertyWithoutDefinition").setValue("value"));
 
     ValuesWsResponse result = executeRequestForGlobalProperties("globalPropertyWithoutDefinition");
 
@@ -285,7 +285,7 @@ public class ValuesActionTest {
   @Test
   public void return_values_of_component_even_if_no_property_definition() {
     logInAsProjectUser();
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("property").setValue("foo"));
 
     ValuesWsResponse response = executeRequestForComponentProperties(project, "property");
@@ -312,7 +312,7 @@ public class ValuesActionTest {
       .builder("foo")
       .defaultValue("default")
       .build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("bar").setValue(""));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("bar").setValue(""));
 
     ValuesWsResponse result = executeRequestForGlobalProperties("unknown");
 
@@ -324,9 +324,9 @@ public class ValuesActionTest {
     logInAsProjectUser();
     ComponentDto module = componentDb.insertComponent(newModuleDto(project));
     definitions.addComponent(PropertyDefinition.builder("property").defaultValue("default").onQualifiers(PROJECT, MODULE).build());
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("property").setValue("one"));
-    propertyDb.insertProperties(null, module.name(),
+    propertyDb.insertProperties(null, module.name(), module.qualifier(),
       // The property is overriding global value
       newComponentPropertyDto(module).setKey("property").setValue("two"));
 
@@ -345,11 +345,11 @@ public class ValuesActionTest {
       PropertyDefinition.builder("globalProperty").onQualifiers(PROJECT, MODULE).build(),
       PropertyDefinition.builder("projectProperty").onQualifiers(PROJECT, MODULE).build(),
       PropertyDefinition.builder("moduleProperty").onQualifiers(PROJECT, MODULE).build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("globalProperty").setValue("global"));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("projectProperty").setValue("project"));
-    propertyDb.insertProperties(null, module.name(),
+    propertyDb.insertProperties(null, module.name(), module.qualifier(),
       newComponentPropertyDto(module).setKey("moduleProperty").setValue("module"));
 
     ValuesWsResponse result = executeRequestForComponentProperties(module, "defaultProperty", "globalProperty", "projectProperty", "moduleProperty");
@@ -367,7 +367,7 @@ public class ValuesActionTest {
     definitions.addComponents(asList(
       PropertyDefinition.builder("defaultProperty").defaultValue("default").build(),
       PropertyDefinition.builder("globalProperty").build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("globalProperty").setValue("global"));
 
     ValuesWsResponse result = executeRequestForGlobalProperties("defaultProperty", "globalProperty");
@@ -384,11 +384,11 @@ public class ValuesActionTest {
     ComponentDto subModule = componentDb.insertComponent(newModuleDto(module));
     definitions.addComponents(asList(
       PropertyDefinition.builder("foo").defaultValue("default").onQualifiers(PROJECT, MODULE).build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("foo").setValue("global"));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("foo").setValue("project"));
-    propertyDb.insertProperties(null, module.name(),
+    propertyDb.insertProperties(null, module.name(), module.qualifier(),
       newComponentPropertyDto(module).setKey("foo").setValue("module"));
 
     assertParentValue(executeRequestForComponentProperties(subModule, "foo").getSettings(0), "module");
@@ -404,11 +404,11 @@ public class ValuesActionTest {
     ComponentDto subModule = componentDb.insertComponent(newModuleDto(module));
     definitions.addComponents(asList(
       PropertyDefinition.builder("foo").defaultValue("default1,default2").multiValues(true).onQualifiers(PROJECT, MODULE).build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("foo").setValue("global1,global2"));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("foo").setValue("project1,project2"));
-    propertyDb.insertProperties(null, module.name(),
+    propertyDb.insertProperties(null, module.name(), module.qualifier(),
       newComponentPropertyDto(module).setKey("foo").setValue("module1,module2"));
 
     assertParentValues(executeRequestForComponentProperties(subModule, "foo").getSettings(0), "module1", "module2");
@@ -455,7 +455,7 @@ public class ValuesActionTest {
           PropertyFieldDefinition.build("key").name("Key").build(),
           PropertyFieldDefinition.build("size").name("Size").build()))
         .build()));
-    propertyDb.insertProperties(null, module.name(),
+    propertyDb.insertProperties(null, module.name(), module.qualifier(),
       newComponentPropertyDto(module).setKey("simple").setValue("module"),
       newComponentPropertyDto(module).setKey("multi").setValue("module1,module2"));
     propertyDb.insertPropertySet("set", module, ImmutableMap.of("key", "keyM1", "size", "sizeM1"));
@@ -469,9 +469,9 @@ public class ValuesActionTest {
   public void return_parent_value_when_no_definition() {
     logInAsProjectUser();
     ComponentDto module = componentDb.insertComponent(newModuleDto(project));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("foo").setValue("global"));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("foo").setValue("project"));
 
     assertParentValue(executeRequestForComponentProperties(module, "foo").getSettings(0), "project");
@@ -486,7 +486,7 @@ public class ValuesActionTest {
       .builder("foo")
       .deprecatedKey("deprecated")
       .build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
 
     ValuesWsResponse result = executeRequestForGlobalProperties("deprecated");
 
@@ -501,7 +501,7 @@ public class ValuesActionTest {
     definitions.addComponents(asList(
       PropertyDefinition.builder("foo").build(),
       PropertyDefinition.builder("secret.secured").build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("foo").setValue("one"),
       newGlobalPropertyDto().setKey("secret.secured").setValue("password"));
 
@@ -532,7 +532,7 @@ public class ValuesActionTest {
     definitions.addComponents(asList(
       PropertyDefinition.builder("foo").build(),
       PropertyDefinition.builder("secret.secured").build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("foo").setValue("one"),
       newGlobalPropertyDto().setKey("secret.secured").setValue("password"));
 
@@ -550,9 +550,9 @@ public class ValuesActionTest {
       PropertyDefinition.builder("foo").onQualifiers(PROJECT).build(),
       PropertyDefinition.builder("global.secret.secured").build(),
       PropertyDefinition.builder("secret.secured").onQualifiers(PROJECT).build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("global.secret.secured").setValue("very secret"));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("foo").setValue("one"),
       newComponentPropertyDto(project).setKey("secret.secured").setValue("password"));
 
@@ -566,7 +566,8 @@ public class ValuesActionTest {
     userSession
       .addProjectPermission(USER, project)
       .addProjectPermission(SCAN_EXECUTION, project);
-    propertyDb.insertProperties(null, project.name(), newComponentPropertyDto(project).setKey("not-defined.secured").setValue("123"));
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
+      newComponentPropertyDto(project).setKey("not-defined.secured").setValue("123"));
 
     ValuesWsResponse result = executeRequestForProjectProperties("not-defined.secured");
 
@@ -579,7 +580,7 @@ public class ValuesActionTest {
     definitions.addComponents(asList(
       PropertyDefinition.builder("foo").build(),
       PropertyDefinition.builder("secret.secured").build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("foo").setValue("one"),
       newGlobalPropertyDto().setKey("secret.secured").setValue("password"));
 
@@ -595,9 +596,9 @@ public class ValuesActionTest {
       PropertyDefinition.builder("foo").onQualifiers(PROJECT).build(),
       PropertyDefinition.builder("global.secret.secured").build(),
       PropertyDefinition.builder("secret.secured").onQualifiers(PROJECT).build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("global.secret.secured").setValue("very secret"));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("foo").setValue("one"),
       newComponentPropertyDto(project).setKey("secret.secured").setValue("password"));
 
@@ -609,7 +610,8 @@ public class ValuesActionTest {
   @Test
   public void return_secured_settings_even_if_not_defined_when_project_admin() {
     logInAsProjectAdmin();
-    propertyDb.insertProperties(null, project.name(), newComponentPropertyDto(project).setKey("not-defined.secured").setValue("123"));
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
+      newComponentPropertyDto(project).setKey("not-defined.secured").setValue("123"));
 
     ValuesWsResponse result = executeRequestForProjectProperties("not-defined.secured");
 
@@ -639,7 +641,7 @@ public class ValuesActionTest {
     definitions.addComponents(asList(
       PropertyDefinition.builder("foo").build(),
       PropertyDefinition.builder("secret.secured").build()));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("foo").setValue("one"),
       newGlobalPropertyDto().setKey("secret.secured").setValue("password"));
 
@@ -654,7 +656,7 @@ public class ValuesActionTest {
     definitions.addComponents(asList(
       PropertyDefinition.builder("foo").onQualifiers(PROJECT).build(),
       PropertyDefinition.builder("secret.secured").onQualifiers(PROJECT).build()));
-    propertyDb.insertProperties(null, project.name(),
+    propertyDb.insertProperties(null, project.name(), project.qualifier(),
       newComponentPropertyDto(project).setKey("foo").setValue("one"),
       newComponentPropertyDto(project).setKey("secret.secured").setValue("password"));
 
@@ -667,7 +669,7 @@ public class ValuesActionTest {
   public void return_additional_settings_specific_for_scanner_when_no_keys() {
     logInAsAdmin();
     definitions.addComponent(PropertyDefinition.builder("secret.secured").build());
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey("sonar.core.id").setValue("ID"),
       newGlobalPropertyDto().setKey("sonar.core.startTime").setValue("2017-01-01"));
 
@@ -682,7 +684,7 @@ public class ValuesActionTest {
     definitions.addComponent(PropertyDefinition
       .builder("foo")
       .build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("fi±∞…"));
+    propertyDb.insertProperties(null, null,  null, newGlobalPropertyDto().setKey("foo").setValue("fi±∞…"));
 
     ValuesWsResponse result = executeRequestForGlobalProperties("foo");
 
@@ -706,7 +708,7 @@ public class ValuesActionTest {
       .builder("foo")
       .deprecatedKey("deprecated")
       .build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("foo").setValue("one"));
+    propertyDb.insertProperties(null, null,  null, newGlobalPropertyDto().setKey("foo").setValue("one"));
 
     expectedException.expect(IllegalArgumentException.class);
     expectedException.expectMessage("'foo' and 'deprecated' cannot be used at the same time as they refer to the same setting");
@@ -736,7 +738,7 @@ public class ValuesActionTest {
       .builder("sonar.autogenerated")
       .multiValues(true)
       .build());
-    propertyDb.insertProperties(null, null, newGlobalPropertyDto().setKey("sonar.autogenerated").setValue("val1,val2,val3"));
+    propertyDb.insertProperties(null, null,  null, newGlobalPropertyDto().setKey("sonar.autogenerated").setValue("val1,val2,val3"));
     definitions.addComponent(PropertyDefinition
       .builder("sonar.demo")
       .type(PropertyType.PROPERTY_SET)
@@ -799,7 +801,7 @@ public class ValuesActionTest {
     PropertyDefinition securedDef = PropertyDefinition.builder("my.password.secured").build();
     PropertyDefinition standardDef = PropertyDefinition.builder("my.property").build();
     definitions.addComponents(asList(securedDef, standardDef));
-    propertyDb.insertProperties(null, null,
+    propertyDb.insertProperties(null, null, null,
       newGlobalPropertyDto().setKey(securedDef.key()).setValue("securedValue"),
       newGlobalPropertyDto().setKey(standardDef.key()).setValue("standardValue"));
 
index 2fcea4cb5e428d864cc285736565fa12547f4ee1..b441ed347a2c1c4092b5d00d201baf139a4753b0 100644 (file)
@@ -156,7 +156,7 @@ public class ComponentActionTest {
     ComponentDto project = insertProject();
     UserDto user = db.users().insertUser("obiwan");
     propertyDbTester.insertProperty(new PropertyDto().setKey("favourite").setComponentUuid(project.uuid()).setUserUuid(user.getUuid()),
-      project.name(), user.getLogin());
+      project.name(), project.qualifier(), user.getLogin());
     userSession.logIn(user).addProjectPermission(UserRole.USER, project);
     init();
 
@@ -169,7 +169,7 @@ public class ComponentActionTest {
     ComponentDto branch = componentDbTester.insertProjectBranch(project, b -> b.setKey("feature1").setUuid("xyz"));
     UserDto user = db.users().insertUser("obiwan");
     propertyDbTester.insertProperty(new PropertyDto().setKey("favourite").setComponentUuid(project.uuid()).setUserUuid(user.getUuid()),
-      project.name(), user.getLogin());
+      project.name(), project.qualifier(), user.getLogin());
     userSession.logIn(user).addProjectPermission(UserRole.USER, project);
     init();
 
@@ -625,7 +625,7 @@ public class ComponentActionTest {
     when(resourceTypes.get(project.qualifier())).thenReturn(DefaultResourceTypes.get().getRootType());
     UserDto user = db.users().insertUser("obiwan");
     propertyDbTester.insertProperty(new PropertyDto().setKey("favourite").setComponentUuid(project.uuid()).setUserUuid(user.getUuid()),
-      project.name(), user.getLogin());
+      project.name(), project.qualifier(), user.getLogin());
     addQualityProfiles(project,
       createQProfile("qp1", "Sonar Way Java", "java"),
       createQProfile("qp2", "Sonar Way Xoo", "xoo"));
index 8d98e05f7bbcdaf79939659cc582046094527836..7367088e9e030064817d816370881f8016c341df 100644 (file)
@@ -143,9 +143,9 @@ public class DeactivateActionTest {
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     ComponentDto project = db.components().insertPrivateProject();
-    db.properties().insertProperty(newUserPropertyDto(user), null, user.getLogin());
-    db.properties().insertProperty(newUserPropertyDto(user), null, user.getLogin());
-    db.properties().insertProperty(newUserPropertyDto(user).setComponentUuid(project.uuid()), project.name(), user.getLogin());
+    db.properties().insertProperty(newUserPropertyDto(user), null, null, user.getLogin());
+    db.properties().insertProperty(newUserPropertyDto(user), null, null,  user.getLogin());
+    db.properties().insertProperty(newUserPropertyDto(user).setComponentUuid(project.uuid()), project.name(), project.qualifier(), user.getLogin());
 
     deactivate(user.getLogin());
 
@@ -209,11 +209,11 @@ public class DeactivateActionTest {
     ComponentDto project = db.components().insertPrivateProject();
     ComponentDto anotherProject = db.components().insertPrivateProject();
     db.properties().insertProperty(new PropertyDto().setKey("sonar.issues.defaultAssigneeLogin").setValue(user.getLogin())
-      .setComponentUuid(project.uuid()), project.name(), user.getLogin());
+      .setComponentUuid(project.uuid()), project.name(), project.qualifier(), user.getLogin());
     db.properties().insertProperty(new PropertyDto().setKey("sonar.issues.defaultAssigneeLogin").setValue(user.getLogin())
-      .setComponentUuid(anotherProject.uuid()), anotherProject.name(), user.getLogin());
+      .setComponentUuid(anotherProject.uuid()), anotherProject.name(), anotherProject.qualifier(), user.getLogin());
     db.properties().insertProperty(new PropertyDto().setKey("other").setValue(user.getLogin())
-      .setComponentUuid(anotherProject.uuid()), anotherProject.name(), user.getLogin());
+      .setComponentUuid(anotherProject.uuid()), anotherProject.name(), anotherProject.qualifier(), user.getLogin());
 
     deactivate(user.getLogin());