Skip to content

Commit 0c1a5a3

Browse files
committed
Little cosmetic changes
1 parent b79c8a1 commit 0c1a5a3

File tree

7 files changed

+44
-59
lines changed

7 files changed

+44
-59
lines changed

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import org.utbot.framework.CancellationStrategyType.NONE
4848
import org.utbot.framework.CancellationStrategyType.SAVE_PROCESSED_RESULTS
4949
import org.utbot.framework.UtSettings
5050
import org.utbot.framework.codegen.domain.ProjectType.*
51-
import org.utbot.framework.codegen.domain.TypeReplacementApproach
51+
import org.utbot.framework.codegen.domain.TypeReplacementApproach.*
5252
import org.utbot.framework.plugin.api.ApplicationContext
5353
import org.utbot.framework.plugin.api.ClassId
5454
import org.utbot.framework.plugin.api.JavaDocCommentStyle
@@ -161,8 +161,8 @@ object UtTestsDialogProcessor {
161161

162162
private fun createTests(project: Project, model: GenerateTestsModel) {
163163
val springConfigClass = when (val approach = model.typeReplacementApproach) {
164-
TypeReplacementApproach.DoNotReplace -> null
165-
is TypeReplacementApproach.ReplaceIfPossible ->
164+
DoNotReplace -> null
165+
is ReplaceIfPossible ->
166166
approach.config.takeUnless { it.endsWith(".xml") }?.let {
167167
JavaPsiFacade.getInstance(project).findClass(it, GlobalSearchScope.projectScope(project)) ?:
168168
error("Can't find configuration class $it")
@@ -217,27 +217,31 @@ object UtTestsDialogProcessor {
217217
val process = EngineProcess.createBlocking(project, classNameToPath)
218218

219219
process.terminateOnException { _ ->
220-
process.setupUtContext(buildDirs + classpathList)
220+
val classpathForClassLoader = buildDirs + classpathList
221+
process.setupUtContext(classpathForClassLoader)
221222
val applicationContext = when (model.projectType) {
222223
Spring -> {
223224
val beanQualifiedNames =
224225
when (val approach = model.typeReplacementApproach) {
225-
TypeReplacementApproach.DoNotReplace -> emptyList()
226-
is TypeReplacementApproach.ReplaceIfPossible ->
226+
DoNotReplace -> emptyList()
227+
is ReplaceIfPossible -> {
228+
// TODO: use common parent path for srcModule and used Spring
229+
// config module if they are different modules
230+
val projectFileStorage = model.srcModule.basePath
227231
process.getSpringBeanQualifiedNames(
228-
buildDirs + classpathList,
232+
classpathForClassLoader,
229233
approach.config,
230-
// TODO use common parent path for srcModule and used Spring
231-
// config module if they are different modules
232-
model.srcModule.basePath
234+
projectFileStorage,
233235
)
236+
}
234237
}
238+
val shouldUseImplementors = model.typeReplacementApproach is ReplaceIfPossible
235239

236240
SpringApplicationContext(
237241
mockFrameworkInstalled,
238242
staticMockingConfigured,
239243
beanQualifiedNames,
240-
shouldUseImplementors = beanQualifiedNames.isNotEmpty(),
244+
shouldUseImplementors,
241245
)
242246
}
243247
else -> ApplicationContext(mockFrameworkInstalled, staticMockingConfigured)

utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/analyzers/SpringApplicationAnalyzer.kt

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,16 @@ import com.jetbrains.rd.util.getLogger
44
import com.jetbrains.rd.util.info
55
import org.springframework.boot.builder.SpringApplicationBuilder
66
import org.springframework.context.ApplicationContextException
7-
import org.utbot.spring.configurators.ApplicationConfigurationType
8-
import org.utbot.spring.configurators.ApplicationConfigurationType.JavaConfiguration
9-
import org.utbot.spring.configurators.ApplicationConfigurationType.XmlConfiguration
107
import org.utbot.spring.configurators.ApplicationConfigurator
11-
import org.utbot.spring.data.ApplicationData
12-
import org.utbot.spring.utils.FakeFileManager
8+
import org.utbot.spring.api.ApplicationData
139
import org.utbot.spring.postProcessors.UtBotBeanFactoryPostProcessor
14-
import java.io.File
1510

1611
val logger = getLogger<SpringApplicationAnalyzer>()
1712

18-
class SpringApplicationAnalyzer(
19-
private val applicationData: ApplicationData
20-
) {
13+
class SpringApplicationAnalyzer(private val applicationData: ApplicationData) {
2114

2215
fun analyze(): List<String> {
23-
logger.info { "Analyzer Java: " + System.getProperty("java.version") }
16+
logger.info { "Current Java version is: " + System.getProperty("java.version") }
2417

2518
val applicationBuilder = SpringApplicationBuilder(SpringApplicationAnalyzer::class.java)
2619
val applicationConfigurator = ApplicationConfigurator(applicationBuilder, applicationData)
@@ -33,7 +26,7 @@ class SpringApplicationAnalyzer(
3326
} catch (e: ApplicationContextException) {
3427
// UtBotBeanFactoryPostProcessor destroys bean definitions
3528
// to prevent Spring application from actually starting and
36-
// that causes it to throw ApplicationContextException
29+
// that causes it to throw ApplicationContextException.
3730
logger.info { "Bean analysis finished successfully" }
3831
}
3932
return UtBotBeanFactoryPostProcessor.beanQualifiedNames

utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/data/ApplicationData.kt renamed to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/api/ApplicationData.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
package org.utbot.spring.data
1+
package org.utbot.spring.api
22

33
import java.net.URL
44

5-
data class ApplicationData(
5+
class ApplicationData(
66
val classpath: Array<URL>,
77
val configurationFile: String,
88
val fileStorage: String?,

utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/ApplicationConfigurator.kt

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,11 @@ package org.utbot.spring.configurators
22

33
import com.jetbrains.rd.util.getLogger
44
import com.jetbrains.rd.util.info
5-
import org.springframework.beans.factory.support.BeanDefinitionRegistry
6-
import org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry
7-
import org.springframework.boot.SpringApplication
85
import org.springframework.boot.builder.SpringApplicationBuilder
9-
import org.springframework.context.annotation.ClassPathBeanDefinitionScanner
10-
import org.springframework.context.annotation.ComponentScanBeanDefinitionParser
11-
import org.springframework.core.io.DefaultResourceLoader
126
import org.utbot.spring.config.TestApplicationConfiguration
13-
import org.utbot.spring.data.ApplicationData
7+
import org.utbot.spring.api.ApplicationData
148
import org.utbot.spring.utils.ConfigurationManager
159
import java.io.File
16-
import java.net.URLClassLoader
1710
import kotlin.io.path.Path
1811

1912
private val logger = getLogger<ApplicationConfigurator>()
@@ -22,11 +15,13 @@ open class ApplicationConfigurator(
2215
private val applicationBuilder: SpringApplicationBuilder,
2316
private val applicationData: ApplicationData
2417
) {
25-
// private val classLoader: ClassLoader = URLClassLoader(applicationData.classpath)
18+
//private val classLoader: ClassLoader = URLClassLoader(applicationData.classpath)
2619
private val classLoader: ClassLoader = this::class.java.classLoader
2720

2821
fun configureApplication() {
22+
// TODO: this may help to use file named `application.xml` as a config in Spring Boot.
2923
//applicationBuilder.resourceLoader(DefaultResourceLoader().also { it.classLoader = classLoader })
24+
3025
when (findConfigurationType(applicationData)) {
3126
ApplicationConfigurationType.XmlConfiguration -> {
3227
logger.info { "Using xml Spring configuration" }

utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/process/SpringAnalyzerProcess.kt

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,19 @@ class SpringAnalyzerProcess private constructor(
6666
) {
6767
private var classpathArgs = listOf<String>()
6868

69-
override fun obtainProcessSpecificCommandLineArgs(): List<String> = listOf(
70-
"-Dorg.apache.commons.logging.LogFactory=org.utbot.spring.loggers.RDApacheCommonsLogFactory",
71-
// "-jar",
72-
// springAnalyzerJarFile.path
73-
) + classpathArgs
69+
override fun obtainProcessSpecificCommandLineArgs(): List<String> =
70+
listOf("-Dorg.apache.commons.logging.LogFactory=org.utbot.spring.loggers.RDApacheCommonsLogFactory") + classpathArgs
7471

7572
fun createBlocking(classpath: List<String>) = runBlocking { SpringAnalyzerProcess(classpath) }
7673

77-
suspend operator fun invoke(classpath: List<String>): SpringAnalyzerProcess = LifetimeDefinition().terminateOnException { lifetime ->
74+
suspend operator fun invoke(classpathItems: List<String>): SpringAnalyzerProcess = LifetimeDefinition().terminateOnException { lifetime ->
75+
val extendedClasspath = listOf(springAnalyzerJarFile.path) + classpathItems
7876
val rdProcess = startUtProcessWithRdServer(lifetime) { port ->
79-
classpathArgs = listOf("-cp", "\"${(listOf(springAnalyzerJarFile.path) + classpath).joinToString(File.pathSeparator)}\"", "org.utbot.spring.process.SpringAnalyzerProcessMainKt")
77+
classpathArgs = listOf(
78+
"-cp",
79+
"\"${extendedClasspath.joinToString(File.pathSeparator)}\"",
80+
"org.utbot.spring.process.SpringAnalyzerProcessMainKt"
81+
)
8082
val cmd = obtainProcessCommandLine(port)
8183
logger.info { "Spring cmd: ${cmd.joinToString(" ")}" }
8284
val process = ProcessBuilder(cmd)
@@ -104,11 +106,7 @@ class SpringAnalyzerProcess private constructor(
104106
configuration: String,
105107
fileStorage: String?,
106108
): List<String> {
107-
val params = SpringAnalyzerParams(
108-
classpath.toTypedArray(),
109-
configuration,
110-
fileStorage
111-
)
109+
val params = SpringAnalyzerParams(classpath.toTypedArray(), configuration, fileStorage)
112110
val result = springAnalyzerModel.analyze.startBlocking(params)
113111
return result.beanTypes.toList()
114112
}

utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/process/SpringAnalyzerProcessMain.kt

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import org.utbot.rd.generated.loggerModel
1414
import org.utbot.rd.generated.settingsModel
1515
import org.utbot.rd.loggers.UtRdRemoteLoggerFactory
1616
import org.utbot.spring.analyzers.SpringApplicationAnalyzer
17-
import org.utbot.spring.data.ApplicationData
17+
import org.utbot.spring.api.ApplicationData
1818
import org.utbot.spring.generated.SpringAnalyzerProcessModel
1919
import org.utbot.spring.generated.SpringAnalyzerResult
2020
import org.utbot.spring.generated.springAnalyzerProcessModel
@@ -41,18 +41,13 @@ suspend fun main(args: Array<String>) =
4141

4242
private fun SpringAnalyzerProcessModel.setup(watchdog: IdleWatchdog, realProtocol: IProtocol) {
4343
watchdog.measureTimeForActiveCall(analyze, "Analyzing Spring Application") { params ->
44-
// Thread.currentThread().contextClassLoader = URLClassLoader(
45-
// params.classpath.toList().map { File(it).toURI().toURL() }.toTypedArray(),
46-
// Thread.currentThread().contextClassLoader
47-
// )
44+
val applicationData = ApplicationData(
45+
params.classpath.toList().map { File(it).toURI().toURL() }.toTypedArray(),
46+
params.configuration,
47+
params.fileStorage,
48+
)
4849
SpringAnalyzerResult(
49-
SpringApplicationAnalyzer(
50-
ApplicationData(
51-
params.classpath.toList().map { File(it).toURI().toURL() }.toTypedArray(),
52-
params.configuration,
53-
params.fileStorage,
54-
)
55-
).analyze().toTypedArray()
50+
SpringApplicationAnalyzer(applicationData).analyze().toTypedArray()
5651
)
5752
}
5853
}

utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/ConfigurationManager.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ class ConfigurationManager(private val classLoader: ClassLoader, private val use
2424

2525
if (propertySourceAnnotation.isPresent) {
2626
val annotationInvocationHandler = hField[propertySourceAnnotation.get()] as InvocationHandler
27-
// TODO detect "file:..." resources recursively (or using bfs) and copy them,
28-
// do not patch annotations same in fillFakeApplicationXml
27+
// TODO: https://github.com/UnitTestBot/UTBotJava/issues/2120
28+
// detect "file:..." resources recursively (or using bfs) and copy them without patching annotations
2929

3030
val annotationInvocationHandlerClass =
3131
classLoader.loadClass("sun.reflect.annotation.AnnotationInvocationHandler")

0 commit comments

Comments
 (0)