diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-05-02 14:37:02 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-05-02 14:37:14 +0200 |
commit | 13d7c8d2c4f3b5de9c423ba802fde9ac843e23d8 (patch) | |
tree | 4c3e9d5279e6de9eaa16cf046b00619ef2caf96f /sonar-server | |
parent | a4a07ed91db0f3bd927517caef50ba44648c79ed (diff) | |
download | sonarqube-13d7c8d2c4f3b5de9c423ba802fde9ac843e23d8.tar.gz sonarqube-13d7c8d2c4f3b5de9c423ba802fde9ac843e23d8.zip |
SONAR-5262 Fail to delete action plan having issues on deleted component
Diffstat (limited to 'sonar-server')
6 files changed, 18 insertions, 22 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/issue/ServerIssueStorage.java b/sonar-server/src/main/java/org/sonar/server/issue/ServerIssueStorage.java index 81681492182..a3e9321d215 100644 --- a/sonar-server/src/main/java/org/sonar/server/issue/ServerIssueStorage.java +++ b/sonar-server/src/main/java/org/sonar/server/issue/ServerIssueStorage.java @@ -28,8 +28,6 @@ import org.sonar.core.resource.ResourceDao; import org.sonar.core.resource.ResourceDto; import org.sonar.core.resource.ResourceQuery; -import javax.annotation.Nullable; - /** * @since 3.6 */ @@ -45,20 +43,19 @@ public class ServerIssueStorage extends IssueStorage implements ServerComponent @Override protected long componentId(DefaultIssue issue) { ResourceDto resourceDto = resourceDao.getResource(ResourceQuery.create().setKey(issue.componentKey())); - validate(issue, resourceDto); + if (resourceDto == null) { + throw new IllegalStateException("Unknown component: " + issue.componentKey()); + } return resourceDto.getId(); } @Override protected long projectId(DefaultIssue issue) { - ResourceDto resourceDto = resourceDao.getRootProjectByComponentKey(issue.componentKey()); - validate(issue, resourceDto); - return resourceDto.getId(); - } - - private void validate(DefaultIssue issue, @Nullable ResourceDto resourceDto) { + ResourceDto resourceDto = resourceDao.getResource(ResourceQuery.create().setKey(issue.projectKey())); if (resourceDto == null) { - throw new IllegalStateException("Unknown component: " + issue.componentKey()); + throw new IllegalStateException("Unknown project: " + issue.projectKey()); } + return resourceDto.getId(); } + } diff --git a/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueStorageTest.java b/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueStorageTest.java index b667f9ea313..03978792abd 100644 --- a/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueStorageTest.java +++ b/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueStorageTest.java @@ -37,8 +37,8 @@ import static org.fest.assertions.Fail.fail; public class ServerIssueStorageTest extends AbstractDaoTestCase { @Test - public void should_load_component_id_from_db() throws Exception { - setupData("should_load_component_id_from_db"); + public void load_component_id_from_db() throws Exception { + setupData("load_component_id_from_db"); ServerIssueStorage storage = new ServerIssueStorage(getMyBatis(), new FakeRuleFinder(), new ResourceDao(getMyBatis())); long componentId = storage.componentId(new DefaultIssue().setComponentKey("struts:Action.java")); @@ -47,8 +47,8 @@ public class ServerIssueStorageTest extends AbstractDaoTestCase { } @Test - public void should_fail_to_load_component_id_if_unknown_component() throws Exception { - setupData("should_fail_to_load_component_id_if_unknown_component"); + public void fail_to_load_component_id_if_unknown_component() throws Exception { + setupData("empty"); ServerIssueStorage storage = new ServerIssueStorage(getMyBatis(), new FakeRuleFinder(), new ResourceDao(getMyBatis())); try { @@ -60,25 +60,25 @@ public class ServerIssueStorageTest extends AbstractDaoTestCase { } @Test - public void should_load_project_id_from_db() throws Exception { - setupData("should_load_project_id_from_db"); + public void load_project_id_from_db() throws Exception { + setupData("load_project_id_from_db"); ServerIssueStorage storage = new ServerIssueStorage(getMyBatis(), new FakeRuleFinder(), new ResourceDao(getMyBatis())); - long projectId = storage.projectId(new DefaultIssue().setComponentKey("struts:Action.java")); + long projectId = storage.projectId(new DefaultIssue().setProjectKey("struts")); assertThat(projectId).isEqualTo(1); } @Test - public void should_fail_to_load_project_id_if_unknown_component() throws Exception { - setupData("should_fail_to_load_project_id_if_unknown_component"); + public void fail_to_load_project_id_if_unknown_component() throws Exception { + setupData("empty"); ServerIssueStorage storage = new ServerIssueStorage(getMyBatis(), new FakeRuleFinder(), new ResourceDao(getMyBatis())); try { - storage.projectId(new DefaultIssue().setComponentKey("struts:Action.java")); + storage.projectId(new DefaultIssue().setProjectKey("struts")); fail(); } catch (Exception e) { - assertThat(e).hasMessage("Unknown component: struts:Action.java"); + assertThat(e).hasMessage("Unknown project: struts"); } } diff --git a/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/should_fail_to_load_component_id_if_unknown_component.xml b/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/empty.xml index 5ed00ba028b..5ed00ba028b 100644 --- a/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/should_fail_to_load_component_id_if_unknown_component.xml +++ b/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/empty.xml diff --git a/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/should_load_component_id_from_db.xml b/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/load_component_id_from_db.xml index cf7e75fd7f7..cf7e75fd7f7 100644 --- a/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/should_load_component_id_from_db.xml +++ b/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/load_component_id_from_db.xml diff --git a/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/should_load_project_id_from_db.xml b/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/load_project_id_from_db.xml index 1eb4ff00c26..1eb4ff00c26 100644 --- a/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/should_load_project_id_from_db.xml +++ b/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/load_project_id_from_db.xml diff --git a/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/should_fail_to_load_project_id_if_unknown_component.xml b/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/should_fail_to_load_project_id_if_unknown_component.xml deleted file mode 100644 index 5ed00ba028b..00000000000 --- a/sonar-server/src/test/resources/org/sonar/server/issue/ServerIssueStorageTest/should_fail_to_load_project_id_if_unknown_component.xml +++ /dev/null @@ -1 +0,0 @@ -<dataset></dataset>
\ No newline at end of file |