@@ -1269,13 +1269,20 @@ class SpringApplicationContext(
12691269 private val beanQualifiedNames : List <String > = emptyList(),
12701270 private val shouldUseImplementors : Boolean ,
12711271): ApplicationContext(mockInstalled, staticsMockingIsConfigured) {
1272-
1273- private val springInjectedClasses: List <ClassId > by lazy {
1274- beanQualifiedNames
1275- .map { fqn -> utContext.classLoader.loadClass(fqn) }
1276- .filterNot { it.isAbstract || it.isInterface || it.isLocalClass || it.isMemberClass && ! it.isStatic }
1277- .map { it.id }
1278- }
1272+
1273+ private val springInjectedClasses: Set <ClassId >
1274+ get() {
1275+ if (springInjectedClassesStorage.isEmpty()) {
1276+ springInjectedClassesStorage = beanQualifiedNames
1277+ .map { fqn -> utContext.classLoader.loadClass(fqn) }
1278+ .filterNot { it.isAbstract || it.isInterface || it.isLocalClass || it.isMemberClass && ! it.isStatic }
1279+ .mapTo(mutableSetOf ()) { it.id }
1280+ }
1281+
1282+ return springInjectedClassesStorage
1283+ }
1284+
1285+ private var springInjectedClassesStorage = mutableSetOf<ClassId >()
12791286
12801287 override val typeReplacementMode: TypeReplacementMode
12811288 get() = if (shouldUseImplementors) KnownImplementor else NoImplementors
@@ -1303,8 +1310,7 @@ class SpringApplicationContext(
13031310 override fun speculativelyCannotProduceNullPointerException (
13041311 field : SootField ,
13051312 classUnderTest : ClassId ,
1306- ): Boolean =
1307- field.fieldId in classUnderTest.allDeclaredFieldIds && field.declaringClass.id !in springInjectedClasses
1313+ ): Boolean = field.fieldId in classUnderTest.allDeclaredFieldIds && field.declaringClass.id !in springInjectedClasses
13081314}
13091315
13101316val RefType .isAbstractType
0 commit comments