aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2018-04-18 21:33:48 +0200
committerSonarTech <sonartech@sonarsource.com>2018-05-10 20:20:53 +0200
commit5097d1877b4d9d49a5a35a57ba4002ceb30b839e (patch)
tree5384cc3ccf66e2acd67ab039cbbadde421b5b026 /sonar-plugin-api
parenta5b9a87ed5e97a553d6f6bde845be749497ab5ad (diff)
downloadsonarqube-5097d1877b4d9d49a5a35a57ba4002ceb30b839e.tar.gz
sonarqube-5097d1877b4d9d49a5a35a57ba4002ceb30b839e.zip
Fix Quality flaws
Diffstat (limited to 'sonar-plugin-api')
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/web/page/Page.java8
-rw-r--r--sonar-plugin-api/src/test/java/org/sonar/api/web/page/ContextTest.java12
-rw-r--r--sonar-plugin-api/src/test/java/org/sonar/api/web/page/PageTest.java17
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();
+ }
}