From 378019949a28515a2248f974ea823503c9f0b76d Mon Sep 17 00:00:00 2001
From: yonip23 <yoni@tabnine.com>
Date: Mon, 6 Mar 2023 18:00:58 +0200
Subject: [PATCH 1/3] DEV2-2244 inject enterprise url from updater plugin

---
 .../java/com/tabnine/general/StaticConfig.java    | 15 +++++++++++++++
 .../tabnine/userSettings/AppSettingsComponent.kt  |  7 ++++++-
 .../com/tabnine/userSettings/AppSettingsState.kt  |  3 ++-
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/tabnine/general/StaticConfig.java b/src/main/java/com/tabnine/general/StaticConfig.java
index 924c50a2a..e0e2e98d3 100644
--- a/src/main/java/com/tabnine/general/StaticConfig.java
+++ b/src/main/java/com/tabnine/general/StaticConfig.java
@@ -3,6 +3,7 @@
 import static com.tabnine.general.Utils.isUnitTestMode;
 import static java.awt.Color.decode;
 
+import com.intellij.ide.util.PropertiesComponent;
 import com.intellij.notification.NotificationDisplayType;
 import com.intellij.notification.NotificationGroup;
 import com.intellij.openapi.application.Application;
@@ -22,11 +23,20 @@
 import java.util.*;
 import javax.swing.*;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 public class StaticConfig {
   // Must be identical to what is written under <id>com.tabnine.TabNine</id> in plugin.xml !!!
   public static final String TABNINE_PLUGIN_ID_RAW =
       Config.IS_ON_PREM ? "com.tabnine.TabNine-Enterprise" : "com.tabnine.TabNine";
+  public static final String TABNINE_ENTERPRISE_URL_PROPERTIES_KEY =
+      TABNINE_PLUGIN_ID_RAW + ".enterpriseUrl";
+
+    // if the self-hosted updater injected the value, it'll be found here
+    @Nullable
+  public static final String TABNINE_ENTERPRISE_URL_DEFAULT_VALUE =
+      PropertiesComponent.getInstance().getValue(TABNINE_ENTERPRISE_URL_PROPERTIES_KEY);
+
   public static final PluginId TABNINE_PLUGIN_ID = PluginId.getId(TABNINE_PLUGIN_ID_RAW);
   public static final int MAX_COMPLETIONS = 5;
   public static final String BINARY_PROTOCOL_VERSION = "4.4.223";
@@ -107,6 +117,11 @@ public static Optional<String> getTabnineEnterpriseHost() {
     if (!path.isEmpty()) {
       return Optional.of(path);
     }
+
+    if (TABNINE_ENTERPRISE_URL_DEFAULT_VALUE != null) {
+        return Optional.of(TABNINE_ENTERPRISE_URL_DEFAULT_VALUE);
+    }
+
     return Optional.ofNullable(System.getProperty(TABNINE_ENTERPRISE_HOST));
   }
 
diff --git a/src/main/java/com/tabnine/userSettings/AppSettingsComponent.kt b/src/main/java/com/tabnine/userSettings/AppSettingsComponent.kt
index 4d578a975..494916a0a 100644
--- a/src/main/java/com/tabnine/userSettings/AppSettingsComponent.kt
+++ b/src/main/java/com/tabnine/userSettings/AppSettingsComponent.kt
@@ -90,7 +90,12 @@ class AppSettingsComponent {
             .addLabeledComponent("Log level (requires restart): ", logLevelComponent, 1, false)
 
         if (Config.IS_ON_PREM) {
-            panelBuilder.addLabeledComponent("Tabnine Enterprise URL (requires restart): ", cloud2UrlComponent, 1, false)
+            panelBuilder.addLabeledComponent(
+                "Tabnine Enterprise URL (requires restart): ",
+                cloud2UrlComponent,
+                1,
+                false
+            )
         }
         if (!isFixedDebounceConfigured()) {
             panelBuilder
diff --git a/src/main/java/com/tabnine/userSettings/AppSettingsState.kt b/src/main/java/com/tabnine/userSettings/AppSettingsState.kt
index 8db0f4999..14adb2929 100644
--- a/src/main/java/com/tabnine/userSettings/AppSettingsState.kt
+++ b/src/main/java/com/tabnine/userSettings/AppSettingsState.kt
@@ -5,6 +5,7 @@ import com.intellij.openapi.components.PersistentStateComponent
 import com.intellij.openapi.components.State
 import com.intellij.openapi.components.Storage
 import com.intellij.util.xmlb.XmlSerializerUtil
+import com.tabnine.general.StaticConfig
 import com.tabnine.inline.render.GraphicsUtils
 
 val settingsDefaultColor = GraphicsUtils.niceContrastColor.rgb
@@ -26,7 +27,7 @@ class AppSettingsState : PersistentStateComponent<AppSettingsState?> {
     var debounceTime: Long = 0
     var autoImportEnabled: Boolean = true
     var binariesFolderOverride: String = ""
-    var cloud2Url: String = ""
+    var cloud2Url: String = StaticConfig.TABNINE_ENTERPRISE_URL_DEFAULT_VALUE ?: ""
 
     private var colorState = settingsDefaultColor
 

From 78e0cac9b7c93175ce89fb28eb01394fc7ca325f Mon Sep 17 00:00:00 2001
From: yonip23 <yoni@tabnine.com>
Date: Mon, 6 Mar 2023 18:17:48 +0200
Subject: [PATCH 2/3] fmt

---
 src/main/java/com/tabnine/general/StaticConfig.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/tabnine/general/StaticConfig.java b/src/main/java/com/tabnine/general/StaticConfig.java
index e0e2e98d3..07ffff295 100644
--- a/src/main/java/com/tabnine/general/StaticConfig.java
+++ b/src/main/java/com/tabnine/general/StaticConfig.java
@@ -32,8 +32,8 @@ public class StaticConfig {
   public static final String TABNINE_ENTERPRISE_URL_PROPERTIES_KEY =
       TABNINE_PLUGIN_ID_RAW + ".enterpriseUrl";
 
-    // if the self-hosted updater injected the value, it'll be found here
-    @Nullable
+  // if the self-hosted updater injected the value, it'll be found here
+  @Nullable
   public static final String TABNINE_ENTERPRISE_URL_DEFAULT_VALUE =
       PropertiesComponent.getInstance().getValue(TABNINE_ENTERPRISE_URL_PROPERTIES_KEY);
 
@@ -119,7 +119,7 @@ public static Optional<String> getTabnineEnterpriseHost() {
     }
 
     if (TABNINE_ENTERPRISE_URL_DEFAULT_VALUE != null) {
-        return Optional.of(TABNINE_ENTERPRISE_URL_DEFAULT_VALUE);
+      return Optional.of(TABNINE_ENTERPRISE_URL_DEFAULT_VALUE);
     }
 
     return Optional.ofNullable(System.getProperty(TABNINE_ENTERPRISE_HOST));

From e564e8430b6817703d9723158dc62577b63b00ef Mon Sep 17 00:00:00 2001
From: yonip23 <yoni@tabnine.com>
Date: Mon, 6 Mar 2023 18:22:14 +0200
Subject: [PATCH 3/3] fix for tests

---
 .../com/tabnine/general/StaticConfig.java     | 19 ++++++++++++-------
 .../tabnine/userSettings/AppSettingsState.kt  |  2 +-
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/tabnine/general/StaticConfig.java b/src/main/java/com/tabnine/general/StaticConfig.java
index 07ffff295..bc3ade9aa 100644
--- a/src/main/java/com/tabnine/general/StaticConfig.java
+++ b/src/main/java/com/tabnine/general/StaticConfig.java
@@ -32,11 +32,6 @@ public class StaticConfig {
   public static final String TABNINE_ENTERPRISE_URL_PROPERTIES_KEY =
       TABNINE_PLUGIN_ID_RAW + ".enterpriseUrl";
 
-  // if the self-hosted updater injected the value, it'll be found here
-  @Nullable
-  public static final String TABNINE_ENTERPRISE_URL_DEFAULT_VALUE =
-      PropertiesComponent.getInstance().getValue(TABNINE_ENTERPRISE_URL_PROPERTIES_KEY);
-
   public static final PluginId TABNINE_PLUGIN_ID = PluginId.getId(TABNINE_PLUGIN_ID_RAW);
   public static final int MAX_COMPLETIONS = 5;
   public static final String BINARY_PROTOCOL_VERSION = "4.4.223";
@@ -112,14 +107,24 @@ public static Optional<String> getLogLevel() {
     return Optional.empty();
   }
 
+  // if the self-hosted updater injected the value, it'll be found here
+  @Nullable
+  public static String getInjectedEnterpriseUrlFromProperties() {
+    if (ApplicationManager.getApplication().isUnitTestMode()) {
+      return null;
+    }
+    return PropertiesComponent.getInstance().getValue(TABNINE_ENTERPRISE_URL_PROPERTIES_KEY);
+  }
+
   public static Optional<String> getTabnineEnterpriseHost() {
     String path = AppSettingsState.getInstance().getCloud2Url();
     if (!path.isEmpty()) {
       return Optional.of(path);
     }
 
-    if (TABNINE_ENTERPRISE_URL_DEFAULT_VALUE != null) {
-      return Optional.of(TABNINE_ENTERPRISE_URL_DEFAULT_VALUE);
+    String injectedHost = getInjectedEnterpriseUrlFromProperties();
+    if (injectedHost != null) {
+      return Optional.of(injectedHost);
     }
 
     return Optional.ofNullable(System.getProperty(TABNINE_ENTERPRISE_HOST));
diff --git a/src/main/java/com/tabnine/userSettings/AppSettingsState.kt b/src/main/java/com/tabnine/userSettings/AppSettingsState.kt
index 14adb2929..3c1684ce4 100644
--- a/src/main/java/com/tabnine/userSettings/AppSettingsState.kt
+++ b/src/main/java/com/tabnine/userSettings/AppSettingsState.kt
@@ -27,7 +27,7 @@ class AppSettingsState : PersistentStateComponent<AppSettingsState?> {
     var debounceTime: Long = 0
     var autoImportEnabled: Boolean = true
     var binariesFolderOverride: String = ""
-    var cloud2Url: String = StaticConfig.TABNINE_ENTERPRISE_URL_DEFAULT_VALUE ?: ""
+    var cloud2Url: String = StaticConfig.getInjectedEnterpriseUrlFromProperties() ?: ""
 
     private var colorState = settingsDefaultColor