summaryrefslogtreecommitdiff
path: root/plugins/kotlin/gradle/gradle-tooling/src/org/jetbrains/kotlin/idea/gradleTooling/builders/KotlinModuleIdentifierBuilder.kt
blob: 60b90edc57d8bef24c672b3909d612f1969e1559 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.kotlin.idea.gradleTooling.builders

import org.gradle.api.logging.Logging
import org.jetbrains.kotlin.idea.gradleTooling.KotlinLocalModuleIdentifierImpl
import org.jetbrains.kotlin.idea.gradleTooling.KotlinMavenModuleIdentifierImpl
import org.jetbrains.kotlin.idea.gradleTooling.reflect.KotlinLocalModuleIdentifierReflection
import org.jetbrains.kotlin.idea.gradleTooling.reflect.KotlinMavenModuleIdentifierReflection
import org.jetbrains.kotlin.idea.gradleTooling.reflect.KotlinModuleIdentifierReflection
import org.jetbrains.kotlin.idea.projectModel.KotlinLocalModuleIdentifier
import org.jetbrains.kotlin.idea.projectModel.KotlinMavenModuleIdentifier
import org.jetbrains.kotlin.idea.projectModel.KotlinModuleIdentifier

object KotlinModuleIdentifierBuilder : KotlinModelComponentBuilderBase<KotlinModuleIdentifierReflection, KotlinModuleIdentifier> {
    override fun buildComponent(origin: KotlinModuleIdentifierReflection): KotlinModuleIdentifier? = when (origin) {
        is KotlinLocalModuleIdentifierReflection -> KotlinLocalModuleIdentifierBuilder.buildComponent(origin)
        is KotlinMavenModuleIdentifierReflection -> KotlinMavenModuleIdentifierBuilder.buildComponent(origin)
        else -> {
            LOGGER.error("Unknown module identifier reflection: \"${origin.javaClass.name}\"")
            null
        }
    }

    private val LOGGER = Logging.getLogger(KotlinModuleIdentifierBuilder.javaClass)


    private object KotlinLocalModuleIdentifierBuilder :
        KotlinModelComponentBuilderBase<KotlinLocalModuleIdentifierReflection, KotlinLocalModuleIdentifier> {
        override fun buildComponent(origin: KotlinLocalModuleIdentifierReflection): KotlinLocalModuleIdentifier? {
            return KotlinLocalModuleIdentifierImpl(
                moduleClassifier = origin.moduleClassifier,
                buildId = origin.buildId ?: return null,
                projectId = origin.projectId ?: return null
            )
        }
    }

    private object KotlinMavenModuleIdentifierBuilder :
        KotlinModelComponentBuilderBase<KotlinMavenModuleIdentifierReflection, KotlinMavenModuleIdentifier> {
        override fun buildComponent(origin: KotlinMavenModuleIdentifierReflection): KotlinMavenModuleIdentifier? {
            return KotlinMavenModuleIdentifierImpl(
                moduleClassifier = origin.moduleClassifier,
                group = origin.group ?: return null,
                name = origin.name ?: return null
            )
        }
    }
}