diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonAction.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonAction.java index 020858e8cc4c..4448f0783780 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonAction.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonAction.java @@ -3,14 +3,12 @@ */ package org.jetbrains.plugins.gradle.internal.daemon; -import com.intellij.openapi.util.text.StringUtil; import org.gradle.initialization.BuildLayoutParameters; import org.gradle.internal.logging.events.OutputEvent; import org.gradle.internal.logging.events.OutputEventListener; import org.gradle.internal.service.ServiceRegistry; import org.gradle.launcher.daemon.client.DaemonClientFactory; import org.gradle.launcher.daemon.configuration.DaemonParameters; -import org.jetbrains.plugins.gradle.settings.GradleSystemSettings; import java.io.File; @@ -18,11 +16,16 @@ import java.io.File; * @author Vladislav.Soroka */ public abstract class DaemonAction { + private final String myServiceDirectoryPath; + + public DaemonAction(String serviceDirectoryPath) { + myServiceDirectoryPath = serviceDirectoryPath; + } + protected ServiceRegistry getDaemonServices(DaemonClientFactory daemonClientFactory) { BuildLayoutParameters layout = new BuildLayoutParameters(); - String serviceDirectoryPath = GradleSystemSettings.getInstance().getServiceDirectoryPath(); - if (StringUtil.isNotEmpty(serviceDirectoryPath)) { - layout.setGradleUserHomeDir(new File(serviceDirectoryPath)); + if (myServiceDirectoryPath != null && !myServiceDirectoryPath.isEmpty()) { + layout.setGradleUserHomeDir(new File(myServiceDirectoryPath)); } DaemonParameters daemonParameters = new DaemonParameters(layout); return daemonClientFactory.createStopDaemonServices(new OutputEventListener() { diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonStatusAction.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonStatusAction.java index 1843cd919c30..c912931bae20 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonStatusAction.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonStatusAction.java @@ -26,6 +26,10 @@ import java.util.Locale; * @author Vladislav.Soroka */ public class DaemonStatusAction extends DaemonAction { + public DaemonStatusAction(String serviceDirectoryPath) { + super(serviceDirectoryPath); + } + public List run(DaemonClientFactory daemonClientFactory) { ServiceRegistry daemonServices = getDaemonServices(daemonClientFactory); DaemonConnector daemonConnector = daemonServices.get(DaemonConnector.class); diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonStopAction.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonStopAction.java index cd111140b5ca..9d40fcee6aee 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonStopAction.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/DaemonStopAction.java @@ -24,6 +24,10 @@ import java.util.List; * @author Vladislav.Soroka */ public class DaemonStopAction extends DaemonAction { + public DaemonStopAction(String serviceDirectoryPath) { + super(serviceDirectoryPath); + } + public void run(DaemonClientFactory daemonClientFactory) { ServiceRegistry daemonServices = getDaemonServices(daemonClientFactory); DaemonStopClient stopClient = daemonServices.get(DaemonStopClient.class); diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/GradleDaemonServices.groovy b/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/GradleDaemonServices.groovy index 031d45c0befc..ceb0e873b592 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/GradleDaemonServices.groovy +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/internal/daemon/GradleDaemonServices.groovy @@ -15,6 +15,7 @@ import org.gradle.tooling.internal.consumer.loader.CachingToolingImplementationL import org.gradle.tooling.internal.consumer.loader.SynchronizedToolingImplementationLoader import org.gradle.tooling.internal.consumer.loader.ToolingImplementationLoader import org.jetbrains.annotations.ApiStatus +import org.jetbrains.plugins.gradle.settings.GradleSystemSettings import java.lang.reflect.Method @@ -61,6 +62,7 @@ class GradleDaemonServices { .allowLock(false) .get() + String serviceDirectoryPath = GradleSystemSettings.instance.getServiceDirectoryPath() def myRawArgData = getSerialized(arg) byte[] myRawResultData = null final ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader() @@ -69,9 +71,9 @@ class GradleDaemonServices { Class clazz = daemonClientClassLoader.loadClass(actionClass.name) def _arg = getObject(myRawArgData) Method method = findMethod(clazz, daemonClientFactory, _arg) - - def result = arg == null ? method.invoke(clazz.newInstance(), daemonClientFactory) : - method.invoke(clazz.newInstance(), daemonClientFactory, _arg) + Object[] serviceDirParam = [serviceDirectoryPath] + def result = arg == null ? method.invoke(clazz.newInstance(serviceDirParam), daemonClientFactory) : + method.invoke(clazz.newInstance(serviceDirParam), daemonClientFactory, _arg) if (result instanceof Serializable) { myRawResultData = getSerialized(result) }