diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2018-04-18 21:33:48 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2018-05-10 20:20:53 +0200 |
commit | 5097d1877b4d9d49a5a35a57ba4002ceb30b839e (patch) | |
tree | 5384cc3ccf66e2acd67ab039cbbadde421b5b026 /sonar-plugin-api | |
parent | a5b9a87ed5e97a553d6f6bde845be749497ab5ad (diff) | |
download | sonarqube-5097d1877b4d9d49a5a35a57ba4002ceb30b839e.tar.gz sonarqube-5097d1877b4d9d49a5a35a57ba4002ceb30b839e.zip |
Fix Quality flaws
Diffstat (limited to 'sonar-plugin-api')
3 files changed, 31 insertions, 6 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/page/Page.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/page/Page.java index 6b684105856..b6be3dd8047 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/web/page/Page.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/page/Page.java @@ -58,6 +58,10 @@ public final class Page { return key; } + public String getPluginKey() { + return key.substring(0, key.indexOf('/')); + } + public String getName() { return name; } @@ -115,6 +119,10 @@ public final class Page { * @param key It must respect the format plugin_key/page_identifier. Example: <code>my_plugin/my_page</code> */ private Builder(String key) { + requireNonNull(key, "Key must not be null"); + if (key.split("/").length != 2) { + throw new IllegalArgumentException("Page key [" + key + "] is not valid. It must contain a single slash, for example my_plugin/my_page."); + } this.key = requireNonNull(key, "Key must not be null"); } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/web/page/ContextTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/web/page/ContextTest.java index 651f0a6323c..5ee17718279 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/web/page/ContextTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/web/page/ContextTest.java @@ -48,17 +48,17 @@ public class ContextTest { @Test public void ordered_by_name() { underTest - .addPage(Page.builder("K1").setName("N2").build()) - .addPage(Page.builder("K2").setName("N3").build()) - .addPage(Page.builder("K3").setName("N1").build()); + .addPage(Page.builder("fake/K1").setName("N2").build()) + .addPage(Page.builder("fake/K2").setName("N3").build()) + .addPage(Page.builder("fake/K3").setName("N1").build()); Collection<Page> result = underTest.getPages(); assertThat(result).extracting(Page::getKey, Page::getName) .containsOnly( - tuple("K3", "N1"), - tuple("K1", "N2"), - tuple("K2", "N3")); + tuple("fake/K3", "N1"), + tuple("fake/K1", "N2"), + tuple("fake/K2", "N3")); } @Test diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/web/page/PageTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/web/page/PageTest.java index 54b2f54ef2e..efc9308d717 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/web/page/PageTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/web/page/PageTest.java @@ -49,6 +49,7 @@ public class PageTest { .build(); assertThat(result.getKey()).isEqualTo("governance/project_dump"); + assertThat(result.getPluginKey()).isEqualTo("governance"); assertThat(result.getName()).isEqualTo("Project Dump"); assertThat(result.getComponentQualifiers()).containsOnly(PROJECT, MODULE); assertThat(result.getScope()).isEqualTo(COMPONENT); @@ -134,4 +135,20 @@ public class PageTest { underTest.setComponentQualifiers(PROJECT).build(); } + + @Test + public void fail_if_key_does_not_contain_a_slash() { + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("Page key [project_dump] is not valid. It must contain a single slash, for example my_plugin/my_page."); + + Page.builder("project_dump").setName("Project Dump").build(); + } + + @Test + public void fail_if_key_contains_more_than_one_slash() { + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("Page key [governance/project/dump] is not valid. It must contain a single slash, for example my_plugin/my_page."); + + Page.builder("governance/project/dump").setName("Project Dump").build(); + } } |