fix(extension): 修复创建扩展对象时可能会出现的 NPE 问题.

创建对象后没有检查 NPE 问题, 修复该问题后有助于接受 Factory 不提供扩展的情况(现在这个情况是允许的了).
This commit is contained in:
LamGC 2022-03-28 21:38:40 +08:00
parent 804d0e3012
commit eb95436404
Signed by: LamGC
GPG Key ID: 6C5AE2A913941E1D
2 changed files with 5 additions and 1 deletions

View File

@ -90,6 +90,10 @@ internal class ExtensionLoader(
try {
val extension =
factory.createExtensionInstance(bot, getExtensionDataFolder(extensionArtifact))
if (extension == null) {
log.debug { "Factory ${factory::class.java} 创建插件时返回了 null, 已跳过. (BotName: ${bot.botUsername})" }
continue
}
factories.add(LoadedExtensionEntry(extensionArtifact, factory::class.java, extension))
} catch (e: Exception) {
log.error(e) { "创建扩展时发生异常. (ExtArtifact: `$extensionArtifact`, Factory: ${factory::class.java.name})" }

View File

@ -27,7 +27,7 @@ public interface BotExtensionFactory {
* @param bot 机器人对象.
* @param shareDataFolder ScalaBot App 为扩展提供的共享数据目录, <b>同一个扩展包的 Factory</b> 接收到的共享数据目录<b>都是一样的</b>;
* 建议将数据存储在数据目录中, 便于数据的存储管理.
* @return 返回为该 Bot 对象创建的扩展对象.
* @return 返回为该 Bot 对象创建的扩展对象, 如果不希望为该机器人提供扩展, 可返回 {@code null}.
*/
AbilityExtension createExtensionInstance(BaseAbilityBot bot, File shareDataFolder);