override fun readExternal()

in src/main/kotlin/com/jetbrains/plugin/jtreg/configuration/JTRegConfiguration.kt [439:511]


    override fun readExternal(element: Element) {
        super.readExternal(element)

        data = ConfigurationHelper.readTestData(element, settings)

        `package` = element.getAttributeValue("packageName") ?: ""
        runClass = element.getAttributeValue("className") ?: ""

        element.getChild("testGroup")?.let { testGroup ->
            val testRootDirectory = testGroup.getAttributeValue("testRootDirectory") ?: ""
            val relativeTestDirectory = testGroup.getAttributeValue("relativeTestDirectory") ?: ""
            val groupName = testGroup.getAttributeValue("groupName") ?: ""
            val testGroupObject = TestGroup(testRootDirectory, relativeTestDirectory, groupName)
            setTestGroup(testGroupObject)
        }

        val altJrePath = element.getAttributeValue("alternativeJrePath") ?: ""
        val altJreEnabled = element.getAttributeBooleanValue("alternativeClasspathEnabled")
        if (altJrePath.isEmpty()) {
            alternativeJrePath = ""
            alternativeClasspathEnabled = false
        } else {
            alternativeJrePath = altJrePath
            alternativeClasspathEnabled = altJreEnabled
        }
        element.getAttributeValue("workingDirectory")?.let {
            data.workingDirectory = it
        } ?: run {
            project.basePath?.let {
                val baseDir = Paths.get(it)
                val workDir = baseDir.resolve("JTWork").toString()
                data.workingDirectory = workDir
            }
        }
        programParameters = element.getAttributeValue("parameters") ?: ""
        vmParameters = element.getAttributeValue("vmParameters") ?: ""

        val testKind = element.getAttributeValue("testKind")
        if (testKind != null && testKind.isNotEmpty()) {
            setTestKind(testKind)
        } else {
            if (`package`.isNotEmpty()) {
                setTestKind(TestData.TEST_DIRECTORY)
            } else if (runClass.isNotEmpty()) {
                setTestKind(TestData.TEST_CLASS)
            } else {
                setTestKind(TestData.TEST_GROUP)
            }
        }

        val configurationName = element.getAttributeValue("configurationName")
        if (configurationName != null && configurationName.isNotEmpty()) {
            name = configurationName
        } else {
            when (getTestKind()) {
                TestData.TEST_DIRECTORY -> {
                    name = `package`
                }
                TestData.TEST_GROUP -> {
                    name = getTestGroup()?.groupName ?: ""
                }
                TestData.TEST_CLASS -> {
                    name = runClass
                }
            }
        }

        EnvironmentVariablesComponent.readExternal(element, data.envVars)

        element.getAttributeValue("runCmd")?.let { value ->
            setRunCmd(value)
        }
    }