Skip to content

Commit ebc9cef

Browse files
committed
Separate parsing ans analysis
1 parent 9cccdfe commit ebc9cef

File tree

4 files changed

+71
-52
lines changed

4 files changed

+71
-52
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package application
2+
3+
import analyzers.SpringApplicationAnalyzer
4+
5+
fun main(args: Array<String>) {
6+
/*
7+
val arg0 = "D:/Projects/spring-starter-lesson-28/build/classes/java/main";
8+
val arg1 = "com.dmdev.spring.config.ApplicationConfiguration";
9+
val arg2 = "D:/Projects/spring-starter-lesson-28/src/main/resources/application.properties";
10+
val arg3 = "D:/Projects/spring-starter-lesson-28/src/main/resources/application.xml";
11+
val springApplicationAnalyzer = SpringApplicationAnalyzer(arg0, arg1, arg2, arg3)
12+
*/
13+
14+
val springApplicationAnalyzer = SpringApplicationAnalyzer(
15+
applicationPath = args[0],
16+
configurationClassFqn = args[1],
17+
propertyFilePath = args[2],
18+
xmlConfigurationPath = args[3],
19+
)
20+
21+
springApplicationAnalyzer.analyze()
22+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package analyzers
2+
3+
import config.TestApplicationConfiguration
4+
import org.springframework.boot.builder.SpringApplicationBuilder
5+
import org.springframework.context.ApplicationContextException
6+
import utils.ConfigurationManager
7+
import java.net.URL
8+
import java.net.URLClassLoader
9+
import java.nio.file.Path
10+
11+
12+
class SpringApplicationAnalyzer(
13+
private val applicationPath: String,
14+
private val configurationClassFqn: String,
15+
private val propertyFilePath: String,
16+
private val xmlConfigurationPath: String,
17+
) {
18+
19+
private val applicationUrl: URL
20+
get() = Path.of(applicationPath).toUri().toURL()
21+
22+
fun analyze() {
23+
val classLoader: ClassLoader = URLClassLoader(arrayOf(applicationUrl))
24+
val userConfigurationClass = classLoader.loadClass(configurationClassFqn)
25+
26+
val configurationManager = ConfigurationManager(classLoader, userConfigurationClass)
27+
val propertiesAnalyzer = PropertiesAnalyzer(propertyFilePath)
28+
val xmlConfigurationAnalyzer = XmlConfigurationAnalyzer(xmlConfigurationPath)
29+
30+
xmlConfigurationAnalyzer.fillFakeApplicationXml()
31+
32+
configurationManager.patchPropertySourceAnnotation()
33+
configurationManager.patchImportResourceAnnotation()
34+
35+
val app = SpringApplicationBuilder(SpringApplicationAnalyzer::class.java)
36+
app.sources(TestApplicationConfiguration::class.java, userConfigurationClass)
37+
for (prop in propertiesAnalyzer.readProperties()) {
38+
app.properties(prop)
39+
}
40+
41+
try {
42+
app.build()
43+
app.run()
44+
} catch (e: ApplicationContextException) {
45+
println("Bean analysis finished successfully")
46+
}
47+
}
48+
}

utbot-spring-analyzer/src/main/kotlin/application/SpringAnalysisRunner.kt

Lines changed: 0 additions & 51 deletions
This file was deleted.

utbot-spring-analyzer/src/main/kotlin/application/TestApplicationConfiguration.kt renamed to utbot-spring-analyzer/src/main/kotlin/config/TestApplicationConfiguration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package application
1+
package config
22

33
import org.springframework.beans.factory.config.BeanFactoryPostProcessor
44
import org.springframework.context.annotation.Bean

0 commit comments

Comments
 (0)