From 3ed96a6b902132626d4f6f4a76139613d7cbb81d Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 13 Mar 2019 09:11:58 +0100 Subject: [PATCH] SONAR-10277 Prevent user to have more than 100 projects as favorite --- .../org/sonar/db/property/PropertiesDao.java | 4 + .../sonar/db/property/PropertiesMapper.java | 2 + .../sonar/db/property/PropertiesMapper.xml | 11 ++ .../sonar/db/property/PropertiesDaoTest.java | 35 +++- .../db/migration/version/v77/DbVersion77.java | 3 +- .../DeleteFavoritesExceedingOneHundred.java | 135 +++++++++++++ .../version/v77/DbVersion77Test.java | 2 +- ...eleteFavoritesExceedingOneHundredTest.java | 182 ++++++++++++++++++ .../schema.sql | 59 ++++++ .../server/favorite/FavoriteUpdater.java | 8 +- .../server/favorite/FavoriteUpdaterTest.java | 95 ++++++--- .../server/component/ComponentUpdater.java | 8 +- .../DefaultRubyComponentService.java | 69 ------- .../sonar/server/favorite/ws/AddAction.java | 6 +- .../server/ce/queue/ReportSubmitterTest.java | 86 +++++---- .../component/ComponentUpdaterTest.java | 23 ++- .../server/project/ws/CreateActionTest.java | 42 +++- 17 files changed, 622 insertions(+), 148 deletions(-) create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v77/DeleteFavoritesExceedingOneHundred.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v77/DeleteFavoritesExceedingOneHundredTest.java create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v77/DeleteFavoritesExceedingOneHundredTest/schema.sql delete mode 100644 server/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesDao.java index 04ac22cb459..619e45f2931 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesDao.java @@ -160,6 +160,10 @@ public class PropertiesDao implements Dao { return getMapper(session).selectByKeyAndMatchingValue(key, value); } + public List selectByKeyAndUserIdAndComponentQualifier(DbSession session, String key, int userId, String qualifier) { + return getMapper(session).selectByKeyAndUserIdAndComponentQualifier(key, userId, qualifier); + } + /** * Saves the specified property and its value. *

diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesMapper.java index 7221069be0e..1dd88c185cc 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesMapper.java @@ -38,6 +38,8 @@ public interface PropertiesMapper { List selectByKeysAndComponentIds(@Param("keys") List keys, @Param("componentIds") List componentIds); + List selectByKeyAndUserIdAndComponentQualifier(@Param("key") String key, @Param("userId") int userId, @Param("qualifier") String qualifier); + List selectByComponentIds(@Param("componentIds") List componentIds); List selectByQuery(@Param("query") PropertyQuery query); diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/property/PropertiesMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/property/PropertiesMapper.xml index f1d4344765e..06fc8ddd4b1 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/property/PropertiesMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/property/PropertiesMapper.xml @@ -128,6 +128,17 @@ and p.user_id is null + +