This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit a059d48cd7a592dc25e8957b2fb5fd52bffa2978 Author: Mark Thomas <ma...@apache.org> AuthorDate: Fri Oct 30 12:20:52 2020 +0000 Fix alignment of version logger listener output. This time, add a unit test to check the alignment. CJK characters are assumed to be double width. --- .../catalina/startup/LocalStrings_de.properties | 10 ++- .../catalina/startup/LocalStrings_es.properties | 21 ++++-- .../catalina/startup/LocalStrings_fr.properties | 28 ++++---- .../catalina/startup/LocalStrings_ko.properties | 28 ++++---- .../catalina/startup/LocalStrings_ru.properties | 7 ++ .../catalina/startup/LocalStrings_zh_CN.properties | 8 +-- .../apache/tomcat/util/res/TestStringManager.java | 80 ++++++++++++++++++++++ 7 files changed, 138 insertions(+), 44 deletions(-) diff --git a/java/org/apache/catalina/startup/LocalStrings_de.properties b/java/org/apache/catalina/startup/LocalStrings_de.properties index f5539fa..2b7339f 100644 --- a/java/org/apache/catalina/startup/LocalStrings_de.properties +++ b/java/org/apache/catalina/startup/LocalStrings_de.properties @@ -41,10 +41,8 @@ userConfig.database=Fehler beim Laden der Benutzer Datenbank. userConfig.error=Fehler beim deployen einer Web-Applikation für den Benutzer [{0}] userConfig.start=UserConfig: Verarbeite START -versionLoggerListener.catalina.base=\n\ -\ CATALINA_BASE: {0} +versionLoggerListener.catalina.base=CATALINA_BASE: {0} versionLoggerListener.catalina.home=CATALINA_HOME: {0} -versionLoggerListener.os.arch=Architektur: {0} -versionLoggerListener.serverInfo.server.version=\n\ -\ Server Version: {0} -versionLoggerListener.vm.vendor=JVM Hersteller: {0} +versionLoggerListener.os.arch=Architektur: {0} +versionLoggerListener.serverInfo.server.version=Server Version: {0} +versionLoggerListener.vm.vendor=JVM Hersteller: {0} diff --git a/java/org/apache/catalina/startup/LocalStrings_es.properties b/java/org/apache/catalina/startup/LocalStrings_es.properties index 486245c..4d38e21 100644 --- a/java/org/apache/catalina/startup/LocalStrings_es.properties +++ b/java/org/apache/catalina/startup/LocalStrings_es.properties @@ -98,12 +98,21 @@ userConfig.deploy=Despliegue de la aplicación web para el usuario [{0}] userConfig.deploying=Desplegando aplicaciones web para el usuario userConfig.error=Error durante el despliegue de la aplicación web para el usario [{0}] userConfig.start="UserConfig": Procesando "START" -userConfig.stop="UserConfig": Tratamiento del "STOP" +userConfig.stop="UserConfig": Tratamiento del "STOP":q -versionLoggerListener.os.arch=Arquitectura: {0}\n -versionLoggerListener.os.version=Versión de Systema Operativo: {0}\n -versionLoggerListener.serverInfo.server.number=Número de versión de servidor: {0} -versionLoggerListener.serverInfo.server.version=Nombre de la versión del servidor: {0}\n -versionLoggerListener.vm.vendor=Vededor JVM: {0} +versionLoggerListener.arg=Command line argument: {0} +versionLoggerListener.catalina.base=CATALINA_BASE: {0} +versionLoggerListener.catalina.home=CATALINA_HOME: {0} +versionLoggerListener.env=Environment variable: {0} = {1} +versionLoggerListener.java.home=Java Home: {0} +versionLoggerListener.os.arch=Arquitectura: {0} +versionLoggerListener.os.name=OS Name: {0} +versionLoggerListener.os.version=Versión de Systema Operativo: {0} +versionLoggerListener.prop=System property: {0} = {1} +versionLoggerListener.serverInfo.server.built=Server built: {0} +versionLoggerListener.serverInfo.server.number=Número de versión de servidor: {0} +versionLoggerListener.serverInfo.server.version=Nombre de la versión del servidor: {0} +versionLoggerListener.vm.vendor =Vededor JVM: {0} +versionLoggerListener.vm.version=JVM Version: {0} webAnnotationSet.invalidInjection=El método de inyección de anotación no es un recurso válido diff --git a/java/org/apache/catalina/startup/LocalStrings_fr.properties b/java/org/apache/catalina/startup/LocalStrings_fr.properties index 6d48713..ce17686 100644 --- a/java/org/apache/catalina/startup/LocalStrings_fr.properties +++ b/java/org/apache/catalina/startup/LocalStrings_fr.properties @@ -165,19 +165,19 @@ userConfig.error=Erreur lors du déploiement de l''application web pour l''utili userConfig.start="UserConfig" : Traitement du "START" userConfig.stop="UserConfig" : Traitement du "STOP" -versionLoggerListener.arg=Argument de la ligne de commande : {0} -versionLoggerListener.catalina.base=CATALINA_BASE : {0} -versionLoggerListener.catalina.home=CATALINA_HOME : {0} -versionLoggerListener.env=Variable d’environnement : {0} = {1} -versionLoggerListener.java.home=Java Home : {0} -versionLoggerListener.os.arch=Architecture : {0} -versionLoggerListener.os.name=Nom de l''OS : {0} -versionLoggerListener.os.version=Version OS : {0} -versionLoggerListener.prop=Propriété système : {0} = {1} -versionLoggerListener.serverInfo.server.built=Serveur compilé : {0} -versionLoggerListener.serverInfo.server.number=Version du serveur : {0} -versionLoggerListener.serverInfo.server.version=Nom version serveur : {0} -versionLoggerListener.vm.vendor=Fournisseur de la JVM : {0} -versionLoggerListener.vm.version=Version JVM : {0} +versionLoggerListener.arg =Argument de la ligne de commande : {0} +versionLoggerListener.catalina.base =CATALINA_BASE : {0} +versionLoggerListener.catalina.home =CATALINA_HOME : {0} +versionLoggerListener.env =Variable d''environnement : {0} = {1} +versionLoggerListener.java.home =Java Home : {0} +versionLoggerListener.os.arch =Architecture : {0} +versionLoggerListener.os.name =Nom de l''OS : {0} +versionLoggerListener.os.version =Version OS : {0} +versionLoggerListener.prop =Propriété système : {0} = {1} +versionLoggerListener.serverInfo.server.built =Serveur compilé : {0} +versionLoggerListener.serverInfo.server.number =Version du serveur : {0} +versionLoggerListener.serverInfo.server.version=Nom version serveur : {0} +versionLoggerListener.vm.vendor =Fournisseur de la JVM : {0} +versionLoggerListener.vm.version =Version JVM : {0} webAnnotationSet.invalidInjection=L'annotation d'injection de ressource de la méthode est invalide diff --git a/java/org/apache/catalina/startup/LocalStrings_ko.properties b/java/org/apache/catalina/startup/LocalStrings_ko.properties index 11526af..547ec5b 100644 --- a/java/org/apache/catalina/startup/LocalStrings_ko.properties +++ b/java/org/apache/catalina/startup/LocalStrings_ko.properties @@ -165,19 +165,19 @@ userConfig.error=사용자 [{0}]을(를) 위한 웹 애플리케이션을 배치 userConfig.start=UserConfig: START 처리 중 userConfig.stop=UserConfig: STOP 처리 중 -versionLoggerListener.arg=명령 행 아규먼트: {0} -versionLoggerListener.catalina.base=CATALINA_BASE: {0} -versionLoggerListener.catalina.home=CATALINA_HOME: {0} -versionLoggerListener.env=환경 변수: {0} = {1} -versionLoggerListener.java.home=자바 홈: {0} -versionLoggerListener.os.arch=아키텍처: {0} -versionLoggerListener.os.name=운영체제 이름: {0} -versionLoggerListener.os.version=운영체제 버전: {0} -versionLoggerListener.prop=시스템 프로퍼티: {0} = {1} -versionLoggerListener.serverInfo.server.built=Server 빌드 시각: {0} -versionLoggerListener.serverInfo.server.number=Server 버전 번호: {0} -versionLoggerListener.serverInfo.server.version=서버 버전 이름: {0} -versionLoggerListener.vm.vendor=JVM 벤더: {0} -versionLoggerListener.vm.version=JVM 버전: {0} +versionLoggerListener.arg =명령 행 아규먼트: {0} +versionLoggerListener.catalina.base =CATALINA_BASE: {0} +versionLoggerListener.catalina.home =CATALINA_HOME: {0} +versionLoggerListener.env =환경 변수: {0} = {1} +versionLoggerListener.java.home =자바 홈: {0} +versionLoggerListener.os.arch =아키텍처: {0} +versionLoggerListener.os.name =운영체제 이름: {0} +versionLoggerListener.os.version =운영체제 버전: {0} +versionLoggerListener.prop =시스템 프로퍼티: {0} = {1} +versionLoggerListener.serverInfo.server.built =Server 빌드 시각: {0} +versionLoggerListener.serverInfo.server.number =Server 버전 번호: {0} +versionLoggerListener.serverInfo.server.version=서버 버전 이름: {0} +versionLoggerListener.vm.vendor =JVM 벤더: {0} +versionLoggerListener.vm.version =JVM 버전: {0} webAnnotationSet.invalidInjection=유효하지 않은 메소드 리소스 injection annotation입니다. diff --git a/java/org/apache/catalina/startup/LocalStrings_ru.properties b/java/org/apache/catalina/startup/LocalStrings_ru.properties index 7a537a8..2204c43 100644 --- a/java/org/apache/catalina/startup/LocalStrings_ru.properties +++ b/java/org/apache/catalina/startup/LocalStrings_ru.properties @@ -15,8 +15,15 @@ catalina.serverStartFail=Томкат не смог запуститься из-за того что обязательный компонент не смог запуститься +contextConfig.applicationUrl=Не возможно определить URL для web.xml приложения contextConfig.defaultPosition=Произошло в строке [{0}] столбце [{1}] hostConfig.deployDir=Установка веб приложения в папку [{0}] userConfig.database=Ошибка при загрузке базы данных пользователей + +versionLoggerListener.catalina.base=CATALINA_BASE: {0} +versionLoggerListener.catalina.home=CATALINA_HOME: {0} +versionLoggerListener.os.arch=Архитектура: {0} +versionLoggerListener.os.version=Версия ОС: {0} +versionLoggerListener.vm.version=Версия JVM: {0} diff --git a/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties b/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties index a1c4231..41c639a 100644 --- a/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties +++ b/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties @@ -161,17 +161,17 @@ userConfig.error=为用户 [{0}]部署web应用发生错误 userConfig.start=用户配置:处理开始 userConfig.stop=UserConfig:处理停止 -versionLoggerListener.arg=命令行参数:{0} +versionLoggerListener.arg=命令行参数: {0} versionLoggerListener.catalina.base=CATALINA_BASE: {0} versionLoggerListener.catalina.home=CATALINA_HOME: {0} -versionLoggerListener.env=环境变量:[{0}] = [{1}] +versionLoggerListener.env=环境变量: {0} = {1} versionLoggerListener.java.home=Java 环境变量: {0} versionLoggerListener.os.arch=架构: {0} versionLoggerListener.os.name=操作系统名称: {0} versionLoggerListener.os.version=OS.版本: {0} -versionLoggerListener.prop=系统属性: {0} = {1} +versionLoggerListener.prop=系统属性: {0} = {1} versionLoggerListener.serverInfo.server.built=服务器构建: {0} -versionLoggerListener.serverInfo.server.number=服务器版本号(: {0} +versionLoggerListener.serverInfo.server.number=服务器版本号: {0} versionLoggerListener.serverInfo.server.version=Server.服务器版本: {0} versionLoggerListener.vm.vendor=JVM.供应商: {0} versionLoggerListener.vm.version=Java虚拟机版本: {0} diff --git a/test/org/apache/tomcat/util/res/TestStringManager.java b/test/org/apache/tomcat/util/res/TestStringManager.java index 97959ab..05fa178 100644 --- a/test/org/apache/tomcat/util/res/TestStringManager.java +++ b/test/org/apache/tomcat/util/res/TestStringManager.java @@ -16,7 +16,11 @@ */ package org.apache.tomcat.util.res; +import java.io.InputStream; +import java.util.HashSet; import java.util.Locale; +import java.util.Properties; +import java.util.Set; import org.junit.Assert; import org.junit.Test; @@ -26,6 +30,18 @@ public class TestStringManager { private static final String PACKAGE_NAME = "org.apache.tomcat.util"; private static final StringManager sm = StringManager.getManager(PACKAGE_NAME); + private static final Locale[] ALL_LOCALES = new Locale[] { + Locale.ENGLISH, new Locale("cs"), Locale.GERMAN, new Locale("es"), Locale.FRENCH, Locale.JAPANESE, + Locale.KOREAN, new Locale("pr_BR"), new Locale("ru"), Locale.SIMPLIFIED_CHINESE }; + private static final Set<Locale> CJK_LOCALES; + + static { + CJK_LOCALES = new HashSet<>(); + CJK_LOCALES.add(Locale.SIMPLIFIED_CHINESE); + CJK_LOCALES.add(Locale.JAPANESE); + CJK_LOCALES.add(Locale.KOREAN); + } + @Test public void testNullKey() { boolean iaeThrown = false; @@ -67,4 +83,68 @@ public class TestStringManager { Assert.assertNull(sm.getLocale()); } + + @Test + public void testVersionLoggerListenerAlignment() throws Exception{ + // Get full list of properties from English + InputStream is = TestStringManager.class.getClassLoader().getResourceAsStream("org/apache/catalina/startup/LocalStrings.properties"); + Properties props = new Properties(); + props.load(is); + Set<String> versionLoggerListenerKeys = new HashSet<>(); + for (Object key : props.keySet()) { + if (key instanceof String) { + if (((String) key).startsWith("versionLoggerListener.")) { + versionLoggerListenerKeys.add((String) key); + } + } + } + + for (Locale locale : ALL_LOCALES) { + testVersionLoggerListenerAlignment(versionLoggerListenerKeys, locale); + } + } + + + private void testVersionLoggerListenerAlignment(Set<String> keys, Locale locale) { + System.out.println("\n" + locale.getDisplayName()); + StringManager sm = StringManager.getManager("org.apache.catalina.startup", locale); + int standardLength = -1; + for (String key : keys) { + String fullLine = sm.getString(key, "XXX"); + // Provides a visual check but be aware CJK characters may be + // displayed using full width (1 CJK character uses the space of two + // ASCII characters) as assumed by this test or may use a narrower + // representation. + System.out.println(fullLine); + int insertIndex = fullLine.indexOf("XXX"); + String preInsert = fullLine.substring(0, insertIndex); + int length = getFixedWidth(preInsert, locale); + if (standardLength == -1) { + standardLength = length; + } else { + Assert.assertEquals(locale.getDisplayName() + " - " + key, standardLength, length); + } + } + } + + + private int getFixedWidth(String s, Locale l) { + if (CJK_LOCALES.contains(l)) { + // This isn't perfect but it is good enough for this test. + // The test assumes CJK characters are all displayed double width + // Ubuntu uses double width characters by default. + // Eclipse uses 1.5 width characters by default. + int len = 0; + for (char c : s.toCharArray()) { + if (c < 128) { + len ++; + } else { + len += 2; + } + } + return len; + } else { + return s.length(); + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org