From 8c5592b65c8ce18ffcac6951aa84bf9b6ba5a29c Mon Sep 17 00:00:00 2001 From: Egor Kulikov Date: Fri, 17 Mar 2023 16:24:47 +0300 Subject: [PATCH 1/2] Some pre-integration refactoring of utbot-spring-analyzer --- .../utbot/spring}/ApplicationRunner.kt | 9 ++++--- .../analyzers/SpringApplicationAnalyzer.kt | 25 ++++++++----------- .../config/TestApplicationConfiguration.kt | 4 +-- .../configurators/PropertiesConfigurator.kt | 6 ++--- .../configurators/XmlConfigurationParser.kt} | 4 +-- .../configurators/XmlFilesConfigurator.kt | 14 +++++------ .../UtBotBeanFactoryPostProcessor.kt | 3 ++- .../UtBotSpringShutdownException.kt | 7 ++++++ .../spring}/utils/ConfigurationManager.kt | 2 +- .../utbot/spring}/utils/FakeFileManager.kt | 8 +++--- .../utbot/spring}/utils/PathsUtils.kt | 6 ++--- .../src/main/resources/resources_marker.txt | 0 12 files changed, 46 insertions(+), 42 deletions(-) rename utbot-spring-analyzer/src/main/kotlin/{ => org/utbot/spring}/ApplicationRunner.kt (86%) rename utbot-spring-analyzer/src/main/kotlin/{ => org/utbot/spring}/analyzers/SpringApplicationAnalyzer.kt (72%) rename utbot-spring-analyzer/src/main/kotlin/{ => org/utbot/spring}/config/TestApplicationConfiguration.kt (78%) rename utbot-spring-analyzer/src/main/kotlin/{ => org/utbot/spring}/configurators/PropertiesConfigurator.kt (88%) rename utbot-spring-analyzer/src/main/kotlin/{analyzers/XmlConfigurationAnalyzer.kt => org/utbot/spring/configurators/XmlConfigurationParser.kt} (91%) rename utbot-spring-analyzer/src/main/kotlin/{ => org/utbot/spring}/configurators/XmlFilesConfigurator.kt (55%) rename utbot-spring-analyzer/src/main/kotlin/{ => org/utbot/spring}/post_processors/UtBotBeanFactoryPostProcessor.kt (96%) create mode 100644 utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotSpringShutdownException.kt rename utbot-spring-analyzer/src/main/kotlin/{ => org/utbot/spring}/utils/ConfigurationManager.kt (98%) rename utbot-spring-analyzer/src/main/kotlin/{ => org/utbot/spring}/utils/FakeFileManager.kt (86%) rename utbot-spring-analyzer/src/main/kotlin/{ => org/utbot/spring}/utils/PathsUtils.kt (77%) rename "utbot-spring-analyzer/src/main/resources/resour\321\201es_marker.txt" => utbot-spring-analyzer/src/main/resources/resources_marker.txt (100%) diff --git a/utbot-spring-analyzer/src/main/kotlin/ApplicationRunner.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/ApplicationRunner.kt similarity index 86% rename from utbot-spring-analyzer/src/main/kotlin/ApplicationRunner.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/ApplicationRunner.kt index bf25d6b979..e5b70a0c63 100644 --- a/utbot-spring-analyzer/src/main/kotlin/ApplicationRunner.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/ApplicationRunner.kt @@ -1,7 +1,8 @@ -package application +package org.utbot.spring -import analyzers.SpringApplicationAnalyzer -import utils.PathsUtils +import org.utbot.spring.analyzers.SpringApplicationAnalyzer +import org.utbot.spring.utils.PathsUtils +import java.nio.file.Path /** * To run this app, arguments must be passed in the following way: @@ -23,7 +24,7 @@ fun main(args: Array) { */ val springApplicationAnalyzer = SpringApplicationAnalyzer( - applicationPath = args[0], + applicationUrl = Path.of(args[0]).toUri().toURL(), configurationClassFqn = args[1], propertyFilesPaths = args[2].split(";").filter { it != PathsUtils.EMPTY_PATH }, xmlConfigurationPaths = args[3].split(";").filter { it != PathsUtils.EMPTY_PATH }, diff --git a/utbot-spring-analyzer/src/main/kotlin/analyzers/SpringApplicationAnalyzer.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/analyzers/SpringApplicationAnalyzer.kt similarity index 72% rename from utbot-spring-analyzer/src/main/kotlin/analyzers/SpringApplicationAnalyzer.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/analyzers/SpringApplicationAnalyzer.kt index 6277a24116..72ba73fb9a 100644 --- a/utbot-spring-analyzer/src/main/kotlin/analyzers/SpringApplicationAnalyzer.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/analyzers/SpringApplicationAnalyzer.kt @@ -1,30 +1,27 @@ -package analyzers +package org.utbot.spring.analyzers -import application.utils.FakeFileManager -import application.configurators.PropertiesConfigurator -import application.configurators.XmlFilesConfigurator -import config.TestApplicationConfiguration +import org.utbot.spring.utils.FakeFileManager +import org.utbot.spring.configurators.PropertiesConfigurator +import org.utbot.spring.configurators.XmlFilesConfigurator +import org.utbot.spring.config.TestApplicationConfiguration import org.springframework.boot.builder.SpringApplicationBuilder import org.springframework.context.ApplicationContextException -import utils.ConfigurationManager +import org.utbot.spring.post_processors.UtBotSpringShutdownException +import org.utbot.spring.utils.ConfigurationManager import java.net.URL import java.net.URLClassLoader -import java.nio.file.Path class SpringApplicationAnalyzer( - private val applicationPath: String, + private val applicationUrl: URL, private val configurationClassFqn: String, private val propertyFilesPaths: List, private val xmlConfigurationPaths: List, ) { - private val applicationUrl: URL - get() = Path.of(applicationPath).toUri().toURL() - fun analyze() { val fakeFileManager = FakeFileManager(propertyFilesPaths + xmlConfigurationPaths) - fakeFileManager.createFakeFiles() + fakeFileManager.createTempFiles() val classLoader: ClassLoader = URLClassLoader(arrayOf(applicationUrl)) val userConfigurationClass = classLoader.loadClass(configurationClassFqn) @@ -45,10 +42,10 @@ class SpringApplicationAnalyzer( try { app.build() app.run() - } catch (e: ApplicationContextException) { + } catch (e: UtBotSpringShutdownException) { println("Bean analysis finished successfully") }finally { - fakeFileManager.deleteFakeFiles() + fakeFileManager.deleteTempFiles() } } } \ No newline at end of file diff --git a/utbot-spring-analyzer/src/main/kotlin/config/TestApplicationConfiguration.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/config/TestApplicationConfiguration.kt similarity index 78% rename from utbot-spring-analyzer/src/main/kotlin/config/TestApplicationConfiguration.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/config/TestApplicationConfiguration.kt index 45fafe6955..26c5b6d0ea 100644 --- a/utbot-spring-analyzer/src/main/kotlin/config/TestApplicationConfiguration.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/config/TestApplicationConfiguration.kt @@ -1,9 +1,9 @@ -package config +package org.utbot.spring.config import org.springframework.beans.factory.config.BeanFactoryPostProcessor import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration -import post_processors.UtBotBeanFactoryPostProcessor +import org.utbot.spring.post_processors.UtBotBeanFactoryPostProcessor @Configuration open class TestApplicationConfiguration { diff --git a/utbot-spring-analyzer/src/main/kotlin/configurators/PropertiesConfigurator.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/PropertiesConfigurator.kt similarity index 88% rename from utbot-spring-analyzer/src/main/kotlin/configurators/PropertiesConfigurator.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/PropertiesConfigurator.kt index f2abe3eef1..cbc32d1d84 100644 --- a/utbot-spring-analyzer/src/main/kotlin/configurators/PropertiesConfigurator.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/PropertiesConfigurator.kt @@ -1,7 +1,7 @@ -package application.configurators +package org.utbot.spring.configurators -import utils.ConfigurationManager -import utils.PathsUtils +import org.utbot.spring.utils.ConfigurationManager +import org.utbot.spring.utils.PathsUtils import java.io.BufferedReader import java.io.FileReader import kotlin.io.path.Path diff --git a/utbot-spring-analyzer/src/main/kotlin/analyzers/XmlConfigurationAnalyzer.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/XmlConfigurationParser.kt similarity index 91% rename from utbot-spring-analyzer/src/main/kotlin/analyzers/XmlConfigurationAnalyzer.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/XmlConfigurationParser.kt index 6b2eb425dd..71c75c0833 100644 --- a/utbot-spring-analyzer/src/main/kotlin/analyzers/XmlConfigurationAnalyzer.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/XmlConfigurationParser.kt @@ -1,4 +1,4 @@ -package analyzers +package org.utbot.spring.configurators import org.w3c.dom.Document import org.w3c.dom.Element @@ -7,7 +7,7 @@ import javax.xml.transform.TransformerFactory import javax.xml.transform.dom.DOMSource import javax.xml.transform.stream.StreamResult -class XmlConfigurationAnalyzer(private val userXmlFilePath: String, private val fakeXmlFilePath: String) { +class XmlConfigurationParser(private val userXmlFilePath: String, private val fakeXmlFilePath: String) { fun fillFakeApplicationXml() { val builder = DocumentBuilderFactory.newInstance().newDocumentBuilder() diff --git a/utbot-spring-analyzer/src/main/kotlin/configurators/XmlFilesConfigurator.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/XmlFilesConfigurator.kt similarity index 55% rename from utbot-spring-analyzer/src/main/kotlin/configurators/XmlFilesConfigurator.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/XmlFilesConfigurator.kt index 677b1aee51..6b67909c4b 100644 --- a/utbot-spring-analyzer/src/main/kotlin/configurators/XmlFilesConfigurator.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/configurators/XmlFilesConfigurator.kt @@ -1,9 +1,7 @@ -package application.configurators +package org.utbot.spring.configurators -import analyzers.XmlConfigurationAnalyzer -import application.utils.FakeFileManager -import utils.ConfigurationManager -import utils.PathsUtils +import org.utbot.spring.utils.ConfigurationManager +import org.utbot.spring.utils.PathsUtils import kotlin.io.path.Path class XmlFilesConfigurator( @@ -17,10 +15,10 @@ class XmlFilesConfigurator( for (userXmlFilePath in userXmlFilePaths) { if(userXmlFilePath == PathsUtils.EMPTY_PATH)continue - val xmlConfigurationAnalyzer = - XmlConfigurationAnalyzer(userXmlFilePath, PathsUtils.createFakeFilePath(userXmlFilePath)) + val xmlConfigurationParser = + XmlConfigurationParser(userXmlFilePath, PathsUtils.createFakeFilePath(userXmlFilePath)) - xmlConfigurationAnalyzer.fillFakeApplicationXml() + xmlConfigurationParser.fillFakeApplicationXml() configurationManager.patchImportResourceAnnotation(Path(userXmlFilePath).fileName) } } diff --git a/utbot-spring-analyzer/src/main/kotlin/post_processors/UtBotBeanFactoryPostProcessor.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotBeanFactoryPostProcessor.kt similarity index 96% rename from utbot-spring-analyzer/src/main/kotlin/post_processors/UtBotBeanFactoryPostProcessor.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotBeanFactoryPostProcessor.kt index c0c15023e3..7fa402ca68 100644 --- a/utbot-spring-analyzer/src/main/kotlin/post_processors/UtBotBeanFactoryPostProcessor.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotBeanFactoryPostProcessor.kt @@ -1,4 +1,4 @@ -package post_processors +package org.utbot.spring.post_processors import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition import org.springframework.beans.factory.config.BeanFactoryPostProcessor @@ -29,6 +29,7 @@ class UtBotBeanFactoryPostProcessor : BeanFactoryPostProcessor, PriorityOrdered destroyBeanDefinitions(beanFactory) println("Finished post-processing bean factory in UtBot") + throw UtBotSpringShutdownException("Finished post-processing bean factory in UtBot") } private fun findBeanClassNames(beanFactory: ConfigurableListableBeanFactory): ArrayList { diff --git a/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotSpringShutdownException.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotSpringShutdownException.kt new file mode 100644 index 0000000000..e6b3d6b176 --- /dev/null +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotSpringShutdownException.kt @@ -0,0 +1,7 @@ +package org.utbot.spring.post_processors + +/** + * Use this exception to shutdown this application + * when all required analysis actions are completed. + */ +class UtBotSpringShutdownException(message: String): Exception(message) \ No newline at end of file diff --git a/utbot-spring-analyzer/src/main/kotlin/utils/ConfigurationManager.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/ConfigurationManager.kt similarity index 98% rename from utbot-spring-analyzer/src/main/kotlin/utils/ConfigurationManager.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/ConfigurationManager.kt index daff28f9b3..1b05c361a0 100644 --- a/utbot-spring-analyzer/src/main/kotlin/utils/ConfigurationManager.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/ConfigurationManager.kt @@ -1,4 +1,4 @@ -package utils +package org.utbot.spring.utils import org.springframework.context.annotation.ImportResource import org.springframework.context.annotation.PropertySource diff --git a/utbot-spring-analyzer/src/main/kotlin/utils/FakeFileManager.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/FakeFileManager.kt similarity index 86% rename from utbot-spring-analyzer/src/main/kotlin/utils/FakeFileManager.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/FakeFileManager.kt index 835262a072..ae64f54d5b 100644 --- a/utbot-spring-analyzer/src/main/kotlin/utils/FakeFileManager.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/FakeFileManager.kt @@ -1,12 +1,12 @@ -package application.utils +package org.utbot.spring.utils -import utils.PathsUtils +import org.utbot.spring.utils.PathsUtils import java.io.File import java.io.IOException class FakeFileManager(private val fakeFilesList: List) { - fun createFakeFiles() { + fun createTempFiles() { for (fileName in fakeFilesList) { val fakeXmlFileAbsolutePath = PathsUtils.createFakeFilePath(fileName) @@ -19,7 +19,7 @@ class FakeFileManager(private val fakeFilesList: List) { } } - fun deleteFakeFiles() { + fun deleteTempFiles() { for (fileName in fakeFilesList) { val fakeXmlFileAbsolutePath = PathsUtils.createFakeFilePath(fileName) diff --git a/utbot-spring-analyzer/src/main/kotlin/utils/PathsUtils.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/PathsUtils.kt similarity index 77% rename from utbot-spring-analyzer/src/main/kotlin/utils/PathsUtils.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/PathsUtils.kt index e2b3b88830..bd95505cf3 100644 --- a/utbot-spring-analyzer/src/main/kotlin/utils/PathsUtils.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/utils/PathsUtils.kt @@ -1,5 +1,6 @@ -package utils +package org.utbot.spring.utils +import java.io.File import kotlin.io.path.Path object PathsUtils { @@ -8,14 +9,13 @@ object PathsUtils { fun createFakeFilePath(fileName: String): String = Path(buildResourcesPath, "fake_${Path(fileName).fileName}").toString() - //TODO: it is better to do it without marker files private val buildResourcesPath: String get() { val resourcesMarker = this.javaClass.classLoader.getResource("resources_marker.txt") ?: error("Resources marker file is not found") - return Path(resourcesMarker.path).parent.toString() + return Path(File(resourcesMarker.toURI()).path).parent.toString() } } \ No newline at end of file diff --git "a/utbot-spring-analyzer/src/main/resources/resour\321\201es_marker.txt" b/utbot-spring-analyzer/src/main/resources/resources_marker.txt similarity index 100% rename from "utbot-spring-analyzer/src/main/resources/resour\321\201es_marker.txt" rename to utbot-spring-analyzer/src/main/resources/resources_marker.txt From 7725b8779685df8a139455a33953c22c9250cc30 Mon Sep 17 00:00:00 2001 From: Egor Kulikov Date: Fri, 17 Mar 2023 17:56:56 +0300 Subject: [PATCH 2/2] Package renamed --- .../org/utbot/spring/analyzers/SpringApplicationAnalyzer.kt | 3 +-- .../org/utbot/spring/config/TestApplicationConfiguration.kt | 2 +- .../UtBotBeanFactoryPostProcessor.kt | 2 +- .../UtBotSpringShutdownException.kt | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) rename utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/{post_processors => postProcessors}/UtBotBeanFactoryPostProcessor.kt (98%) rename utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/{post_processors => postProcessors}/UtBotSpringShutdownException.kt (81%) diff --git a/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/analyzers/SpringApplicationAnalyzer.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/analyzers/SpringApplicationAnalyzer.kt index 72ba73fb9a..93119d5ec5 100644 --- a/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/analyzers/SpringApplicationAnalyzer.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/analyzers/SpringApplicationAnalyzer.kt @@ -5,8 +5,7 @@ import org.utbot.spring.configurators.PropertiesConfigurator import org.utbot.spring.configurators.XmlFilesConfigurator import org.utbot.spring.config.TestApplicationConfiguration import org.springframework.boot.builder.SpringApplicationBuilder -import org.springframework.context.ApplicationContextException -import org.utbot.spring.post_processors.UtBotSpringShutdownException +import org.utbot.spring.postProcessors.UtBotSpringShutdownException import org.utbot.spring.utils.ConfigurationManager import java.net.URL import java.net.URLClassLoader diff --git a/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/config/TestApplicationConfiguration.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/config/TestApplicationConfiguration.kt index 26c5b6d0ea..c34819293a 100644 --- a/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/config/TestApplicationConfiguration.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/config/TestApplicationConfiguration.kt @@ -3,7 +3,7 @@ package org.utbot.spring.config import org.springframework.beans.factory.config.BeanFactoryPostProcessor import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration -import org.utbot.spring.post_processors.UtBotBeanFactoryPostProcessor +import org.utbot.spring.postProcessors.UtBotBeanFactoryPostProcessor @Configuration open class TestApplicationConfiguration { diff --git a/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotBeanFactoryPostProcessor.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/postProcessors/UtBotBeanFactoryPostProcessor.kt similarity index 98% rename from utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotBeanFactoryPostProcessor.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/postProcessors/UtBotBeanFactoryPostProcessor.kt index 7fa402ca68..bbdab6201e 100644 --- a/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotBeanFactoryPostProcessor.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/postProcessors/UtBotBeanFactoryPostProcessor.kt @@ -1,4 +1,4 @@ -package org.utbot.spring.post_processors +package org.utbot.spring.postProcessors import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition import org.springframework.beans.factory.config.BeanFactoryPostProcessor diff --git a/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotSpringShutdownException.kt b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/postProcessors/UtBotSpringShutdownException.kt similarity index 81% rename from utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotSpringShutdownException.kt rename to utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/postProcessors/UtBotSpringShutdownException.kt index e6b3d6b176..41d29a0343 100644 --- a/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/post_processors/UtBotSpringShutdownException.kt +++ b/utbot-spring-analyzer/src/main/kotlin/org/utbot/spring/postProcessors/UtBotSpringShutdownException.kt @@ -1,4 +1,4 @@ -package org.utbot.spring.post_processors +package org.utbot.spring.postProcessors /** * Use this exception to shutdown this application