From: Julien Lancelot Date: Tue, 27 Jan 2015 12:42:55 +0000 (+0100) Subject: SONAR-6085 Index "real" projects in Views index X-Git-Tag: latest-silver-master-#65~60 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5c02b95b7de649a197b5e945ffafdead660b3f07;p=sonarqube.git SONAR-6085 Index "real" projects in Views index --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java b/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java index 39b5688a0a3..84091b1343e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java @@ -147,7 +147,7 @@ public class ComponentDao extends BaseDao return mapper(session).selectAllViewsAndSubViews(Qualifiers.VIEW, Qualifiers.SUBVIEW); } - public List selectProjectsFromView(DbSession session, String projectViewUuid, String viewUuid) { - return mapper(session).selectProjectsFromView(projectViewUuid, "%." + viewUuid + ".%", Qualifiers.SUBVIEW); + public List selectProjectsFromView(DbSession session, String viewUuid, String projectViewUuid) { + return mapper(session).selectProjectsFromView("%." + viewUuid + ".%", projectViewUuid, Qualifiers.SUBVIEW); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/view/index/ViewIndexer.java b/server/sonar-server/src/main/java/org/sonar/server/view/index/ViewIndexer.java index c8844d122a7..78bc4f7d2c6 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/view/index/ViewIndexer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/view/index/ViewIndexer.java @@ -87,7 +87,7 @@ public class ViewIndexer extends BaseIndexer { } private void doIndex(DbSession dbSession, BulkIndexer bulk, String uuid, String projectUuid) { - List projects = dbClient.componentDao().selectProjectsFromView(dbSession, projectUuid, uuid); + List projects = dbClient.componentDao().selectProjectsFromView(dbSession, uuid, projectUuid); bulk.add(newUpsertRequest(new ViewDoc(Maps.newHashMap()) .setUuid(uuid) .setProjects(projects))); diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java index 248da521479..daf012ab2a0 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java @@ -452,9 +452,9 @@ public class ComponentDaoTest extends AbstractDaoTestCase { public void select_projects_from_view() { setupData("shared_views"); - assertThat(dao.selectProjectsFromView(session, "ABCD", "ABCD")).containsExactly("BCDE"); - assertThat(dao.selectProjectsFromView(session, "EFGH", "EFGH")).containsExactly("GHIJ", "HIJK"); - assertThat(dao.selectProjectsFromView(session, "EFGH", "FGHI")).containsExactly("HIJK"); + assertThat(dao.selectProjectsFromView(session, "ABCD", "ABCD")).containsExactly("JKLM"); + assertThat(dao.selectProjectsFromView(session, "EFGH", "EFGH")).containsExactly("KLMN", "JKLM"); + assertThat(dao.selectProjectsFromView(session, "FGHI", "EFGH")).containsExactly("JKLM"); assertThat(dao.selectProjectsFromView(session, "IJKL", "IJKL")).isEmpty(); assertThat(dao.selectProjectsFromView(session, "Unknown", "Unknown")).isEmpty(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java b/server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java index cac123fea8e..966b66d9401 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java @@ -78,9 +78,9 @@ public class ViewIndexerTest { } }); - assertThat(viewsByUuid.get("ABCD").projects()).containsOnly("BCDE"); - assertThat(viewsByUuid.get("EFGH").projects()).containsOnly("GHIJ", "HIJK"); - assertThat(viewsByUuid.get("FGHI").projects()).containsOnly("HIJK"); + assertThat(viewsByUuid.get("ABCD").projects()).containsOnly("JKLM"); + assertThat(viewsByUuid.get("EFGH").projects()).containsOnly("KLMN", "JKLM"); + assertThat(viewsByUuid.get("FGHI").projects()).containsOnly("JKLM"); assertThat(viewsByUuid.get("IJKL").projects()).isEmpty(); } @@ -116,8 +116,8 @@ public class ViewIndexerTest { } }); - assertThat(viewsByUuid.get("EFGH").projects()).containsOnly("GHIJ", "HIJK"); - assertThat(viewsByUuid.get("FGHI").projects()).containsOnly("HIJK"); + assertThat(viewsByUuid.get("EFGH").projects()).containsOnly("KLMN", "JKLM"); + assertThat(viewsByUuid.get("FGHI").projects()).containsOnly("JKLM"); } } diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/shared_views.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/shared_views.xml index 03f24d4fb95..b9164edb778 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/shared_views.xml +++ b/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/shared_views.xml @@ -5,22 +5,34 @@ kee="MASTER_PROJECT" scope="PRJ" qualifier="VW" name="All projects" path="[null]"/> + kee="MASTER_PROJECTorg.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/> + kee="VIEW2org.elasticsearch:elasticsearch" scope="FIL" qualifier="TRK" name="SSLR" path="[null]"/> + kee="VIEW2org.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/> + + + + + + diff --git a/server/sonar-server/src/test/resources/org/sonar/server/view/index/ViewIndexerTest/index.xml b/server/sonar-server/src/test/resources/org/sonar/server/view/index/ViewIndexerTest/index.xml index 03f24d4fb95..b9164edb778 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/view/index/ViewIndexerTest/index.xml +++ b/server/sonar-server/src/test/resources/org/sonar/server/view/index/ViewIndexerTest/index.xml @@ -5,22 +5,34 @@ kee="MASTER_PROJECT" scope="PRJ" qualifier="VW" name="All projects" path="[null]"/> + kee="MASTER_PROJECTorg.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/> + kee="VIEW2org.elasticsearch:elasticsearch" scope="FIL" qualifier="TRK" name="SSLR" path="[null]"/> + kee="VIEW2org.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/> + + + + + + diff --git a/sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java b/sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java index 250b43df518..81215f8d557 100644 --- a/sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java @@ -93,7 +93,7 @@ public interface ComponentMapper { /** * Return technical projects from a view or a sub-view */ - List selectProjectsFromView(@Param("projectViewUuid") String projectViewUuid, @Param("viewUuidLikeQuery") String viewUuidLikeQuery, + List selectProjectsFromView(@Param("viewUuidLikeQuery") String viewUuidLikeQuery, @Param("projectViewUuid") String projectViewUuid, @Param("subViewQualifier") String subViewQualifier); long countById(long id); diff --git a/sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml b/sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml index 9edb28eff5c..c9a2d7ca514 100644 --- a/sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml @@ -164,10 +164,11 @@