From 687e5c3bf1d25b1eeaf1b214ca212f3606fda8a3 Mon Sep 17 00:00:00 2001 From: Timi Date: Thu, 6 Nov 2025 17:41:54 +0800 Subject: [PATCH] multilingual args use Map --- pom.xml | 2 +- src/main/java/com/imyeyu/java/TimiJava.java | 9 ++++++++ .../com/imyeyu/java/bean/LanguageMapping.java | 4 +++- .../imyeyu/java/bean/LanguageMsgMapping.java | 8 +++++++ .../com/imyeyu/java/bean/timi/TimiError.java | 21 +++++++++++++++++++ .../imyeyu/java/bean/timi/TimiException.java | 21 +++++++++++++++++++ .../imyeyu/java/bean/timi/TimiResponse.java | 20 ++++++++++++++++++ 7 files changed, 83 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 2cf3f19..a83d391 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.imyeyu.java timi-java - 0.0.1 + 0.0.2 jar diff --git a/src/main/java/com/imyeyu/java/TimiJava.java b/src/main/java/com/imyeyu/java/TimiJava.java index 233e87d..dc9b4ac 100644 --- a/src/main/java/com/imyeyu/java/TimiJava.java +++ b/src/main/java/com/imyeyu/java/TimiJava.java @@ -1,5 +1,7 @@ package com.imyeyu.java; +import java.io.PrintWriter; +import java.io.StringWriter; import java.util.Collection; import java.util.Map; @@ -83,4 +85,11 @@ public interface TimiJava { } return null; } + + static String toString(Exception e) { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + e.printStackTrace(pw); + return sw.toString(); + } } diff --git a/src/main/java/com/imyeyu/java/bean/LanguageMapping.java b/src/main/java/com/imyeyu/java/bean/LanguageMapping.java index 7949abe..85d4a8e 100644 --- a/src/main/java/com/imyeyu/java/bean/LanguageMapping.java +++ b/src/main/java/com/imyeyu/java/bean/LanguageMapping.java @@ -1,5 +1,7 @@ package com.imyeyu.java.bean; +import java.util.Map; + /** * @author 夜雨 * @since 2024-04-03 11:27 @@ -14,5 +16,5 @@ public interface LanguageMapping { String text(String key, String def); - String textArgs(String key, Object... args); + String textArgs(String key, Map argsMap); } diff --git a/src/main/java/com/imyeyu/java/bean/LanguageMsgMapping.java b/src/main/java/com/imyeyu/java/bean/LanguageMsgMapping.java index 64ba65f..635d956 100644 --- a/src/main/java/com/imyeyu/java/bean/LanguageMsgMapping.java +++ b/src/main/java/com/imyeyu/java/bean/LanguageMsgMapping.java @@ -1,5 +1,7 @@ package com.imyeyu.java.bean; +import java.util.Map; + /** * @author 夜雨 * @since 2024-04-01 10:28 @@ -10,11 +12,17 @@ public interface LanguageMsgMapping { T msgKey(String msgKey); + T msgKey(String msgKey, Map msgArgs); + void setMsg(String msg); String getMsg(); void setMsgKey(String msgKey); + void setMsgKey(String msgKey, Map msgArgs); + String getMsgKey(); + + Map getMsgArgs(); } diff --git a/src/main/java/com/imyeyu/java/bean/timi/TimiError.java b/src/main/java/com/imyeyu/java/bean/timi/TimiError.java index 85cfd4c..06a1bca 100644 --- a/src/main/java/com/imyeyu/java/bean/timi/TimiError.java +++ b/src/main/java/com/imyeyu/java/bean/timi/TimiError.java @@ -2,6 +2,8 @@ package com.imyeyu.java.bean.timi; import com.imyeyu.java.bean.LanguageMsgMapping; +import java.util.Map; + /** * 致命错误 * @@ -15,6 +17,8 @@ public class TimiError extends AssertionError implements LanguageMsgMapping msgArgs; + /** @param code 代码 */ public TimiError(TimiCode code) { this.code = code; @@ -55,6 +59,12 @@ public class TimiError extends AssertionError implements LanguageMsgMapping msgArgs) { + setMsgKey(msgKey, msgArgs); + return this; + } + @Override public void setMsg(String msg) { throw new UnsupportedOperationException("unsupported to change message"); @@ -74,4 +84,15 @@ public class TimiError extends AssertionError implements LanguageMsgMapping msgArgs) { + this.msgKey = msgKey; + this.msgArgs = msgArgs; + } + + @Override + public Map getMsgArgs() { + return msgArgs; + } } diff --git a/src/main/java/com/imyeyu/java/bean/timi/TimiException.java b/src/main/java/com/imyeyu/java/bean/timi/TimiException.java index d76ef6f..9393075 100644 --- a/src/main/java/com/imyeyu/java/bean/timi/TimiException.java +++ b/src/main/java/com/imyeyu/java/bean/timi/TimiException.java @@ -4,6 +4,8 @@ import com.imyeyu.java.TimiJava; import com.imyeyu.java.bean.CallbackReturn; import com.imyeyu.java.bean.LanguageMsgMapping; +import java.util.Map; + /** * 通用运行时异常,附加通用代码 * @@ -17,6 +19,8 @@ public class TimiException extends RuntimeException implements LanguageMsgMappin protected String msgKey; + protected Map msgArgs; + /** @param code 代码 */ public TimiException(TimiCode code) { this.code = code; @@ -68,6 +72,12 @@ public class TimiException extends RuntimeException implements LanguageMsgMappin return this; } + @Override + public TimiException msgKey(String msgKey, Map msgArgs) { + setMsgKey(msgKey, msgArgs); + return this; + } + @Override public void setMsg(String msg) { throw new UnsupportedOperationException("unsupported to change message"); @@ -83,11 +93,22 @@ public class TimiException extends RuntimeException implements LanguageMsgMappin this.msgKey = msgKey; } + @Override + public void setMsgKey(String msgKey, Map msgArgs) { + this.msgKey = msgKey; + this.msgArgs = msgArgs; + } + @Override public String getMsgKey() { return msgKey; } + @Override + public Map getMsgArgs() { + return msgArgs; + } + public static T required(T t, String message) { if (TimiJava.isEmpty(t)) { throw new TimiException(TimiCode.ARG_MISS, message); diff --git a/src/main/java/com/imyeyu/java/bean/timi/TimiResponse.java b/src/main/java/com/imyeyu/java/bean/timi/TimiResponse.java index c3b1e3c..cca888f 100644 --- a/src/main/java/com/imyeyu/java/bean/timi/TimiResponse.java +++ b/src/main/java/com/imyeyu/java/bean/timi/TimiResponse.java @@ -3,6 +3,7 @@ package com.imyeyu.java.bean.timi; import com.imyeyu.java.bean.LanguageMsgMapping; import java.io.Serializable; +import java.util.Map; /** * 通用接口返回对象 @@ -20,6 +21,8 @@ public class TimiResponse implements Serializable, LanguageMsgMapping msgArgs; + /** 数据体 */ protected T data; @@ -156,6 +159,12 @@ public class TimiResponse implements Serializable, LanguageMsgMapping msgKey(String msgKey, Map msgArgs) { + setMsgKey(msgKey, msgArgs); + return this; + } + @Override public String getMsgKey() { return msgKey; @@ -165,4 +174,15 @@ public class TimiResponse implements Serializable, LanguageMsgMapping msgArgs) { + this.msgKey = msgKey; + this.msgArgs = msgArgs; + } + + @Override + public Map getMsgArgs() { + return msgArgs; + } }