This is an automated email from the ASF dual-hosted git repository.

markt-asf pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/main by this push:
     new f2cda2ec0f Refactor to reduce duplication
f2cda2ec0f is described below

commit f2cda2ec0f98c50cb2a98edf4d882f0474d8350c
Author: Mark Thomas <[email protected]>
AuthorDate: Mon Jul 27 18:20:55 2026 +0100

    Refactor to reduce duplication
---
 .../apache/catalina/webresources/AbstractResource.java  | 17 +++++++++++++++++
 java/org/apache/catalina/webresources/FileResource.java | 12 +-----------
 .../apache/catalina/webresources/JarResourceRoot.java   | 13 +------------
 .../catalina/webresources/LocalStrings.properties       |  2 +-
 .../catalina/webresources/LocalStrings_fr.properties    |  2 +-
 .../catalina/webresources/LocalStrings_ja.properties    |  2 +-
 .../catalina/webresources/LocalStrings_ko.properties    |  2 +-
 .../catalina/webresources/LocalStrings_zh_CN.properties |  2 +-
 8 files changed, 24 insertions(+), 28 deletions(-)

diff --git a/java/org/apache/catalina/webresources/AbstractResource.java 
b/java/org/apache/catalina/webresources/AbstractResource.java
index eb1ecda85d..88f6f8c895 100644
--- a/java/org/apache/catalina/webresources/AbstractResource.java
+++ b/java/org/apache/catalina/webresources/AbstractResource.java
@@ -16,7 +16,11 @@
  */
 package org.apache.catalina.webresources;
 
+import java.io.File;
+import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.attribute.BasicFileAttributes;
 import java.security.MessageDigest;
 
 import org.apache.catalina.WebResource;
@@ -224,4 +228,17 @@ public abstract class AbstractResource implements 
WebResource {
      * @return the logger
      */
     protected abstract Log getLog();
+
+
+    protected long getCreation(File file) {
+        try {
+            BasicFileAttributes attrs = Files.readAttributes(file.toPath(), 
BasicFileAttributes.class);
+            return attrs.creationTime().toMillis();
+        } catch (IOException ioe) {
+            if (getLog().isDebugEnabled()) {
+                
getLog().debug(sm.getString("abstractResource.getCreationFail", 
file.getPath()), ioe);
+            }
+            return file.lastModified();
+        }
+    }
 }
diff --git a/java/org/apache/catalina/webresources/FileResource.java 
b/java/org/apache/catalina/webresources/FileResource.java
index 08faa14557..b1ffb69b81 100644
--- a/java/org/apache/catalina/webresources/FileResource.java
+++ b/java/org/apache/catalina/webresources/FileResource.java
@@ -26,8 +26,6 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.attribute.BasicFileAttributes;
 import java.security.cert.Certificate;
 import java.util.concurrent.locks.Lock;
 import java.util.jar.Manifest;
