From 4b857243bce47d47eaed8ba1790fa341b47014b0 Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Tue, 20 Dec 2016 14:28:13 +0100 Subject: [PATCH] SONAR-8552 WS api/navigation/component returns the id instead of the url --- .../ui/ws/ComponentNavigationAction.java | 40 +++---------------- .../sonar/server/ui/ws/example-component.json | 6 +-- .../return_configuration_for_admin.json | 8 ++-- .../return_extensions.json | 8 ++-- .../return_extensions_for_admin.json | 12 +++--- 5 files changed, 23 insertions(+), 51 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/ComponentNavigationAction.java b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/ComponentNavigationAction.java index 661c832a7cc..6066f4826c5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/ComponentNavigationAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/ComponentNavigationAction.java @@ -20,9 +20,6 @@ package org.sonar.server.ui.ws; import com.google.common.collect.Lists; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.List; import java.util.Optional; @@ -195,35 +192,12 @@ public class ComponentNavigationAction implements NavigationWsAction { private void writeExtensions(JsonWriter json, ComponentDto component, List> pages) { json.name("extensions").beginArray(); - for (ViewProxy page : pages) { - if (page.isUserAuthorized(component)) { - writePage(json, getPageUrl(page, component), i18n.message(ENGLISH, page.getId() + ".page", page.getTitle())); - } - } + pages.stream() + .filter(page -> page.isUserAuthorized(component)) + .forEach(page -> writePage(json, page.getId(), i18n.message(ENGLISH, page.getId() + ".page", page.getTitle()))); json.endArray(); } - private static String getPageUrl(ViewProxy page, ComponentDto component) { - String result; - String componentKey = encodeComponentKey(component); - if (page.isController()) { - result = String.format("%s?id=%s", page.getId(), componentKey); - } else { - result = String.format("/plugins/resource/%s?page=%s", componentKey, page.getId()); - } - return result; - } - - private static String encodeComponentKey(ComponentDto component) { - String componentKey = component.getKey(); - try { - componentKey = URLEncoder.encode(componentKey, StandardCharsets.UTF_8.name()); - } catch (UnsupportedEncodingException unknownEncoding) { - throw new IllegalStateException(unknownEncoding); - } - return componentKey; - } - private void writeConfiguration(JsonWriter json, ComponentDto component) { boolean isAdmin = userSession.hasComponentUuidPermission(ADMIN, component.projectUuid()); @@ -233,9 +207,7 @@ public class ComponentNavigationAction implements NavigationWsAction { if (isAdmin) { json.name("extensions").beginArray(); List> configPages = views.getPages(NavigationSection.RESOURCE_CONFIGURATION, component.scope(), component.qualifier(), component.language()); - for (ViewProxy page : configPages) { - writePage(json, getPageUrl(page, component), i18n.message(ENGLISH, page.getId() + ".page", page.getTitle())); - } + configPages.forEach(page -> writePage(json, page.getId(), i18n.message(ENGLISH, page.getId() + ".page", page.getTitle()))); json.endArray(); } json.endObject(); @@ -261,9 +233,9 @@ public class ComponentNavigationAction implements NavigationWsAction { return resourceType != null && resourceType.getBooleanProperty(resourceTypeProperty); } - private static void writePage(JsonWriter json, String url, String name) { + private static void writePage(JsonWriter json, String id, String name) { json.beginObject() - .prop("url", url) + .prop("id", id) .prop("name", name) .endObject(); } diff --git a/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/example-component.json b/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/example-component.json index 29703cbb350..40878b2efdf 100644 --- a/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/example-component.json +++ b/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/example-component.json @@ -8,15 +8,15 @@ "snapshotDate": "2016-12-06T11:44:00+0200", "extensions": [ { - "url": "/admin/page?id\u003dorg.codehaus.sonar%3Asonar", + "id": "/admin/page", "name": "Admin Page" }, { - "url": "/plugins/resource/org.codehaus.sonar%3Asonar?page\u003dfirst_page", + "id": "first_page", "name": "First Page" }, { - "url": "/second/page?id\u003dorg.codehaus.sonar%3Asonar", + "id": "/second/page", "name": "Second Page" } ], diff --git a/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_configuration_for_admin.json b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_configuration_for_admin.json index f2961819391..b68d79e7f3e 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_configuration_for_admin.json +++ b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_configuration_for_admin.json @@ -10,12 +10,12 @@ "showUpdateKey": false, "extensions": [ { - "name": "First Page", - "url": "/plugins/resource/polop?page=first_page" + "id": "first_page", + "name": "First Page" }, { - "name": "Second Page", - "url": "/second/page?id=polop" + "id": "/second/page", + "name": "Second Page" } ] } diff --git a/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_extensions.json b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_extensions.json index 6a5c706a339..e470ef4428b 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_extensions.json +++ b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_extensions.json @@ -1,12 +1,12 @@ { "extensions": [ { - "name": "First Page", - "url": "/plugins/resource/polop?page=first_page" + "id": "first_page", + "name": "First Page" }, { - "name": "Second Page", - "url": "/second/page?id=polop" + "id": "/second/page", + "name": "Second Page" } ] } diff --git a/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_extensions_for_admin.json b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_extensions_for_admin.json index b4f36e8b2e6..7301a92fd54 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_extensions_for_admin.json +++ b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentNavigationActionTest/return_extensions_for_admin.json @@ -1,16 +1,16 @@ { "extensions": [ { - "name": "First Page", - "url": "/plugins/resource/polop?page=first_page" + "id": "first_page", + "name": "First Page" }, { - "name": "Second Page", - "url": "/second/page?id=polop" + "id": "/second/page", + "name": "Second Page" }, { - "name": "Admin Page", - "url": "/admin/page?id=polop" + "id": "/admin/page", + "name": "Admin Page" } ] } -- 2.39.5