private Collection<Language> listMatchingLanguages(@Nullable String query, int pageSize) { Pattern pattern = Pattern.compile(query == null ? MATCH_ALL : MATCH_ALL + Pattern.quote(query) + MATCH_ALL, Pattern.CASE_INSENSITIVE); SortedMap<String, Language> languagesByName = Maps.newTreeMap(); for (Language lang : languages.all()) { if (pattern.matcher(lang.getKey()).matches() || pattern.matcher(lang.getName()).matches()) { languagesByName.put(lang.getName(), lang); } } List<Language> result = Lists.newArrayList(languagesByName.values()); if (pageSize > 0 && pageSize < result.size()) { result = result.subList(0, pageSize); } return result; }
private String profileLabel(QualityProfile profile) { Optional<Language> language = languageRepository.find(profile.getLanguageKey()); String languageName = language.isPresent() ? language.get().getName() : profile.getLanguageKey(); return String.format("'%s' (%s)", profile.getQpName(), languageName); }
/** * Get list of all supported languages. */ @Override public Collection<Language> all() { org.sonar.api.resources.Language[] all = languages.all(); Collection<Language> result = new ArrayList<>(all.length); for (org.sonar.api.resources.Language language : all) { result.add(new Language(language.getKey(), language.getName(), language.getFileSuffixes())); } return result; }
/** * Creates a list of languages */ public Languages(Language... languages) { LOG.debug("Available languages:"); for (Language language : languages) { map.put(language.getKey(), language); LOG.debug(" * " + language.getName() + " => \"" + language.getKey() + "\""); } }
/** * Get language. */ @Override @CheckForNull public Language get(String languageKey) { org.sonar.api.resources.Language language = languages.get(languageKey); return language != null ? new Language(language.getKey(), language.getName(), language.getFileSuffixes()) : null; }
private void writeLanguageFields(QualityProfile.Builder profileBuilder, QProfileDto profile) { String languageKey = profile.getLanguage(); if (languageKey == null) { return; } profileBuilder.setLanguage(languageKey); String languageName = languages.get(languageKey).getName(); if (languageName != null) { profileBuilder.setLanguageName(languageName); } }
private void setLanguageName(Rules.Rule.Builder ruleResponse, RuleDefinitionDto ruleDto, Set<String> fieldsToReturn) { String languageKey = ruleDto.getLanguage(); if (shouldReturnField(fieldsToReturn, FIELD_LANGUAGE_NAME) && languageKey != null) { Language language = languages.get(languageKey); ruleResponse.setLangName(language == null ? languageKey : language.getName()); } }
private void writeProfile(Map<String, Rules.QProfile> profilesResponse, QProfileDto profile) { Rules.QProfile.Builder profileResponse = Rules.QProfile.newBuilder(); ofNullable(profile.getName()).ifPresent(profileResponse::setName); if (profile.getLanguage() != null) { profileResponse.setLang(profile.getLanguage()); Language language = languages.get(profile.getLanguage()); String langName = language == null ? profile.getLanguage() : language.getName(); profileResponse.setLangName(langName); } ofNullable(profile.getParentKee()).ifPresent(profileResponse::setParent); profilesResponse.put(profile.getKee(), profileResponse.build()); } }
private void addLanguages(JsonWriter json) { json.name("languages").beginObject(); for (Language language : languages.all()) { json.prop(language.getKey(), language.getName()); } json.endObject(); }
private CopyWsResponse buildResponse(QProfileDto copiedProfile, boolean isDefault) { String languageKey = copiedProfile.getLanguage(); Language language = languages.get(copiedProfile.getLanguage()); String parentKey = copiedProfile.getParentKee(); CopyWsResponse.Builder wsResponse = CopyWsResponse.newBuilder(); wsResponse.setKey(copiedProfile.getKee()); wsResponse.setName(copiedProfile.getName()); wsResponse.setLanguage(languageKey); ofNullable(language).ifPresent(l -> wsResponse.setLanguageName(l.getName())); wsResponse.setIsDefault(isDefault); wsResponse.setIsInherited(parentKey != null); ofNullable(parentKey).ifPresent(wsResponse::setParentKey); return wsResponse.build(); } }
private Issues.Languages.Builder formatLanguages() { Issues.Languages.Builder wsLangs = Issues.Languages.newBuilder(); Issues.Language.Builder wsLang = Issues.Language.newBuilder(); for (Language lang : languages.all()) { wsLang .clear() .setKey(lang.getKey()) .setName(lang.getName()); wsLangs.addLanguages(wsLang); } return wsLangs; }
public Common.Rule.Builder formatRule(RuleDefinitionDto rule) { Common.Rule.Builder builder = Common.Rule.newBuilder() .setKey(rule.getKey().toString()) .setName(nullToEmpty(rule.getName())) .setStatus(Common.RuleStatus.valueOf(rule.getStatus().name())); builder.setLang(nullToEmpty(rule.getLanguage())); Language lang = languages.get(rule.getLanguage()); if (lang != null) { builder.setLangName(lang.getName()); } return builder; }
private void writeRule(JsonWriter json, RuleDefinitionDto rule, @Nullable RuleRepositoryDto repository) { String repositoryKey = rule.getRepositoryKey(); json.prop(ATTRIBUTE_KEY, rule.getKey().toString()) .prop(ATTRIBUTE_NAME, rule.getName()) .prop(ATTRIBUTE_PLUGIN_KEY, repositoryKey); if (repository != null) { String languageKey = repository.getLanguage(); Language language = languages.get(languageKey); json.prop(ATTRIBUTE_PLUGIN_NAME, repository.getName()); json.prop(ATTRIBUTE_LANGUAGE_KEY, languageKey); json.prop(ATTRIBUTE_LANGUAGE_NAME, language == null ? null : language.getName()); } }
@Test public void added_event_if_qp_is_added() { QualityProfile qp = qp(QP_NAME_1, LANGUAGE_KEY_1, new Date()); qProfileStatusRepository.register(qp.getQpKey(), ADDED); Language language = mockLanguageInRepository(LANGUAGE_KEY_1); mockMeasures(treeRootHolder.getRoot(), null, arrayOf(qp)); underTest.execute(new TestComputationStepContext()); verify(eventRepository).add(eq(treeRootHolder.getRoot()), eventArgumentCaptor.capture()); verifyNoMoreInteractions(eventRepository); verifyEvent(eventArgumentCaptor.getValue(), "Use '" + qp.getQpName() + "' (" + language.getName() + ")", null); }
@Test public void no_more_used_event_if_qp_is_removed() { QualityProfile qp = qp(QP_NAME_1, LANGUAGE_KEY_1, new Date()); qProfileStatusRepository.register(qp.getQpKey(), REMOVED); mockMeasures(treeRootHolder.getRoot(), arrayOf(qp), null); Language language = mockLanguageInRepository(LANGUAGE_KEY_1); underTest.execute(new TestComputationStepContext()); verify(eventRepository).add(eq(treeRootHolder.getRoot()), eventArgumentCaptor.capture()); verifyNoMoreInteractions(eventRepository); verifyEvent(eventArgumentCaptor.getValue(), "Stop using '" + qp.getQpName() + "' (" + language.getName() + ")", null); }
private Tuple addProfile(Multimap<QProfileName, ActiveRuleChange> profiles, Languages languages, ActiveRuleChange.Type type) { String profileName = randomLowerCaseText(); int ruleId1 = new Random().nextInt(952); int ruleId2 = new Random().nextInt(952); Language language = newLanguage(randomLowerCaseText(), randomLowerCaseText()); languages.add(language); profiles.putAll(new QProfileName(language.getKey(), profileName), asList(new ActiveRuleChange( type, ActiveRuleKey.parse("qp:repo:rule1"), new RuleDefinitionDto().setId(ruleId1)), new ActiveRuleChange(type, ActiveRuleKey.parse("qp:repo:rule2"), new RuleDefinitionDto().setId(ruleId2)))); return tuple(profileName, language.getKey(), language.getName(), 2); }
@Override public void handle(Request request, Response response) throws Exception { String query = request.param(Param.TEXT_QUERY); int pageSize = request.mandatoryParamAsInt("ps"); try (JsonWriter json = response.newJsonWriter()) { json.beginObject().name("languages").beginArray(); for (Language language : listMatchingLanguages(query, pageSize)) { json.beginObject().prop("key", language.getKey()).prop("name", language.getName()).endObject(); } json.endArray().endObject(); } }
@Override public void define(RulesDefinition.Context context) { for (Language language : languages.all()) { RulesDefinition.NewRepository repo = context.createRepository(commonRepositoryForLang(language.getKey()), language.getKey()); repo.setName("Common " + language.getName()); defineBranchCoverageRule(repo); defineLineCoverageRule(repo); defineCommentDensityRule(repo); defineDuplicatedBlocksRule(repo); defineFailedUnitTestRule(repo); defineSkippedUnitTestRule(repo); repo.done(); } }
@Test public void changed_event_if_qp_has_been_updated() { QualityProfile qp1 = qp(QP_NAME_1, LANGUAGE_KEY_1, parseDateTime("2011-04-25T01:05:13+0100")); QualityProfile qp2 = qp(QP_NAME_1, LANGUAGE_KEY_1, parseDateTime("2011-04-25T01:05:17+0100")); qProfileStatusRepository.register(qp2.getQpKey(), UPDATED); mockMeasures(treeRootHolder.getRoot(), arrayOf(qp1), arrayOf(qp2)); Language language = mockLanguageInRepository(LANGUAGE_KEY_1); underTest.execute(new TestComputationStepContext()); verify(eventRepository).add(eq(treeRootHolder.getRoot()), eventArgumentCaptor.capture()); verifyNoMoreInteractions(eventRepository); verifyEvent(eventArgumentCaptor.getValue(), "Changes in '" + qp2.getQpName() + "' (" + language.getName() + ")", "from=" + UtcDateUtils.formatDateTime(parseDateTime("2011-04-25T01:05:14+0100")) + ";key=" + qp1.getQpKey() + ";to=" + UtcDateUtils.formatDateTime(parseDateTime("2011-04-25T01:05:18+0100"))); }
@Test public void profile_info() { QProfileDto profile = db.qualityProfiles().insert(db.getDefaultOrganization(), p -> p.setLanguage(XOO1.getKey())); ShowResponse result = call(ws.newRequest().setParam(PARAM_KEY, profile.getKee())); assertThat(result.getProfile()) .extracting(QualityProfile::getKey, QualityProfile::getName, QualityProfile::getIsBuiltIn, QualityProfile::getLanguage, QualityProfile::getLanguageName, QualityProfile::getIsInherited) .containsExactly(profile.getKee(), profile.getName(), profile.isBuiltIn(), profile.getLanguage(), XOO1.getName(), false); }