You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/10/30 12:35:16 UTC

[tomcat] 03/04: Fix alignment of version logger listener output.

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org