From: Fabrice Bellingard Date: Tue, 30 Oct 2012 16:11:34 +0000 (+0100) Subject: SONAR-3910 Handle the case of rule not translated X-Git-Tag: 3.4~417 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=416679f465a455779219f09fc466dfa173f1003e;p=sonarqube.git SONAR-3910 Handle the case of rule not translated --- diff --git a/sonar-core/src/main/java/org/sonar/core/i18n/I18nManager.java b/sonar-core/src/main/java/org/sonar/core/i18n/I18nManager.java index 694536a23df..ccdc1fffb25 100644 --- a/sonar-core/src/main/java/org/sonar/core/i18n/I18nManager.java +++ b/sonar-core/src/main/java/org/sonar/core/i18n/I18nManager.java @@ -110,6 +110,11 @@ public class I18nManager implements I18n, ServerExtension, BatchExtension { String result = null; String bundleBase = propertyToBundles.get(relatedProperty); + if (bundleBase == null) { + // this property has no translation + return null; + } + String filePath = bundleBase.replace('.', '/'); if (!"en".equals(locale.getLanguage())) { filePath += "_" + locale.getLanguage(); @@ -155,7 +160,6 @@ public class I18nManager implements I18n, ServerExtension, BatchExtension { return MessageFormat.format(message.replaceAll("'", "''"), parameters); } - ClassLoader getBundleClassLoader() { return i18nClassloader; } diff --git a/sonar-core/src/test/java/org/sonar/core/i18n/I18nManagerTest.java b/sonar-core/src/test/java/org/sonar/core/i18n/I18nManagerTest.java index 2e7b527c66d..44d62b70956 100644 --- a/sonar-core/src/test/java/org/sonar/core/i18n/I18nManagerTest.java +++ b/sonar-core/src/test/java/org/sonar/core/i18n/I18nManagerTest.java @@ -61,7 +61,7 @@ public class I18nManagerTest { List plugins = Arrays.asList(newPlugin("sqale"), newPlugin("frpack"), newPlugin("core"), newPlugin("checkstyle"), newPlugin("other")); when(pluginRepository.getMetadata()).thenReturn(plugins); - I18nClassloader i18nClassloader = new I18nClassloader(new ClassLoader[]{ + I18nClassloader i18nClassloader = new I18nClassloader(new ClassLoader[] { newCoreClassloader(), newFrenchPackClassloader(), newSqaleClassloader(), newCheckstyleClassloader() }); manager = new I18nManager(pluginRepository); @@ -109,7 +109,6 @@ public class I18nManagerTest { assertThat(manager.message(Locale.CHINA, "sqale.page", null)).isEqualTo("Sqale page title"); } - @Test public void should_return_default_value_if_missing_key() { assertThat(manager.message(Locale.ENGLISH, "unknown", "default")).isEqualTo("default"); @@ -145,6 +144,12 @@ public class I18nManagerTest { assertThat(html).isNull(); } + @Test + public void should_return_null_if_rule_not_internationalized() { + String html = manager.messageFromFile(Locale.ENGLISH, "UnknownRule.html", "foo.rule1.name", false); + assertThat(html).isNull(); + } + @Test public void should_locate_french_file() { String html = manager.messageFromFile(Locale.FRENCH, "ArchitectureRule.html", "checkstyle.rule1.name", false);