From 461bded41561f3e0eb77b29ccd7f06842189fa34 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Tue, 12 Sep 2023 10:57:03 +0530 Subject: [PATCH] fix: reduce frequence of 'creating resource table' log messages (closes #1265) --- .../androidide/projects/api/AndroidModule.kt | 17 +++++++++++---- .../resources/DefaultResourceTableRegistry.kt | 2 +- .../versions/DefaultApiVersionsRegistry.kt | 2 +- .../widgets/DefaultWidgetTableRegistry.kt | 2 +- .../xml/resources/ResourceTableRegistry.kt | 21 ++++++++++++------- .../xml/versions/ApiVersionsRegistry.kt | 3 ++- .../xml/widgets/WidgetTableRegistry.kt | 3 ++- 7 files changed, 34 insertions(+), 16 deletions(-) diff --git a/subprojects/projects/src/main/java/com/itsaky/androidide/projects/api/AndroidModule.kt b/subprojects/projects/src/main/java/com/itsaky/androidide/projects/api/AndroidModule.kt index 43bafae17..53e4a8efe 100644 --- a/subprojects/projects/src/main/java/com/itsaky/androidide/projects/api/AndroidModule.kt +++ b/subprojects/projects/src/main/java/com/itsaky/androidide/projects/api/AndroidModule.kt @@ -347,6 +347,7 @@ open class AndroidModule( // Class must be open because BaseXMLTest mocks this.. /** Get the resource tables for external dependencies (not local module project dependencies). */ fun getDependencyResourceTables(): Set { return mutableSetOf().also { + var deps = 0 it.addAll( libraryMap.values .filter { library -> @@ -354,14 +355,22 @@ open class AndroidModule( // Class must be open because BaseXMLTest mocks this.. library.androidLibraryData!!.resFolder.exists() && library.findPackageName() != UNKNOWN_PACKAGE } + .also { libs -> deps = libs.size } .mapNotNull { library -> ResourceTableRegistry.getInstance() - .forPackage( - library.packageName, - library.androidLibraryData!!.resFolder, - ) + .let { registry -> + registry.isLoggingEnabled = false + registry.forPackage( + library.packageName, + library.androidLibraryData!!.resFolder, + ).also { + registry.isLoggingEnabled = true + } + } } ) + + log.info("Created ${it.size} resource tables for $deps dependencies of module '$path'") } } diff --git a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/resources/DefaultResourceTableRegistry.kt b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/resources/DefaultResourceTableRegistry.kt index e8671fcd3..6a7155d1a 100644 --- a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/resources/DefaultResourceTableRegistry.kt +++ b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/resources/DefaultResourceTableRegistry.kt @@ -52,7 +52,7 @@ import java.util.concurrent.ConcurrentHashMap * @author Akash Yadav */ @AutoService(ResourceTableRegistry::class) -internal class DefaultResourceTableRegistry : ResourceTableRegistry { +class DefaultResourceTableRegistry : ResourceTableRegistry { /** * Represents the type of single line entries read from files. diff --git a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/versions/DefaultApiVersionsRegistry.kt b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/versions/DefaultApiVersionsRegistry.kt index 5c7e1608b..fe25cc91a 100644 --- a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/versions/DefaultApiVersionsRegistry.kt +++ b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/versions/DefaultApiVersionsRegistry.kt @@ -36,7 +36,7 @@ import java.util.concurrent.ConcurrentHashMap * @author Akash Yadav */ @AutoService(ApiVersionsRegistry::class) -internal class DefaultApiVersionsRegistry : ApiVersionsRegistry { +class DefaultApiVersionsRegistry : ApiVersionsRegistry { private val log = ILogger.newInstance(javaClass.simpleName) private val versions = ConcurrentHashMap() diff --git a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/widgets/DefaultWidgetTableRegistry.kt b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/widgets/DefaultWidgetTableRegistry.kt index 0854729d7..1f7c64409 100644 --- a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/widgets/DefaultWidgetTableRegistry.kt +++ b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/internal/widgets/DefaultWidgetTableRegistry.kt @@ -30,7 +30,7 @@ import java.util.concurrent.ConcurrentHashMap * @author Akash Yadav */ @AutoService(WidgetTableRegistry::class) -internal class DefaultWidgetTableRegistry : WidgetTableRegistry { +class DefaultWidgetTableRegistry : WidgetTableRegistry { private val tables = ConcurrentHashMap() private val log = ILogger.newInstance(WidgetTableRegistry::class.java.simpleName) diff --git a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/resources/ResourceTableRegistry.kt b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/resources/ResourceTableRegistry.kt index f36a767e9..472734ffa 100644 --- a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/resources/ResourceTableRegistry.kt +++ b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/resources/ResourceTableRegistry.kt @@ -32,14 +32,21 @@ import java.io.File interface ResourceTableRegistry : XmlRegistry { companion object { - const val PCK_ANDROID = "android" - @JvmStatic val COMPLETION_MODULE_RES = Lookup.Key>() - @JvmStatic val COMPLETION_DEP_RES = Lookup.Key>() - @JvmStatic val COMPLETION_FRAMEWORK_RES = Lookup.Key() - @JvmStatic val COMPLETION_MANIFEST_ATTR_RES = Lookup.Key() - @JvmStatic fun getInstance(): ResourceTableRegistry { - return ServiceLoader.load(ResourceTableRegistry::class.java).findFirstOrThrow() + const val PCK_ANDROID = "android" + @JvmStatic + val COMPLETION_MODULE_RES = Lookup.Key>() + @JvmStatic + val COMPLETION_DEP_RES = Lookup.Key>() + @JvmStatic + val COMPLETION_FRAMEWORK_RES = Lookup.Key() + @JvmStatic + val COMPLETION_MANIFEST_ATTR_RES = Lookup.Key() + + @JvmStatic + fun getInstance(): ResourceTableRegistry { + val klass = ResourceTableRegistry::class.java + return ServiceLoader.load(klass, klass.classLoader).findFirstOrThrow() } } diff --git a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/versions/ApiVersionsRegistry.kt b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/versions/ApiVersionsRegistry.kt index 4ecacfa00..fcdb23917 100644 --- a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/versions/ApiVersionsRegistry.kt +++ b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/versions/ApiVersionsRegistry.kt @@ -34,7 +34,8 @@ interface ApiVersionsRegistry : XmlRegistry { /** Get the default instance of [ApiVersionsRegistry]. */ @JvmStatic fun getInstance(): ApiVersionsRegistry { - return ServiceLoader.load(ApiVersionsRegistry::class.java).findFirstOrThrow() + val klass = ApiVersionsRegistry::class.java + return ServiceLoader.load(klass, klass.classLoader).findFirstOrThrow() } } } diff --git a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/widgets/WidgetTableRegistry.kt b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/widgets/WidgetTableRegistry.kt index 2f6299d11..c36b9905b 100644 --- a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/widgets/WidgetTableRegistry.kt +++ b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/widgets/WidgetTableRegistry.kt @@ -33,7 +33,8 @@ interface WidgetTableRegistry : XmlRegistry { /** Get the default instance of [WidgetTableRegistry]. */ @JvmStatic fun getInstance(): WidgetTableRegistry { - return ServiceLoader.load(WidgetTableRegistry::class.java).findFirstOrThrow() + val klass = WidgetTableRegistry::class.java + return ServiceLoader.load(klass, klass.classLoader).findFirstOrThrow() } } }