[Change] Framework-API 调整 AbstractBotCode 中 'toString()' 的实现细节, 添加参数检查;

[Change] AbstractBotCode 调整 'toString()', 整理实现细节并修复格式错误, 在构造方法中添加对 functionName 的非空检查, 补充对 functionProperties 的非空判断条件, 补充文档;
This commit is contained in:
LamGC 2020-11-21 09:13:17 +08:00
parent 320858c4d0
commit 2520c79c50
Signed by: LamGC
GPG Key ID: 6C5AE2A913941E1D

View File

@ -17,6 +17,7 @@
package net.lamgc.cgj.bot.framework.message; package net.lamgc.cgj.bot.framework.message;
import com.google.common.base.Strings;
import net.lamgc.cgj.bot.framework.util.CollectionUtils; import net.lamgc.cgj.bot.framework.util.CollectionUtils;
import java.util.*; import java.util.*;
@ -32,7 +33,7 @@ public abstract class AbstractBotCode implements BotCode {
private final Map<String, String> functionProperties = new Hashtable<>(); private final Map<String, String> functionProperties = new Hashtable<>();
public AbstractBotCode(String functionName) { public AbstractBotCode(String functionName) {
this.functionName = functionName; this(functionName, null);
} }
/** /**
@ -49,20 +50,31 @@ public abstract class AbstractBotCode implements BotCode {
* @param functionProperties 参数集 Map. 如果不需要可传入 null. * @param functionProperties 参数集 Map. 如果不需要可传入 null.
*/ */
public AbstractBotCode(String functionName, Map<String, String> functionProperties) { public AbstractBotCode(String functionName, Map<String, String> functionProperties) {
if (Strings.isNullOrEmpty(functionName)) {
throw new IllegalArgumentException("functionName is null or empty");
}
this.functionName = functionName; this.functionName = functionName;
if(functionProperties != null) { if(functionProperties != null && !functionProperties.isEmpty()) {
this.functionProperties.putAll(functionProperties); this.functionProperties.putAll(functionProperties);
} }
} }
@Override @Override
public String toString() { public String toString() {
StringBuilder mapString = new StringBuilder(functionProperties.getClass().getSimpleName() + "{"); StringBuilder mapString = new StringBuilder(functionProperties.getClass().getSimpleName());
functionProperties.forEach((key, value) -> mapString.append(key).append("='").append(value).append("', ")); if (!functionProperties.isEmpty()) {
return "AbstractBotCode{" + mapString.append("{");
functionProperties.forEach((key, value) -> {
// "key"="value"
mapString.append('"').append(key).append("\"='").append(value).append("', ");
});
mapString.delete(mapString.length() - 2, mapString.length());
}
return this.getClass().getSimpleName() + '@' + Integer.toHexString(this.hashCode()) + '{' +
"Platform=" + getPlatform() + ", " + "Platform=" + getPlatform() + ", " +
"functionName='" + functionName + '\'' + "functionName='" + functionName + '\'' +
", functionProperties=" + mapString.substring(0, mapString.length() - 2) + ", functionProperties={" + mapString.toString() + '}' +
'}'; '}';
} }
@ -111,6 +123,11 @@ public abstract class AbstractBotCode implements BotCode {
return functionProperties.get(Objects.requireNonNull(key)); return functionProperties.get(Objects.requireNonNull(key));
} }
/**
* 获取参数 Keys 集合.
* <p> 注意: 通过本方法返回的 Set 不可进行修改.
* @return 返回包含所有参数 Keys Set 对象.
*/
@Override @Override
public Set<String> getPropertiesKeys() { public Set<String> getPropertiesKeys() {
return Collections.unmodifiableSet(functionProperties.keySet()); return Collections.unmodifiableSet(functionProperties.keySet());