From 0fa67b7699bc83767b396e8cde9b640acbe3e893 Mon Sep 17 00:00:00 2001 From: Karlatemp <karlatemp@vip.qq.com> Date: Thu, 18 Feb 2021 12:06:56 +0800 Subject: [PATCH] Improve service finding - Close resource stream - Skip comments --- .../src/internal/util/PluginServiceHelper.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/backend/mirai-console/src/internal/util/PluginServiceHelper.kt b/backend/mirai-console/src/internal/util/PluginServiceHelper.kt index 86dc84dab..c65e16135 100644 --- a/backend/mirai-console/src/internal/util/PluginServiceHelper.kt +++ b/backend/mirai-console/src/internal/util/PluginServiceHelper.kt @@ -14,7 +14,6 @@ package net.mamoe.mirai.console.internal.util import net.mamoe.mirai.console.internal.data.cast import net.mamoe.mirai.console.internal.data.createInstanceOrNull import net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl -import java.io.InputStream import java.lang.reflect.Modifier import java.util.* import kotlin.reflect.KClass @@ -30,9 +29,13 @@ internal object PluginServiceHelper { fun <T : Any> ClassLoader.findServices(vararg serviceTypes: KClass<out T>): ServiceList<T> = serviceTypes.flatMap { serviceType -> - getResourceAsStream("META-INF/services/" + serviceType.qualifiedName!!) - ?.use(InputStream::readBytes) - ?.let(::String)?.lines()?.filter(String::isNotBlank).orEmpty() + getResourceAsStream("META-INF/services/" + serviceType.qualifiedName!!)?.let { stream -> + stream.bufferedReader().useLines { lines -> + lines.filter(String::isNotBlank) + .filter { it[0] != '#' } + .toList() + } + }.orEmpty() }.let { ServiceList(this, it) } fun <T : Any> ServiceList<T>.loadAllServices(): List<T> {