@@ -289,15 +287,7 @@ public class FileResource extends AbstractResource {
 
     @Override
     public long getCreation() {
-        try {
-            BasicFileAttributes attrs = 
Files.readAttributes(resource.toPath(), BasicFileAttributes.class);
-            return attrs.creationTime().toMillis();
-        } catch (IOException ioe) {
-            if (log.isDebugEnabled()) {
-                log.debug(sm.getString("fileResource.getCreationFail", 
resource.getPath()), ioe);
-            }
-            return resource.lastModified();
-        }
+        return getCreation(resource);
     }
 
     @Override
diff --git a/java/org/apache/catalina/webresources/JarResourceRoot.java 
b/java/org/apache/catalina/webresources/JarResourceRoot.java
index 8669bd617b..74d78476c4 100644
--- a/java/org/apache/catalina/webresources/JarResourceRoot.java
+++ b/java/org/apache/catalina/webresources/JarResourceRoot.java
@@ -17,14 +17,11 @@
 package org.apache.catalina.webresources;
 
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.attribute.BasicFileAttributes;
 import java.security.cert.Certificate;
 import java.util.jar.Manifest;
 
@@ -131,15 +128,7 @@ public class JarResourceRoot extends AbstractResource {
 
     @Override
     public long getCreation() {
-        try {
-            BasicFileAttributes attrs = Files.readAttributes(base.toPath(), 
BasicFileAttributes.class);
-            return attrs.creationTime().toMillis();
-        } catch (IOException ioe) {
-            if (log.isDebugEnabled()) {
-                log.debug(sm.getString("fileResource.getCreationFail", 
base.getPath()), ioe);
-            }
-            return base.lastModified();
-        }
+        return getCreation(base);
     }
 
     @Override
diff --git a/java/org/apache/catalina/webresources/LocalStrings.properties 
b/java/org/apache/catalina/webresources/LocalStrings.properties
index bc79c3414e..0e0549e4ff 100644
--- a/java/org/apache/catalina/webresources/LocalStrings.properties
+++ b/java/org/apache/catalina/webresources/LocalStrings.properties
@@ -27,6 +27,7 @@ abstractFileResourceSet.canonicalPathFail=Failed to determine 
the canonical path
 abstractResource.getContentFail=Unable to return [{0}] as a byte array
 abstractResource.getContentFirst=getContent must be called before 
getCertificates
 abstractResource.getContentTooLarge=Unable to return [{0}] as a byte array 
since the resource is [{1}] bytes in size which is larger than the maximum size 
of a byte array
+abstractResource.getCreationFail=Unable to determine the creation time for the 
resource [{0}]
 
 abstractResourceSet.checkPath=The requested path [{0}] is not valid. It must 
begin with "/".
 
@@ -55,7 +56,6 @@ extractingRoot.pathTraversal=Detected path traversal attempt 
in JAR name [{0}]
 extractingRoot.targetFailed=Failed to create the directory [{0}] for extracted 
JAR files
 
 fileResource.getCanonicalPathFail=Unable to determine the canonical path for 
the resource [{0}]
-fileResource.getCreationFail=Unable to determine the creation time for the 
resource [{0}]
 fileResource.getUrlFail=Unable to determine a URL for the resource [{0}]
 
 fileResourceSet.notFile=The file specified by base and internal path 
[{0}]{1}[{2}] does not exist.
diff --git a/java/org/apache/catalina/webresources/LocalStrings_fr.properties 
b/java/org/apache/catalina/webresources/LocalStrings_fr.properties
index bd22a5210a..4d80b39736 100644
--- a/java/org/apache/catalina/webresources/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/webresources/LocalStrings_fr.properties
@@ -24,6 +24,7 @@ abstractFileResourceSet.canonicalfileCheckFailed=La ressource 
de l''application
 abstractResource.getContentFail=Impossible de retourner [{0}] en tant que 
tableau d''octets
 abstractResource.getContentFirst=getContent doit être appelé avant 
getCertificates
 abstractResource.getContentTooLarge=Impossible de retourner [{0}] comme 
tableau d''octets car la ressource a une taille de [{1}] octets qui est 
supérieure à la taille maximale d''un tableau d''octets
+abstractResource.getCreationFail=Impossible de déterminer la date de création 
de la ressource [{0}]
 
 abstractResourceSet.checkPath=Le chemin demandé [{0}] n''est pas valide, il 
doit commencer par ''/''
 
@@ -47,7 +48,6 @@ extractingRoot.jarFailed=Echec de l’extraction du fichier JAR 
[{0}]
 extractingRoot.targetFailed=Echec de la création du répertoire [{0}] pour 
l''extraction des fichiers contenus dans le JAR
 
 fileResource.getCanonicalPathFail=Impossible de déterminer le chemin canonique 
pour la ressource [{0}]
-fileResource.getCreationFail=Impossible de déterminer la date de création de 
la ressource [{0}]
 fileResource.getUrlFail=Impossible de déterminer l''URL pour la ressource [{0}]
 
 fileResourceSet.notFile=Le fichier spécifié par ses chemins de base et 
internes [{0}]{1}[{2}] n''existe pas
diff --git a/java/org/apache/catalina/webresources/LocalStrings_ja.properties 
b/java/org/apache/catalina/webresources/LocalStrings_ja.properties
index 3b39af3f2b..8ee0537fbe 100644
--- a/java/org/apache/catalina/webresources/LocalStrings_ja.properties
+++ b/java/org/apache/catalina/webresources/LocalStrings_ja.properties
@@ -24,6 +24,7 @@ abstractFileResourceSet.canonicalfileCheckFailed=正規パス [{2}] 
が一致し
 abstractResource.getContentFail=[{0}]をバイト配列として返すことができません。
 abstractResource.getContentFirst=getContent は getCertificates より前に呼び出す必要があります
 abstractResource.getContentTooLarge=リソースがバイト配列の最大サイズよりも大きいサイズの [{1}] 
バイトであるため、[{0}] をバイト配列として返すことができません
+abstractResource.getCreationFail=リソース [{0}] の作成時間を特定できません
 
 abstractResourceSet.checkPath=リクエストパス [{0}] が無効です。"/"で始まる必要があります。
 
@@ -47,7 +48,6 @@ extractingRoot.jarFailed=JARファイル[{0}]の抽出に失敗しました
 extractingRoot.targetFailed=JAR ファイルを展開するためのディレクトリ [{0}] を作成できません。
 
 fileResource.getCanonicalPathFail=リソース [{0}] の正規化パスを取得できません
-fileResource.getCreationFail=リソース [{0}] の作成時間を特定できません
 fileResource.getUrlFail=リソース [{0}] の URL を取得できません。
 
 fileResourceSet.notFile=基本パスおよび内部パスで指定されたファイル [{0}]{1}[{2}] がありません。
diff --git a/java/org/apache/catalina/webresources/LocalStrings_ko.properties 
b/java/org/apache/catalina/webresources/LocalStrings_ko.properties
index a88d650c37..cb7e050930 100644
--- a/java/org/apache/catalina/webresources/LocalStrings_ko.properties
+++ b/java/org/apache/catalina/webresources/LocalStrings_ko.properties
@@ -22,6 +22,7 @@ abstractFileResourceSet.canonicalfileCheckFailed=경로 [{1}]에 
위치한 웹 
 
 abstractResource.getContentFail=[{0}]을(를) 바이트 배열로 반환할 수 없습니다.
 abstractResource.getContentTooLarge=리소스의 크기가 [{1}] 바이트로서, 이는 바이트 배열 최대 크기보다 크기 
때문에, [{0}]을(를) 바이트 배열로서 반환할 수 없습니다.
+abstractResource.getCreationFail=리소스 [{0}]의 생성 시간을 결정할 수 없습니다.
 
 abstractResourceSet.checkPath=요청된 경로 [{0}]은(는) 유효하지 않습니다. 반드시 "/"로 시작해야 합니다.
 
@@ -42,7 +43,6 @@ extractingRoot.jarFailed=JAR 파일 [{0}]을(를) 추출하지 못했습니다.
 extractingRoot.targetFailed=JAR 파일들의 압축을 풀기 위한 디렉토리 [{0}]을(를) 생성할 수 없습니다.
 
 fileResource.getCanonicalPathFail=리소스 [{0}]에 대한 canonical 경로를 결정할 수 없습니다.
-fileResource.getCreationFail=리소스 [{0}]의 생성 시간을 결정할 수 없습니다.
 fileResource.getUrlFail=리소스 [{0}]을(를) 위한 URL을 결정할 수 없습니다.
 
 fileResourceSet.notFile=base와 내부 경로 [{0}]{1}[{2}]에 의해 지정된 파일이 존재하지 않습니다.
diff --git 
a/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties 
b/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties
index 2ebe6eb08d..3f0bf45549 100644
--- a/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties
@@ -22,6 +22,7 @@ 
abstractFileResourceSet.canonicalfileCheckFailed=路径[{1}]处的web应用程
 
 abstractResource.getContentFail=无法把[{0}]作为byte数组返回
 abstractResource.getContentTooLarge=无法返回[{0}]作为字节数组,因为资源的大小[[1]]个字节大于字节数组的最大大小
+abstractResource.getCreationFail=无法确定资源 [{0}] 的创建时间
 
 abstractResourceSet.checkPath=请求的路径[{0}]无效。必须以“/”开头。
 
@@ -42,7 +43,6 @@ extractingRoot.jarFailed=解压JAR文件[{0}]失败
 extractingRoot.targetFailed=无法为提取的 JAR 文件创建目录 [{0}]
 
 fileResource.getCanonicalPathFail=不能判断资源的标准路径[{0}]
-fileResource.getCreationFail=无法确定资源 [{0}] 的创建时间
 fileResource.getUrlFail=不能决定一个url 为资源[{0}]
 
 fileResourceSet.notFile=由基路径和内部路径[{0}]{1}[{2}]指定的文件不存在。


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to