diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-05-26 14:55:05 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-05-26 14:55:13 +0200 |
commit | a40b6270cfb0bb5cf390f94b66212a8f7ca0ff1c (patch) | |
tree | cd3d29ea8a7714d436efd2673016f091b8d2724c /sonar-ws-client/src | |
parent | 5997da24804c4a095bd7cbe6c50ad50ae2121e94 (diff) | |
download | sonarqube-a40b6270cfb0bb5cf390f94b66212a8f7ca0ff1c.tar.gz sonarqube-a40b6270cfb0bb5cf390f94b66212a8f7ca0ff1c.zip |
Improve WS using "_ref"
Diffstat (limited to 'sonar-ws-client/src')
9 files changed, 57 insertions, 64 deletions
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/Block.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/Block.java index ef2e7250329..e72e5292cea 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/Block.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/Block.java @@ -28,7 +28,7 @@ import javax.annotation.CheckForNull; public interface Block { @CheckForNull - String fileRef(); + File file(); @CheckForNull Integer from(); diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/Duplications.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/Duplications.java index c7e927873af..25536cae072 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/Duplications.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/Duplications.java @@ -20,8 +20,6 @@ package org.sonar.wsclient.duplication; -import javax.annotation.CheckForNull; - import java.util.List; /** @@ -33,7 +31,4 @@ public interface Duplications { List<File> files(); - @CheckForNull - File fileByRef(String ref); - } diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/internal/DefaultDuplicationClient.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/internal/DefaultDuplicationClient.java index b9dfe736c4e..814aab56dff 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/internal/DefaultDuplicationClient.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/internal/DefaultDuplicationClient.java @@ -45,12 +45,12 @@ public class DefaultDuplicationClient implements DuplicationClient { DefaultDuplications duplications = new DefaultDuplications(); Map jRoot = (Map) JSONValue.parse(jsonResult); - parseDuplications(duplications, jRoot); parseFiles(duplications, jRoot); + parseDuplications(duplications, jRoot); return duplications; } - private void parseDuplications(DefaultDuplications duplications, Map jRoot) { + private void parseDuplications(final DefaultDuplications duplications, Map jRoot) { List<Map> jsonDuplications = (List<Map>) jRoot.get("duplications"); if (jsonDuplications != null) { for (Map jsonDuplication : jsonDuplications) { @@ -59,20 +59,20 @@ public class DefaultDuplicationClient implements DuplicationClient { List<Map> blocks = (List<Map>) jsonDuplication.get("blocks"); if (blocks != null) { for (final Map block : blocks) { - blockList.add((new Block() { - @Override - public String fileRef() { - return JsonUtils.getString(block, "_ref"); + @Override + public File file() { + String ref = JsonUtils.getString(block, "_ref"); + return ref != null ? duplications.fileByRef(ref) : null; } - @Override - public Integer from() { + @Override + public Integer from() { return JsonUtils.getInteger(block, "from"); } - @Override - public Integer size() { + @Override + public Integer size() { return JsonUtils.getInteger(block, "size"); } })); @@ -101,17 +101,17 @@ public class DefaultDuplicationClient implements DuplicationClient { duplications.addFile(ref, new File() { @Override - public String key () { + public String key() { return JsonUtils.getString(file, "key"); } @Override - public String name () { + public String name() { return JsonUtils.getString(file, "name"); } @Override - public String projectName () { + public String projectName() { return JsonUtils.getString(file, "projectName"); } }); diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/internal/DefaultDuplications.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/internal/DefaultDuplications.java index fefc8596825..4d7d7f1dabb 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/internal/DefaultDuplications.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/duplication/internal/DefaultDuplications.java @@ -44,8 +44,7 @@ public class DefaultDuplications implements Duplications { return new ArrayList<File>(files.values()); } - @Override - public File fileByRef(String ref) { + File fileByRef(String ref) { return files.get(ref); } diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/test/TestableTestCases.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/test/TestableTestCases.java index 0ca5f9f5715..8e8e8070bf4 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/test/TestableTestCases.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/test/TestableTestCases.java @@ -33,10 +33,11 @@ public interface TestableTestCases { List<TestCase> tests(); - File fileByTest(String testName); - interface TestCase { @CheckForNull + File file(); + + @CheckForNull String name(); @CheckForNull diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/test/internal/DefaultTestClient.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/test/internal/DefaultTestClient.java index 737b8f3fe42..17834c44af7 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/test/internal/DefaultTestClient.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/test/internal/DefaultTestClient.java @@ -115,13 +115,40 @@ public class DefaultTestClient implements TestClient { String jsonResult = requestFactory.get("/api/tests/testable", params); Map jRoot = (Map) JSONValue.parse(jsonResult); - DefaultTestableTestCases coveringTestCases = new DefaultTestableTestCases(); + final DefaultTestableTestCases testableTestCases = new DefaultTestableTestCases(); + + Map<String, Map> jsonFiles = (Map) jRoot.get("files"); + if (jsonFiles != null) { + for (Map.Entry<String, Map> entry : jsonFiles.entrySet()) { + String ref = entry.getKey(); + final Map file = entry.getValue(); + if (ref != null && file != null) { + testableTestCases.addFile(ref, new TestableTestCases.File() { + @Override + public String key() { + return JsonUtils.getString(file, "key"); + } + + @Override + public String longName() { + return JsonUtils.getString(file, "longName"); + } + + }); + } + } + } List<Map> tests = (List) jRoot.get("tests"); if (tests != null) { for (final Map json : tests) { - String fileRef = JsonUtils.getString(json, "_ref"); - coveringTestCases.addTest(fileRef, new TestableTestCases.TestCase() { + testableTestCases.addTest(new TestableTestCases.TestCase() { + @Override + public TestableTestCases.File file() { + String fileRef = JsonUtils.getString(json, "_ref"); + return fileRef != null ? testableTestCases.fileByRef(fileRef) : null; + } + @Override public String name() { return JsonUtils.getString(json, "name"); @@ -140,28 +167,6 @@ public class DefaultTestClient implements TestClient { }); } } - - Map<String, Map> jsonFiles = (Map) jRoot.get("files"); - if (jsonFiles != null) { - for (Map.Entry<String, Map> entry : jsonFiles.entrySet()) { - String ref = entry.getKey(); - final Map file = entry.getValue(); - if (ref != null && file != null) { - coveringTestCases.addFile(ref, new TestableTestCases.File() { - @Override - public String key() { - return JsonUtils.getString(file, "key"); - } - - @Override - public String longName() { - return JsonUtils.getString(file, "longName"); - } - - }); - } - } - } - return coveringTestCases; + return testableTestCases; } } diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/test/internal/DefaultTestableTestCases.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/test/internal/DefaultTestableTestCases.java index b4beacac2cd..af7f7161917 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/test/internal/DefaultTestableTestCases.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/test/internal/DefaultTestableTestCases.java @@ -31,7 +31,6 @@ public class DefaultTestableTestCases implements TestableTestCases { private final List<TestCase> tests = new ArrayList<TestCase>(); private final Map<String, File> filesByRef = new HashMap<String, File>(); - private final Map<String, String> refsByTest = new HashMap<String, String>(); @Override public List<TestCase> tests() { @@ -43,15 +42,12 @@ public class DefaultTestableTestCases implements TestableTestCases { return new ArrayList<File>(filesByRef.values()); } - @Override - public File fileByTest(String testName) { - String ref = refsByTest.get(testName); - return ref != null ? filesByRef.get(ref) : null; + public File fileByRef(String ref) { + return filesByRef.get(ref); } - public DefaultTestableTestCases addTest(String ref, TestCase testCase) { + public DefaultTestableTestCases addTest(TestCase testCase) { tests.add(testCase); - refsByTest.put(testCase.name(), ref); return this; } diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/duplication/internal/DefaultDuplicationClientTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/duplication/internal/DefaultDuplicationClientTest.java index 69128926ed1..d8ed99aa211 100644 --- a/sonar-ws-client/src/test/java/org/sonar/wsclient/duplication/internal/DefaultDuplicationClientTest.java +++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/duplication/internal/DefaultDuplicationClientTest.java @@ -55,17 +55,16 @@ public class DefaultDuplicationClientTest { assertThat(duplication.blocks()).hasSize(2); Block block = duplication.blocks().get(0); - assertThat(block.fileRef()).isEqualTo("1"); assertThat(block.from()).isEqualTo(94); assertThat(block.size()).isEqualTo(101); - List<File> files = result.files(); - assertThat(files).hasSize(2); - - File file = result.fileByRef("1"); + File file = block.file(); assertThat(file.key()).isEqualTo("org.codehaus.sonar:sonar-plugin-api:src/main/java/org/sonar/api/utils/command/CommandExecutor.java"); assertThat(file.name()).isEqualTo("CommandExecutor"); assertThat(file.projectName()).isEqualTo("SonarQube"); + + List<File> files = result.files(); + assertThat(files).hasSize(2); } } diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/test/internal/DefaultTestClientTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/test/internal/DefaultTestClientTest.java index ace79a5cca7..150ec009129 100644 --- a/sonar-ws-client/src/test/java/org/sonar/wsclient/test/internal/DefaultTestClientTest.java +++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/test/internal/DefaultTestClientTest.java @@ -74,11 +74,9 @@ public class DefaultTestClientTest { assertThat(testCase.status()).isEqualTo("OK"); assertThat(testCase.durationInMs()).isEqualTo(10L); - TestableTestCases.File file = coveringTestCases.fileByTest("find_by_params"); + TestableTestCases.File file = testCase.file(); assertThat(file.key()).isEqualTo("org.codehaus.sonar:sonar-server:src/test/java/org/sonar/server/rule/RubyRuleServiceTest.java"); assertThat(file.longName()).isEqualTo("src/test/java/org/sonar/server/rule/RubyRuleServiceTest.java"); - - assertThat(coveringTestCases.fileByTest("unknown")).isNull(); } @Test |