private static ListResponse loadFromStream(InputStream is) { try { return ListResponse.parseFrom(is); } catch (IOException e) { throw new IllegalStateException("Unable to get rules", e); } finally { IOUtils.closeQuietly(is); } }
@Test public void return_rules_in_protobuf() { dbTester.rules().insert(RuleTesting.newRule(RuleKey.of("java", "S001")).setConfigKey(null).setName(null)); dbTester.rules().insert(RuleTesting.newRule(RuleKey.of("java", "S002")).setConfigKey("I002").setName("Rule Two")); dbTester.getSession().commit(); Rules.ListResponse listResponse = tester.newRequest() .executeProtobuf(Rules.ListResponse.class); assertThat(listResponse.getRulesCount()).isEqualTo(2); assertThat(listResponse.getRules(0).getKey()).isEqualTo("S001"); assertThat(listResponse.getRules(0).getInternalKey()).isEqualTo(""); assertThat(listResponse.getRules(0).getName()).isEqualTo(""); assertThat(listResponse.getRules(1).getKey()).isEqualTo("S002"); assertThat(listResponse.getRules(1).getInternalKey()).isEqualTo("I002"); assertThat(listResponse.getRules(1).getName()).isEqualTo("Rule Two"); } }
@Override public void handle(Request wsRequest, Response wsResponse) throws Exception { final ListResponse.Builder listResponseBuilder = ListResponse.newBuilder(); final ListResponse.Rule.Builder ruleBuilder = ListResponse.Rule.newBuilder(); try (DbSession dbSession = dbClient.openSession(false)) { dbClient.ruleDao().selectEnabled(dbSession, resultContext -> { RuleDefinitionDto dto = resultContext.getResultObject(); ruleBuilder .clear() .setRepository(dto.getRepositoryKey()) .setKey(dto.getRuleKey()) .setName(nullToEmpty(dto.getName())) .setInternalKey(nullToEmpty(dto.getConfigKey())); listResponseBuilder.addRules(ruleBuilder.build()); }); } // JSON response is voluntarily not supported. This WS is for internal use. wsResponse.stream().setMediaType(MediaTypes.PROTOBUF); listResponseBuilder.build().writeTo(wsResponse.stream().output()); }
private static ListResponse loadFromStream(InputStream is) { try { return ListResponse.parseFrom(is); } catch (IOException e) { throw new IllegalStateException("Unable to get rules", e); } finally { IOUtils.closeQuietly(is); } }
@Override public List<Rule> load(@Nullable MutableBoolean fromCache) { WSLoaderResult<InputStream> result = wsLoader.loadStream(RULES_SEARCH_URL); ListResponse list = loadFromStream(result.get()); if (fromCache != null) { fromCache.setValue(result.isFromCache()); } return list.getRulesList(); }
/** * * This is part of the internal API. * This is a GET request. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/rules/list">Further information about this action online (including a response example)</a> * @since 5.2 */ public ListResponse list() { return call( new GetRequest(path("list")), ListResponse.parser()); }
@Override public List<Rule> load() { GetRequest getRequest = new GetRequest(RULES_SEARCH_URL); ListResponse list = loadFromStream(wsClient.call(getRequest).contentStream()); return list.getRulesList(); }
private static ListResponse loadFromStream(InputStream is) { try { return ListResponse.parseFrom(is); } catch (IOException e) { throw new IllegalStateException("Unable to get rules", e); } finally { IOUtils.closeQuietly(is); } }
@Override public void handle(Request wsRequest, Response wsResponse) throws Exception { final ListResponse.Builder listResponseBuilder = ListResponse.newBuilder(); final ListResponse.Rule.Builder ruleBuilder = ListResponse.Rule.newBuilder(); try (DbSession dbSession = dbClient.openSession(false)) { dbClient.ruleDao().selectEnabled(dbSession, resultContext -> { RuleDefinitionDto dto = resultContext.getResultObject(); ruleBuilder .clear() .setRepository(dto.getRepositoryKey()) .setKey(dto.getRuleKey()) .setName(nullToEmpty(dto.getName())) .setInternalKey(nullToEmpty(dto.getConfigKey())); listResponseBuilder.addRules(ruleBuilder.build()); }); } // JSON response is voluntarily not supported. This WS is for internal use. wsResponse.stream().setMediaType(MediaTypes.PROTOBUF); listResponseBuilder.build().writeTo(wsResponse.stream().output()); }
@Override public List<Rule> load() { GetRequest getRequest = new GetRequest(RULES_SEARCH_URL); ListResponse list = loadFromStream(wsClient.call(getRequest).contentStream()); return list.getRulesList(); }
/** * * This is part of the internal API. * This is a GET request. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/rules/list">Further information about this action online (including a response example)</a> * @since 5.2 */ public ListResponse list() { return call( new GetRequest(path("list")), ListResponse.parser()); }