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]