diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/settings/ExternalSystemExecutionSettings.java b/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/settings/ExternalSystemExecutionSettings.java index fb073b6a4025..eb5bc7c6ea4b 100644 --- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/settings/ExternalSystemExecutionSettings.java +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/settings/ExternalSystemExecutionSettings.java @@ -1,6 +1,5 @@ package com.intellij.openapi.externalSystem.model.settings; -import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListener; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.UserDataHolder; import com.intellij.openapi.util.UserDataHolderBase; @@ -9,36 +8,20 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.Serializable; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicLong; -import java.util.concurrent.atomic.AtomicReference; /** - * There is a possible case that all work with external system is performed at a separate slave process (e.g. when we use - * an external system api and don't want to pollute ide process with it). The code which is executed at the external process - * is unaware of any ide-local settings defined by a user then. - *

- * Example: a user experiences problem with external system integration and we instruct him to define a dedicated system property - * which triggers verbose processing. That property is not visible to a slave process then, so, we need to deliver the data - * to it somehow. That's why this class has been introduced - it's just a holder for such data. - *

- * Thread-safe. - * - * @author Denis Zhdanov - * @since 8/9/11 12:12 PM + * Holds execution settings of particular invocation of an external system. + * E.g. task running or project importing. */ public class ExternalSystemExecutionSettings implements Serializable, UserDataHolder { public static final String REMOTE_PROCESS_IDLE_TTL_IN_MS_KEY = "external.system.remote.process.idle.ttl.ms"; - private static final int DEFAULT_REMOTE_PROCESS_TTL_MS = 60000; + private static final int DEFAULT_REMOTE_PROCESS_TTL_MS = 60000; private static final long serialVersionUID = 1L; - @NotNull private final AtomicLong myRemoteProcessIdleTtlInMs = new AtomicLong(); - @NotNull private final AtomicBoolean myVerboseProcessing = new AtomicBoolean(); - - @NotNull private final AtomicReference myNotificationListener = - new AtomicReference<>(); + private long myRemoteProcessIdleTtlInMs; + private boolean myVerboseProcessing; @NotNull private transient UserDataHolderBase myUserData = new UserDataHolderBase(); @@ -51,19 +34,19 @@ public class ExternalSystemExecutionSettings implements Serializable, UserDataHo * @return ttl in milliseconds for the remote process (positive value); non-positive value if undefined */ public long getRemoteProcessIdleTtlInMs() { - return myRemoteProcessIdleTtlInMs.get(); + return myRemoteProcessIdleTtlInMs; } public void setRemoteProcessIdleTtlInMs(long remoteProcessIdleTtlInMs) { - myRemoteProcessIdleTtlInMs.set(remoteProcessIdleTtlInMs); + myRemoteProcessIdleTtlInMs = remoteProcessIdleTtlInMs; } public boolean isVerboseProcessing() { - return myVerboseProcessing.get(); + return myVerboseProcessing; } public void setVerboseProcessing(boolean verboseProcessing) { - myVerboseProcessing.set(verboseProcessing); + myVerboseProcessing = verboseProcessing; } @Nullable @@ -76,13 +59,12 @@ public class ExternalSystemExecutionSettings implements Serializable, UserDataHo public void putUserData(@NotNull Key key, U value) { myUserData.putUserData(key, value); } - + @Override public int hashCode() { - int result = (int)(myRemoteProcessIdleTtlInMs.get() ^ (myRemoteProcessIdleTtlInMs.get() >>> 32)); - result = 31 * result + (myVerboseProcessing.get() ? 1 : 0); - ExternalSystemTaskNotificationListener listener = myNotificationListener.get(); - return listener == null ? result : 31 * result + listener.hashCode(); + int result = (int)(myRemoteProcessIdleTtlInMs ^ (myRemoteProcessIdleTtlInMs >>> 32)); + result = 31 * result + (myVerboseProcessing ? 1 : 0); + return result; } @Override @@ -92,16 +74,8 @@ public class ExternalSystemExecutionSettings implements Serializable, UserDataHo ExternalSystemExecutionSettings that = (ExternalSystemExecutionSettings)o; - if (myRemoteProcessIdleTtlInMs.get() != that.myRemoteProcessIdleTtlInMs.get()) return false; - if (myVerboseProcessing.get() != that.myVerboseProcessing.get()) return false; - ExternalSystemTaskNotificationListener notificationListener = myNotificationListener.get(); - ExternalSystemTaskNotificationListener thatNotificationListener = that.myNotificationListener.get(); - if ((notificationListener == null && thatNotificationListener != null) - || (notificationListener != null && !notificationListener.equals(thatNotificationListener))) - { - return false; - } - + if (myRemoteProcessIdleTtlInMs != that.myRemoteProcessIdleTtlInMs) return false; + if (myVerboseProcessing != that.myVerboseProcessing) return false; return true; } }