All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmCommonFragmentFactory.kt Maven / Gradle / Ivy

There is a newer version: 2.0.0-RC3
Show newest version
/*
 * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

@file:Suppress("FunctionName")

package org.jetbrains.kotlin.gradle.plugin.mpp.pm20

import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation

typealias GradleKpmCommonFragmentFactory = GradleKpmFragmentFactory

fun GradleKpmCommonFragmentFactory(module: GradleKpmModule): GradleKpmCommonFragmentFactory =
    GradleKpmCommonFragmentFactory(GradleKpmCommonFragmentInstantiator(module))

fun GradleKpmCommonFragmentFactory(
    commonFragmentInstantiator: GradleKpmCommonFragmentInstantiator,
    commonFragmentConfigurator: GradleKpmCommonFragmentConfigurator = GradleKpmCommonFragmentConfigurator()
): GradleKpmFragmentFactory = GradleKpmFragmentFactory(
    fragmentInstantiator = commonFragmentInstantiator,
    fragmentConfigurator = commonFragmentConfigurator
)

class GradleKpmCommonFragmentInstantiator(
    private val module: GradleKpmModule,
    private val dependencyConfigurationsFactory: GradleKpmFragmentDependencyConfigurationsFactory =
        GradleKpmDefaultFragmentDependencyConfigurationsFactory
) : GradleKpmFragmentFactory.FragmentInstantiator {
    override fun create(name: String): GradleKpmFragmentInternal {
        val names = FragmentNameDisambiguation(module, name)
        return module.project.objects.newInstance(
            GradleKpmFragmentInternal::class.java,
            module,
            name,
            dependencyConfigurationsFactory.create(module, names)
        )
    }
}

class GradleKpmCommonFragmentConfigurator(
    private val sourceDirectoriesSetup: GradleKpmSourceDirectoriesConfigurator =
        GradleKpmDefaultSourceDirectoriesConfigurator
) : GradleKpmFragmentFactory.FragmentConfigurator {
    override fun configure(fragment: GradleKpmFragmentInternal) {
        sourceDirectoriesSetup.configure(fragment)
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy