multilingual args use Map<String, Object>

This commit is contained in:
Timi
2025-11-06 17:41:54 +08:00
parent c7e83f0671
commit 687e5c3bf1
7 changed files with 83 additions and 2 deletions

View File

@ -6,7 +6,7 @@
<groupId>com.imyeyu.java</groupId> <groupId>com.imyeyu.java</groupId>
<artifactId>timi-java</artifactId> <artifactId>timi-java</artifactId>
<version>0.0.1</version> <version>0.0.2</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<properties> <properties>

View File

@ -1,5 +1,7 @@
package com.imyeyu.java; package com.imyeyu.java;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
@ -83,4 +85,11 @@ public interface TimiJava {
} }
return null; return null;
} }
static String toString(Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
return sw.toString();
}
} }

View File

@ -1,5 +1,7 @@
package com.imyeyu.java.bean; package com.imyeyu.java.bean;
import java.util.Map;
/** /**
* @author 夜雨 * @author 夜雨
* @since 2024-04-03 11:27 * @since 2024-04-03 11:27
@ -14,5 +16,5 @@ public interface LanguageMapping {
String text(String key, String def); String text(String key, String def);
String textArgs(String key, Object... args); String textArgs(String key, Map<String, Object> argsMap);
} }

View File

@ -1,5 +1,7 @@
package com.imyeyu.java.bean; package com.imyeyu.java.bean;
import java.util.Map;
/** /**
* @author 夜雨 * @author 夜雨
* @since 2024-04-01 10:28 * @since 2024-04-01 10:28
@ -10,11 +12,17 @@ public interface LanguageMsgMapping<T> {
T msgKey(String msgKey); T msgKey(String msgKey);
T msgKey(String msgKey, Map<String, Object> msgArgs);
void setMsg(String msg); void setMsg(String msg);
String getMsg(); String getMsg();
void setMsgKey(String msgKey); void setMsgKey(String msgKey);
void setMsgKey(String msgKey, Map<String, Object> msgArgs);
String getMsgKey(); String getMsgKey();
Map<String, Object> getMsgArgs();
} }

View File

@ -2,6 +2,8 @@ package com.imyeyu.java.bean.timi;
import com.imyeyu.java.bean.LanguageMsgMapping; import com.imyeyu.java.bean.LanguageMsgMapping;
import java.util.Map;
/** /**
* 致命错误 * 致命错误
* *
@ -15,6 +17,8 @@ public class TimiError extends AssertionError implements LanguageMsgMapping<Timi
protected String msgKey; protected String msgKey;
protected Map<String, Object> msgArgs;
/** @param code 代码 */ /** @param code 代码 */
public TimiError(TimiCode code) { public TimiError(TimiCode code) {
this.code = code; this.code = code;
@ -55,6 +59,12 @@ public class TimiError extends AssertionError implements LanguageMsgMapping<Timi
return this; return this;
} }
@Override
public TimiError msgKey(String msgKey, Map<String, Object> msgArgs) {
setMsgKey(msgKey, msgArgs);
return this;
}
@Override @Override
public void setMsg(String msg) { public void setMsg(String msg) {
throw new UnsupportedOperationException("unsupported to change message"); throw new UnsupportedOperationException("unsupported to change message");
@ -74,4 +84,15 @@ public class TimiError extends AssertionError implements LanguageMsgMapping<Timi
public String getMsgKey() { public String getMsgKey() {
return msgKey; return msgKey;
} }
@Override
public void setMsgKey(String msgKey, Map<String, Object> msgArgs) {
this.msgKey = msgKey;
this.msgArgs = msgArgs;
}
@Override
public Map<String, Object> getMsgArgs() {
return msgArgs;
}
} }

View File

@ -4,6 +4,8 @@ import com.imyeyu.java.TimiJava;
import com.imyeyu.java.bean.CallbackReturn; import com.imyeyu.java.bean.CallbackReturn;
import com.imyeyu.java.bean.LanguageMsgMapping; 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 String msgKey;
protected Map<String, Object> msgArgs;
/** @param code 代码 */ /** @param code 代码 */
public TimiException(TimiCode code) { public TimiException(TimiCode code) {
this.code = code; this.code = code;
@ -68,6 +72,12 @@ public class TimiException extends RuntimeException implements LanguageMsgMappin
return this; return this;
} }
@Override
public TimiException msgKey(String msgKey, Map<String, Object> msgArgs) {
setMsgKey(msgKey, msgArgs);
return this;
}
@Override @Override
public void setMsg(String msg) { public void setMsg(String msg) {
throw new UnsupportedOperationException("unsupported to change message"); throw new UnsupportedOperationException("unsupported to change message");
@ -83,11 +93,22 @@ public class TimiException extends RuntimeException implements LanguageMsgMappin
this.msgKey = msgKey; this.msgKey = msgKey;
} }
@Override
public void setMsgKey(String msgKey, Map<String, Object> msgArgs) {
this.msgKey = msgKey;
this.msgArgs = msgArgs;
}
@Override @Override
public String getMsgKey() { public String getMsgKey() {
return msgKey; return msgKey;
} }
@Override
public Map<String, Object> getMsgArgs() {
return msgArgs;
}
public static <T> T required(T t, String message) { public static <T> T required(T t, String message) {
if (TimiJava.isEmpty(t)) { if (TimiJava.isEmpty(t)) {
throw new TimiException(TimiCode.ARG_MISS, message); throw new TimiException(TimiCode.ARG_MISS, message);

View File

@ -3,6 +3,7 @@ package com.imyeyu.java.bean.timi;
import com.imyeyu.java.bean.LanguageMsgMapping; import com.imyeyu.java.bean.LanguageMsgMapping;
import java.io.Serializable; import java.io.Serializable;
import java.util.Map;
/** /**
* 通用接口返回对象 * 通用接口返回对象
@ -20,6 +21,8 @@ public class TimiResponse<T> implements Serializable, LanguageMsgMapping<TimiRes
protected String msgKey; protected String msgKey;
protected Map<String, Object> msgArgs;
/** 数据体 */ /** 数据体 */
protected T data; protected T data;
@ -156,6 +159,12 @@ public class TimiResponse<T> implements Serializable, LanguageMsgMapping<TimiRes
return this; return this;
} }
@Override
public TimiResponse<T> msgKey(String msgKey, Map<String, Object> msgArgs) {
setMsgKey(msgKey, msgArgs);
return this;
}
@Override @Override
public String getMsgKey() { public String getMsgKey() {
return msgKey; return msgKey;
@ -165,4 +174,15 @@ public class TimiResponse<T> implements Serializable, LanguageMsgMapping<TimiRes
public void setMsgKey(String msgKey) { public void setMsgKey(String msgKey) {
this.msgKey = msgKey; this.msgKey = msgKey;
} }
@Override
public void setMsgKey(String msgKey, Map<String, Object> msgArgs) {
this.msgKey = msgKey;
this.msgArgs = msgArgs;
}
@Override
public Map<String, Object> getMsgArgs() {
return msgArgs;
}
} }