]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6120 Change indexation of "module" attribute on issues
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Thu, 12 Feb 2015 12:57:48 +0000 (13:57 +0100)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Fri, 13 Feb 2015 13:39:55 +0000 (14:39 +0100)
server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueResultSetIteratorTest.java
server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueResultSetIteratorTest/extract_directory_path.xml
server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueResultSetIteratorTest/shared.xml

index 41f6db28edeeff5c255e72e04ece54efec1a97d6..9c6cf839bae37a40b779c5142a32f7a7d6a731de 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.server.issue.index;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
 import org.apache.commons.lang.StringUtils;
 import org.sonar.api.rule.RuleKey;
@@ -75,7 +76,6 @@ class IssueResultSetIterator extends ResultSetIterator<IssueDoc> {
     // column 21
     "r.language",
     "p.uuid",
-    "p.module_uuid",
     "p.module_uuid_path",
     "p.path",
     "i.tags"
@@ -90,6 +90,8 @@ class IssueResultSetIterator extends ResultSetIterator<IssueDoc> {
 
   private static final Splitter TAGS_SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings();
 
+  private static final Splitter MODULE_PATH_SPLITTER = Splitter.on('.').trimResults().omitEmptyStrings();
+
   private IssueResultSetIterator(PreparedStatement stmt) throws SQLException {
     super(stmt);
   }
@@ -119,6 +121,10 @@ class IssueResultSetIterator extends ResultSetIterator<IssueDoc> {
     return null;
   }
 
+  private static String extractModule(String moduleUuidPath) {
+    return Iterators.getLast(MODULE_PATH_SPLITTER.split(moduleUuidPath).iterator());
+  }
+
   @Override
   protected IssueDoc read(ResultSet rs) throws SQLException {
     IssueDoc doc = new IssueDoc(Maps.<String, Object>newHashMapWithExpectedSize(30));
@@ -150,11 +156,12 @@ class IssueResultSetIterator extends ResultSetIterator<IssueDoc> {
     doc.setRuleKey(RuleKey.of(ruleRepo, ruleKey).toString());
     doc.setLanguage(rs.getString(21));
     doc.setComponentUuid(rs.getString(22));
-    doc.setModuleUuid(rs.getString(23));
-    doc.setModuleUuidPath(rs.getString(24));
-    doc.setFilePath(rs.getString(25));
+    String moduleUuidPath = rs.getString(23);
+    doc.setModuleUuid(extractModule(moduleUuidPath));
+    doc.setModuleUuidPath(moduleUuidPath);
+    doc.setFilePath(rs.getString(24));
     doc.setDirectoryPath(extractDirPath(doc.filePath()));
-    String tags = rs.getString(26);
+    String tags = rs.getString(25);
     doc.setTags(ImmutableList.copyOf(TAGS_SPLITTER.split(tags == null ? "" : tags)));
     return doc;
   }
index e90290e1cca405a7f6aab60244e44a860de520fd..979d294955c38f49cee1c071cd6aa5084d959f81 100644 (file)
@@ -69,22 +69,37 @@ public class IssueResultSetIteratorTest {
     });
     it.close();
 
-    assertThat(issuesByKey).hasSize(2);
+    assertThat(issuesByKey).hasSize(3);
 
     IssueDoc issue = issuesByKey.get("ABC");
     assertThat(issue.key()).isEqualTo("ABC");
     assertThat(issue.assignee()).isEqualTo("guy1");
     assertThat(issue.componentUuid()).isEqualTo("FILE1");
     assertThat(issue.projectUuid()).isEqualTo("PROJECT1");
+    assertThat(issue.moduleUuid()).isEqualTo("PROJECT1");
+    assertThat(issue.modulePath()).isEqualTo(".PROJECT1.");
     assertThat(issue.filePath()).isEqualTo("src/main/java/Action.java");
     assertThat(issue.tags()).containsOnly("tag1", "tag2", "tag3");
     assertThat(issue.debt().toMinutes()).isGreaterThan(0L);
 
+    issue = issuesByKey.get("BCD");
+    assertThat(issue.key()).isEqualTo("BCD");
+    assertThat(issue.assignee()).isEqualTo("guy1");
+    assertThat(issue.componentUuid()).isEqualTo("MODULE1");
+    assertThat(issue.projectUuid()).isEqualTo("PROJECT1");
+    assertThat(issue.moduleUuid()).isEqualTo("MODULE1");
+    assertThat(issue.modulePath()).isEqualTo(".PROJECT1.MODULE1.");
+    assertThat(issue.filePath()).isNull();
+    assertThat(issue.tags()).containsOnly("tag1", "tag2", "tag3");
+    assertThat(issue.debt().toMinutes()).isGreaterThan(0L);
+
     issue = issuesByKey.get("DEF");
     assertThat(issue.key()).isEqualTo("DEF");
     assertThat(issue.assignee()).isEqualTo("guy2");
     assertThat(issue.componentUuid()).isEqualTo("FILE1");
     assertThat(issue.projectUuid()).isEqualTo("PROJECT1");
+    assertThat(issue.moduleUuid()).isEqualTo("PROJECT1");
+    assertThat(issue.modulePath()).isEqualTo(".PROJECT1.");
     assertThat(issue.filePath()).isEqualTo("src/main/java/Action.java");
     assertThat(issue.tags()).isEmpty();
     assertThat(issue.debt().toMinutes()).isGreaterThan(0L);
index 427e7e2d00bc38ef6d0ce514b667a0db9b31af49..51df53de78b8a76f8ee4ede2a8f938492495021e 100644 (file)
@@ -2,9 +2,9 @@
   <rules tags="[null]" system_tags="[null]" id="200" name="Avoid Cycles" plugin_rule_key="AvoidCycles"
          plugin_config_key="[null]" plugin_name="squid"/>
 
-  <projects id="10" scope="PRJ" qualifier="TRK" kee="struts" name="Struts" uuid="PROJECT1" path="[null]"/>
-  <projects id="100" scope="FIL" qualifier="CLA" kee="struts:Action" name="Action" uuid="FILE1" path="src/main/java/Action.java"/>
-  <projects id="101" scope="FIL" qualifier="CLA" kee="pom" name="pom.xml" uuid="ROOT_FILE1" path="pom.xml"/>
+  <projects id="10" scope="PRJ" qualifier="TRK" kee="struts" name="Struts" uuid="PROJECT1" path="[null]" module_uuid_path=".PROJECT1."/>
+  <projects id="100" scope="FIL" qualifier="CLA" kee="struts:Action" name="Action" uuid="FILE1" path="src/main/java/Action.java" module_uuid_path=".PROJECT1."/>
+  <projects id="101" scope="FIL" qualifier="CLA" kee="pom" name="pom.xml" uuid="ROOT_FILE1" path="pom.xml" module_uuid_path=".PROJECT1."/>
 
   <issues
       id="1"
index 4a3f129d3140e37505138fa974911acefed97ead..77ab7442ecaf78b4f5e0ef9c11cd6afb9baa6325 100644 (file)
@@ -2,8 +2,9 @@
   <rules tags="[null]" system_tags="[null]" id="200" name="Avoid Cycles" plugin_rule_key="AvoidCycles"
          plugin_config_key="[null]" plugin_name="squid"/>
 
-  <projects id="10" scope="PRJ" qualifier="TRK" kee="struts" name="Struts" uuid="PROJECT1" path="[null]"/>
-  <projects id="100" scope="FIL" qualifier="CLA" kee="struts:Action" name="Action" uuid="FILE1" path="src/main/java/Action.java"/>
+  <projects id="10" scope="PRJ" qualifier="TRK" kee="struts" name="Struts" uuid="PROJECT1" path="[null]" module_uuid_path=".PROJECT1."/>
+  <projects id="50" scope="PRJ" qualifier="BRC" kee="struts:struts-tiles" name="Struts Tiles" uuid="MODULE1" path="[null]" module_uuid_path=".PROJECT1.MODULE1."/>
+  <projects id="100" scope="FIL" qualifier="CLA" kee="struts:Action" name="Action" uuid="FILE1" path="src/main/java/Action.java" module_uuid_path=".PROJECT1."/>
 
   <issues
     id="1"
 
   <issues
     id="2"
+    kee="BCD"
+    resolution="FIXED"
+    status="RESOLVED"
+    severity="BLOCKER"
+    manual_severity="[false]"
+    assignee="guy1"
+    author_login="guy2"
+    checksum="FFFFF"
+    effort_to_fix="[null]"
+    technical_debt="10"
+    message="[null]"
+    line="444"
+    component_uuid="MODULE1"
+    project_uuid="PROJECT1"
+    rule_id="200"
+    reporter="[null]"
+    issue_attributes="JIRA=http://jira.com"
+    action_plan_key="PLAN1"
+    tags="tag1,tag2,tag3"
+    created_at="1400000000000"
+    updated_at="1400000000000"
+    issue_creation_date="1115848800000"
+    issue_update_date="1356994800000"
+    issue_close_date="[null]"/>
+
+  <issues
+    id="3"
     kee="DEF"
     resolution="[null]"
     status="OPEN"