From 2a75d3f52a4bde90712c5f5f652cd6ab8c54a7ae Mon Sep 17 00:00:00 2001 From: Nikita Skvortsov Date: Fri, 26 Dec 2014 16:05:14 +0300 Subject: [PATCH] fix tests --- .../tools/kotlin-gradle-plugin-core/pom.xml | 5 +++ .../gradle/plugin/KotlinPluginWrapper.kt | 36 ++++++------------- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-core/pom.xml b/libraries/tools/kotlin-gradle-plugin-core/pom.xml index 46f6492dee2..0558da6ba40 100644 --- a/libraries/tools/kotlin-gradle-plugin-core/pom.xml +++ b/libraries/tools/kotlin-gradle-plugin-core/pom.xml @@ -25,6 +25,11 @@ commons-io 2.4 + + commons-lang + commons-lang + 2.6 + org.jetbrains.kotlin kotlin-gradle-plugin-test diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt index 757619ca73c..250ec5f505a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt @@ -10,6 +10,8 @@ import java.util.Properties import java.io.FileNotFoundException import org.gradle.api.initialization.dsl.ScriptHandler import org.gradle.api.invocation.Gradle +import java.lang.reflect.Method +import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider abstract class KotlinBasePluginWrapper: Plugin { val log = Logging.getLogger(this.javaClass) @@ -27,24 +29,14 @@ abstract class KotlinBasePluginWrapper: Plugin { project.getExtensions().getExtraProperties()?.set("kotlin.gradle.plugin.version", kotlinPluginVersion) val pluginClassLoader = createPluginIsolatedClassLoader(kotlinPluginVersion, sourceBuildScript) + val plugin = getPlugin(pluginClassLoader, sourceBuildScript) + plugin.apply(project) - val cls = Class.forName(getPluginClassName(), true, pluginClassLoader) - log.debug("Plugin class loaded") - - val constructor = cls.getConstructor(javaClass()) - val method = cls.getMethod("apply", javaClass()) - log.debug("'apply' method found, invoking...") - - val plugin = constructor.newInstance(sourceBuildScript) - log.debug("Plugin class instantiated") - - method?.invoke(plugin, project) - log.debug("'apply' method invoked successfully") - - val gradle = project.javaClass.getMethod("getGradle").invoke(project) as Gradle - gradle.addBuildListener(FinishBuildListener(pluginClassLoader)) + project.getGradle().addBuildListener(FinishBuildListener(pluginClassLoader)) } + protected abstract fun getPlugin(pluginClassLoader: ParentLastURLClassLoader, scriptHandler: ScriptHandler): Plugin + private fun createPluginIsolatedClassLoader(projectVersion: String, sourceBuildScript: ScriptHandler): ParentLastURLClassLoader { val dependencyHandler: DependencyHandler = sourceBuildScript.getDependencies() val configurationsContainer: ConfigurationContainer = sourceBuildScript.getConfigurations() @@ -81,8 +73,6 @@ abstract class KotlinBasePluginWrapper: Plugin { return projectVersion } - public abstract fun getPluginClassName():String - private fun findSourceBuildScript(project: Project): ScriptHandler? { log.debug("Looking for proper script handler") var curProject = project @@ -102,20 +92,14 @@ abstract class KotlinBasePluginWrapper: Plugin { } open class KotlinPluginWrapper: KotlinBasePluginWrapper() { - public override fun getPluginClassName():String { - return "org.jetbrains.kotlin.gradle.plugin.KotlinPlugin" - } + override fun getPlugin(pluginClassLoader: ParentLastURLClassLoader, scriptHandler: ScriptHandler) = KotlinPlugin(scriptHandler, KotlinTasksProvider(pluginClassLoader)) } open class KotlinAndriodPluginWrapper: KotlinBasePluginWrapper() { - public override fun getPluginClassName():String { - return "org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin" - } + override fun getPlugin(pluginClassLoader: ParentLastURLClassLoader, scriptHandler: ScriptHandler) = KotlinAndroidPlugin(scriptHandler, KotlinTasksProvider(pluginClassLoader)) } open class Kotlin2JsPluginWrapper : KotlinBasePluginWrapper() { - public override fun getPluginClassName():String { - return "org.jetbrains.kotlin.gradle.plugin.Kotlin2JsPlugin" - } + override fun getPlugin(pluginClassLoader: ParentLastURLClassLoader, scriptHandler: ScriptHandler) = Kotlin2JsPlugin(scriptHandler, KotlinTasksProvider(pluginClassLoader)) }