From 48ac33d730307a4c1f7e4dd3ec4e436eae1ab84c Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Thu, 8 Aug 2013 15:50:20 +0400 Subject: [PATCH] Check is JavaBuilder.IS_ENABLED public Original commit: bc9af296a5cd1fa785aa099937b91f5784a54613 --- .../org/jetbrains/jet/jps/build/KotlinBuilder.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java index e215ecb5955..998759523e2 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java @@ -37,6 +37,8 @@ import org.jetbrains.jps.model.module.JpsModule; import java.io.File; import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.util.Collection; import java.util.List; @@ -73,7 +75,7 @@ public class KotlinBuilder extends ModuleLevelBuilder { OutputConsumer outputConsumer ) throws ProjectBuildException, IOException { MessageCollector messageCollector = new MessageCollectorAdapter(context); - if (!JavaBuilder.IS_ENABLED.get(context, Boolean.TRUE)) { + if (!isJavaPluginEnabled(context)) { messageCollector.report(INFO, "Kotlin JPS plugin is disabled", CompilerMessageLocation.NO_LOCATION); return ExitCode.NOTHING_DONE; } @@ -135,6 +137,16 @@ public class KotlinBuilder extends ModuleLevelBuilder { return ExitCode.OK; } + private static boolean isJavaPluginEnabled(@NotNull CompileContext context) { + try { + Field javaPluginIsEnabledField = JavaBuilder.class.getDeclaredField("IS_ENABLED"); + return Modifier.isPublic(javaPluginIsEnabledField.getModifiers()) ? JavaBuilder.IS_ENABLED.get(context, Boolean.TRUE) : true; + } + catch (NoSuchFieldException e) { + throw new IllegalArgumentException("Cannot check if Java Jps Plugin is enabled", e); + } + } + private static Collection paths(Collection files) { Collection result = ContainerUtil.newArrayList(); for (File file : files) {