private Predicate<QProfileDto> hasLanguagePlugin() { return p -> languages.get(p.getLanguage()) != null; }
@Test public void test_no_languages() { Languages languages = new Languages(); assertThat(languages.get("foo")).isNull(); assertThat(languages.getSuffixes("foo")).isEmpty(); }
private Map<String, Map<String, BuiltInQualityProfile>> validateAndClean(BuiltInQualityProfilesDefinition.Context context) { Map<String, Map<String, BuiltInQualityProfile>> profilesByLanguageAndName = context.profilesByLanguageAndName(); profilesByLanguageAndName.entrySet() .removeIf(entry -> { String language = entry.getKey(); if (languages.get(language) == null) { LOGGER.info("Language {} is not installed, related quality profiles are ignored", language); return true; } return false; }); return profilesByLanguageAndName; }
public Language getLanguage(QProfileDto profile) { Language language = languages.get(profile.getLanguage()); checkFound(language, "Quality Profile with key '%s' does not exist", profile.getKee()); return language; }
/** * 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()); } }
void onChange(Multimap<QProfileName, ActiveRuleChange> changedProfiles, long startDate, long endDate) { if (config.getBoolean(DISABLE_NOTIFICATION_ON_BUILT_IN_QPROFILES).orElse(false)) { return; } BuiltInQualityProfilesNotification notification = new BuiltInQualityProfilesNotification(); changedProfiles.keySet().stream() .map(changedProfile -> { String profileName = changedProfile.getName(); Language language = languages.get(changedProfile.getLanguage()); Collection<ActiveRuleChange> activeRuleChanges = changedProfiles.get(changedProfile); int newRules = (int) activeRuleChanges.stream().map(ActiveRuleChange::getType).filter(ACTIVATED::equals).count(); int updatedRules = (int) activeRuleChanges.stream().map(ActiveRuleChange::getType).filter(UPDATED::equals).count(); int removedRules = (int) activeRuleChanges.stream().map(ActiveRuleChange::getType).filter(DEACTIVATED::equals).count(); return Profile.newBuilder() .setProfileName(profileName) .setLanguageKey(language.getKey()) .setLanguageName(language.getName()) .setNewRules(newRules) .setUpdatedRules(updatedRules) .setRemovedRules(removedRules) .setStartDate(startDate) .setEndDate(endDate) .build(); }) .forEach(notification::addProfile); notificationManager.scheduleForSending(notification.serialize()); } }
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 execute(RulesDefinition... defs) { ServerPluginRepository pluginRepository = mock(ServerPluginRepository.class); when(pluginRepository.getPluginKey(any(RulesDefinition.class))).thenReturn(FAKE_PLUGIN_KEY); RuleDefinitionsLoader loader = new RuleDefinitionsLoader(mock(DeprecatedRulesDefinitionLoader.class), mock(CommonRuleDefinitionsImpl.class), pluginRepository, defs); Languages languages = mock(Languages.class); when(languages.get(any())).thenReturn(mock(Language.class)); reset(webServerRuleFinder); RegisterRules task = new RegisterRules(loader, qProfileRules, dbClient, ruleIndexer, activeRuleIndexer, languages, system, organizationFlags, webServerRuleFinder, uuidFactory); task.start(); // Execute a commit to refresh session state as the task is using its own session db.getSession().commit(); verify(webServerRuleFinder).startCaching(); }
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(); } }
@Test public void should_add_several_times_the_same_language() { Languages languages = new Languages( language("fake"), language("fake")); assertThat(languages.get("fake").getKey()).isEqualTo("fake"); }
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()); } }
if (languages.get(repoDef.language()) != null) { for (RulesDefinition.Rule ruleDef : repoDef.rules()) { if (noTemplateRuleWithOrganizationsEnabled(registerRulesContext, orgsEnabled, ruleDef)) {
@Test public void return_all_rule_fields_by_default() { RuleDefinitionDto rule = db.rules().insert(r -> r.setLanguage("java")); indexRules(); Rules.SearchResponse response = ws.newRequest().executeProtobuf(Rules.SearchResponse.class); Rules.Rule result = response.getRules(0); assertThat(result.getCreatedAt()).isNotEmpty(); assertThat(result.getEffortToFixDescription()).isNotEmpty(); assertThat(result.getHtmlDesc()).isNotEmpty(); assertThat(result.hasIsTemplate()).isTrue(); assertThat(result.getLang()).isEqualTo(rule.getLanguage()); assertThat(result.getLangName()).isEqualTo(languages.get(rule.getLanguage()).getName()); assertThat(result.getName()).isNotEmpty(); assertThat(result.getRepo()).isNotEmpty(); assertThat(result.getSeverity()).isNotEmpty(); assertThat(result.getType().name()).isEqualTo(RuleType.valueOf(rule.getType()).name()); }
private CreateWsResponse buildResponse(QProfileResult result, OrganizationDto organization) { String language = result.profile().getLanguage(); CreateWsResponse.QualityProfile.Builder builder = CreateWsResponse.QualityProfile.newBuilder() .setOrganization(organization.getKey()) .setKey(result.profile().getKee()) .setName(result.profile().getName()) .setLanguage(language) .setLanguageName(languages.get(result.profile().getLanguage()).getName()) .setIsDefault(false) .setIsInherited(false); if (!result.infos().isEmpty()) { builder.getInfosBuilder().addAllInfos(result.infos()); } if (!result.warnings().isEmpty()) { builder.getWarningsBuilder().addAllWarnings(result.warnings()); } return CreateWsResponse.newBuilder().setProfile(builder.build()).build(); }
@Test public void should_return_specified_fields() { RuleDefinitionDto rule = db.rules().insert(r1 -> r1.setLanguage("java")); indexRules(); checkField(rule, "repo", Rule::getRepo, rule.getRepositoryKey()); checkField(rule, "name", Rule::getName, rule.getName()); checkField(rule, "severity", Rule::getSeverity, rule.getSeverityString()); checkField(rule, "status", r -> r.getStatus().toString(), rule.getStatus().toString()); checkField(rule, "internalKey", Rule::getInternalKey, rule.getConfigKey()); checkField(rule, "isTemplate", Rule::getIsTemplate, rule.isTemplate()); checkField(rule, "sysTags", r -> r.getSysTags().getSysTagsList().stream().collect(Collectors.joining(",")), rule.getSystemTags().stream().collect(Collectors.joining(","))); checkField(rule, "lang", Rule::getLang, rule.getLanguage()); checkField(rule, "langName", Rule::getLangName, languages.get(rule.getLanguage()).getName()); checkField(rule, "gapDescription", Rule::getGapDescription, rule.getGapDescription()); // to be continued... }
private void writeResponse(JsonWriter json, OrganizationDto organization, QProfileRestoreSummary summary) { QProfileDto profile = summary.getProfile(); String languageKey = profile.getLanguage(); Language language = languages.get(languageKey); JsonWriter jsonProfile = json.beginObject().name("profile").beginObject(); jsonProfile .prop("organization", organization.getKey()) .prop("key", profile.getKee()) .prop("name", profile.getName()) .prop("language", languageKey) .prop("isDefault", false) .prop("isInherited", false); if (language != null) { jsonProfile.prop("languageName", language.getName()); } jsonProfile.endObject(); BulkChangeResult ruleChanges = summary.getRuleChanges(); json.prop("ruleSuccesses", ruleChanges.countSucceeded()); json.prop("ruleFailures", ruleChanges.countFailed()); json.endObject().close(); } }
private String profileLabel(QProfile profile) { Language language = languages.get(profile.getLanguage()); String languageName = language != null ? language.getName() : profile.getLanguage(); return String.format("'%s' (%s)", profile.getName(), languageName); }