@@ -19,7 +19,7 @@
falsetruefalse
- false
+ false
-
+
\ No newline at end of file
diff --git a/.run/Run AWS Toolkit - Gateway [2024.3].run.xml b/.run/Run AWS Toolkit - Gateway [2024.3].run.xml
new file mode 100644
index 00000000000..9e497817c24
--- /dev/null
+++ b/.run/Run AWS Toolkit - Gateway [2024.3].run.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/Run AWS Toolkit - Rider [2024.3].run.xml b/.run/Run AWS Toolkit - Rider [2024.3].run.xml
new file mode 100644
index 00000000000..dfb04280b4e
--- /dev/null
+++ b/.run/Run AWS Toolkit - Rider [2024.3].run.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/Run AWS Toolkit - Ultimate [2024.3].run.xml b/.run/Run AWS Toolkit - Ultimate [2024.3].run.xml
new file mode 100644
index 00000000000..24a1c12fcbb
--- /dev/null
+++ b/.run/Run AWS Toolkit - Ultimate [2024.3].run.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/Run All - Community [2024.3].run.xml b/.run/Run All - Community [2024.3].run.xml
new file mode 100644
index 00000000000..16d4674dd85
--- /dev/null
+++ b/.run/Run All - Community [2024.3].run.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/Run All - Rider [2024.3].run.xml b/.run/Run All - Rider [2024.3].run.xml
new file mode 100644
index 00000000000..bd6e33e8cef
--- /dev/null
+++ b/.run/Run All - Rider [2024.3].run.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/Run All - Ultimate [2024.3].run.xml b/.run/Run All - Ultimate [2024.3].run.xml
new file mode 100644
index 00000000000..4b342ef6cc8
--- /dev/null
+++ b/.run/Run All - Ultimate [2024.3].run.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/Run Amazon Q - Community [2024.3].run.xml b/.run/Run Amazon Q - Community [2024.3].run.xml
new file mode 100644
index 00000000000..1fabbca0705
--- /dev/null
+++ b/.run/Run Amazon Q - Community [2024.3].run.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/Run Amazon Q - Rider [2024.3].run.xml b/.run/Run Amazon Q - Rider [2024.3].run.xml
new file mode 100644
index 00000000000..59c877e9d51
--- /dev/null
+++ b/.run/Run Amazon Q - Rider [2024.3].run.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/Run Amazon Q - Ultimate [2024.3].run.xml b/.run/Run Amazon Q - Ultimate [2024.3].run.xml
new file mode 100644
index 00000000000..26ca55e73c5
--- /dev/null
+++ b/.run/Run Amazon Q - Ultimate [2024.3].run.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/generateConfigs.py b/.run/generateConfigs.py
index 3477cd685ec..4e7616b892d 100644
--- a/.run/generateConfigs.py
+++ b/.run/generateConfigs.py
@@ -1,6 +1,6 @@
# Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
-from dataclasses import dataclass
+from dataclasses import dataclass, field
import os
@dataclass
@@ -13,6 +13,13 @@ class PluginVariant:
class IdeVariant:
pretty: str
short: str
+ ide_variant_parameter: str = field(init=False)
+
+ def __post_init__(self):
+ if self.short == 'GW':
+ self.ide_variant_parameter = ''
+ else:
+ self.ide_variant_parameter = f'-PrunIdeVariant={self.short}'
TEMPLATE = '''
@@ -21,7 +28,7 @@ class IdeVariant:
-
+
@@ -40,8 +47,12 @@ class IdeVariant:
'''
+def write_config(mv: str, ide: IdeVariant, plugin: PluginVariant):
+ with open(os.path.join(script_root, f'Run {plugin.name} - {ide.pretty} [{mv}].run.xml'), 'w') as f:
+ f.write(TEMPLATE.format(plugin = plugin, variant = ide, major_version = mv))
+
if __name__ == '__main__':
- mvs = ["2023.3", "2024.1", "2024.2"]
+ mvs = ["2023.3", "2024.1", "2024.2", "2024.3"]
ides = [
IdeVariant("Community", "IC"),
IdeVariant("Rider", "RD"),
@@ -58,5 +69,8 @@ class IdeVariant:
for mv in mvs:
for ide in ides:
for plugin in plugins:
- with open(os.path.join(script_root, f'Run {plugin.name} - {ide.pretty} [{mv}].run.xml'), 'w') as f:
- f.write(TEMPLATE.format(plugin = plugin, variant = ide, major_version = mv))
+ write_config(mv, ide, plugin)
+
+ # gateway only supported from last 'stable' version onwards
+ for mv in mvs[2:]:
+ write_config(mv, IdeVariant("Gateway", "GW"), PluginVariant("AWS Toolkit", "toolkit/jetbrains-gateway", ":plugin-toolkit:jetbrains-gateway"))
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 71ad50dab64..0c2f1cf2fbc 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -22,7 +22,7 @@ reported the issue. Please try to include as much information as you can. Detail
### Requirements
-* [Java 17](https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/downloads-list.html)
+* [Java 21](https://docs.aws.amazon.com/corretto/latest/corretto-21-ug/downloads-list.html)
* [Git](https://git-scm.com/)
* .NET 6
* In theory, you can use a higher version, however we build with .NET 6 in CI
@@ -35,7 +35,7 @@ reported the issue. Please try to include as much information as you can. Detail
### Instructions
1. Clone the github repository.
-2. To manually build a plugin distribution, run the `buildPlugin` task on the relevant Gradle project.
+2. To manually build a plugin distribution, run the global task, `./gradlew buildPlugin` to build all plugins, or on specific subproject if you want a specific plugin
- For example, `./gradlew :plugin-toolkit:intellij-standalone:buildPlugin` will produce a plugin zip under `plugins/toolkit/intellij-standalone/build/distributions`.
- You can also run the `:plugin-core:buildPlugin` and `:plugin-amazonq:buildPlugin` tasks
- Use the `-PideProfileName={JETBRAINS_VERSION}` option to build the plugin for a particular IDE version (e.g `./gradlew :plugin-toolkit:intellij-standalone:buildPlugin -PideProfileName=2024.1`)
diff --git a/README.md b/README.md
index 81967024e17..6ec8b4eb939 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ We want your feedback!
- Code contributions. See [our contributing guide](CONTRIBUTING.md) for how to get started.
## Supported IDEs
-All JetBrains IDEs 2023.2+
+All JetBrains IDEs 2023.3+
## Installation
diff --git a/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/BuildScriptUtils.kt b/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/BuildScriptUtils.kt
index 2bccc07914e..880b4172008 100644
--- a/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/BuildScriptUtils.kt
+++ b/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/BuildScriptUtils.kt
@@ -28,10 +28,11 @@ fun Project.jvmTarget(): Provider = withCurrentProfileName {
}
}
-// https://plugins.jetbrains.com/docs/intellij/using-kotlin.html#other-bundled-kotlin-libraries
+// https://plugins.jetbrains.com/docs/intellij/using-kotlin.html#stdlib-miscellaneous
fun Project.kotlinTarget(): Provider = withCurrentProfileName {
when (it) {
"2023.3", "2024.1", "2024.2" -> KotlinVersionEnum.KOTLIN_1_9
+ "2024.3" -> KotlinVersionEnum.KOTLIN_2_0
else -> error("not set")
}.version
}
diff --git a/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/IdeVersions.kt b/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/IdeVersions.kt
index bdb76239d5f..3a9c5d20591 100644
--- a/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/IdeVersions.kt
+++ b/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/IdeVersions.kt
@@ -138,6 +138,50 @@ object IdeVersions {
nugetVersion = " 2024.2.0-eap07"
)
),
+ Profile(
+ name = "2024.3",
+ gateway = ProductProfile(
+ sdkFlavor = IdeFlavor.GW,
+ sdkVersion = "243.19420-EAP-CANDIDATE-SNAPSHOT",
+ bundledPlugins = listOf("org.jetbrains.plugins.terminal")
+ ),
+ community = ProductProfile(
+ sdkFlavor = IdeFlavor.IC,
+ sdkVersion = "243.19420-EAP-CANDIDATE-SNAPSHOT",
+ bundledPlugins = commonPlugins + listOf(
+ "com.intellij.java",
+ "com.intellij.gradle",
+ "org.jetbrains.idea.maven",
+ ),
+ marketplacePlugins = listOf(
+ "org.toml.lang:243.19420.27",
+ "PythonCore:243.19420.21",
+ "Docker:243.19420.27"
+ )
+ ),
+ ultimate = ProductProfile(
+ sdkFlavor = IdeFlavor.IU,
+ sdkVersion = "243.19420-EAP-CANDIDATE-SNAPSHOT",
+ bundledPlugins = commonPlugins + listOf(
+ "JavaScript",
+ "JavaScriptDebugger",
+ "com.intellij.database",
+ "com.jetbrains.codeWithMe",
+ ),
+ marketplacePlugins = listOf(
+ "org.toml.lang:243.18137.23",
+ "Pythonid:243.19420.21",
+ "org.jetbrains.plugins.go:243.19420.21",
+ )
+ ),
+ rider = RiderProfile(
+ sdkVersion = "2024.3-SNAPSHOT",
+ bundledPlugins = commonPlugins,
+ netFrameworkTarget = "net472",
+ rdGenVersion = "2024.3.0",
+ nugetVersion = " 2024.3.0-eap03"
+ )
+ ),
).associateBy { it.name }
diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts
index 3d412ade791..3098d992d58 100644
--- a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts
+++ b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts
@@ -2,6 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
+import org.jetbrains.intellij.platform.gradle.TestFrameworkType
import software.aws.toolkits.gradle.findFolders
import software.aws.toolkits.gradle.intellij.IdeVersions
import software.aws.toolkits.gradle.intellij.toolkitIntelliJ
@@ -34,6 +35,10 @@ configurations {
// IDE provides Kotlin
exclude(group = "org.jetbrains.kotlin")
exclude(group = "org.jetbrains.kotlinx")
+
+ exclude(group = "com.fasterxml.jackson.core")
+ exclude(group = "com.fasterxml.jackson.module", "jackson-module-kotlin")
+ exclude(group = "com.fasterxml.jackson.dataformat", "jackson-dataformat-yaml")
}
configureEach {
@@ -95,6 +100,10 @@ dependencies {
bundledPlugins(toolkitIntelliJ.productProfile().map { it.bundledPlugins })
plugins(toolkitIntelliJ.productProfile().map { it.marketplacePlugins })
+
+ testFramework(TestFrameworkType.Plugin.Java)
+ testFramework(TestFrameworkType.Platform)
+ testFramework(TestFrameworkType.JUnit5)
}
}
diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts
index d31e0d41bcc..6a2ebaa7f13 100644
--- a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts
@@ -65,6 +65,14 @@ dependencies {
}
}
+configurations {
+ runtimeClasspath {
+ exclude(group = "com.fasterxml.jackson.core")
+ exclude(group = "com.fasterxml.jackson.module", "jackson-module-kotlin")
+ exclude(group = "com.fasterxml.jackson.dataformat", "jackson-dataformat-yaml")
+ }
+}
+
tasks.runIde {
systemProperty("aws.toolkit.developerMode", true)
systemProperty("ide.plugins.snapshot.on.unload.fail", true)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index b063d950fbe..d2bc5d0ace0 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -5,12 +5,12 @@ assertJ = "3.26.3"
# match with /settings.gradle.kts
awsSdk = "2.26.25"
commonmark = "0.22.0"
-detekt = "1.23.6"
+detekt = "1.23.7"
intellijExt = "1.1.8"
# match with /settings.gradle.kts
-intellijGradle = "2.0.0"
+intellijGradle = "2.1.0"
intellijRemoteRobot = "0.11.22"
-jackson = "2.16.1"
+jackson = "2.17.2"
jacoco = "0.8.12"
jgit = "6.5.0.202303070854-r"
junit4 = "4.13.2"
@@ -32,7 +32,7 @@ testRetry = "1.5.10"
slf4j = "2.0.16"
sshd = "2.13.2"
undercouch-download = "5.2.1"
-wiremock = "3.3.1"
+wiremock = "3.9.1"
zjsonpatch = "0.4.16"
[libraries]
diff --git a/kotlinResolution.settings.gradle.kts b/kotlinResolution.settings.gradle.kts
index ad70ad89c77..8fffe64fa01 100644
--- a/kotlinResolution.settings.gradle.kts
+++ b/kotlinResolution.settings.gradle.kts
@@ -4,15 +4,18 @@
dependencyResolutionManagement {
versionCatalogs {
maybeCreate("libs").apply {
- // pull value from IJ library list: https://github.com/JetBrains/intellij-community/blob//.idea/libraries/kotlinx_coroutines_jdk8.xml
- // or: https://github.com/JetBrains/intellij-community/blob//.idea/libraries/kotlinx_coroutines_core.xml
+ // pull value from IJ library list: https://github.com/JetBrains/intellij-community/blob//.idea/libraries/kotlinx_coroutines_core.xml
val version = when (providers.gradleProperty("ideProfileName").getOrNull() ?: return@apply) {
"2023.3", "2024.1" -> {
"1.7.3"
}
"2024.2" -> {
- "1.8.0"
+ "1.8.0-intellij-9"
+ }
+
+ "2024.3" -> {
+ "1.8.0-intellij-11"
}
else -> { error("not set") }
diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt
index 74a04847c6f..f94f242050b 100644
--- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt
+++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt
@@ -13,9 +13,8 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Disposer
import com.intellij.ui.components.JBTextArea
import com.intellij.ui.components.panels.Wrapper
+import com.intellij.ui.dsl.builder.Align
import com.intellij.ui.dsl.builder.panel
-import com.intellij.ui.dsl.gridLayout.HorizontalAlign
-import com.intellij.ui.dsl.gridLayout.VerticalAlign
import com.intellij.ui.jcef.JBCefJSQuery
import org.cef.CefApp
import software.aws.toolkits.core.utils.error
@@ -54,8 +53,7 @@ class QWebviewPanel private constructor(val project: Project) : Disposable {
val component = panel {
row {
cell(webviewContainer)
- .horizontalAlign(HorizontalAlign.FILL)
- .verticalAlign(VerticalAlign.FILL)
+ .align(Align.FILL)
}.resizableRow()
if (isDeveloperMode()) {
@@ -69,8 +67,7 @@ class QWebviewPanel private constructor(val project: Project) : Disposable {
)
},
)
- .horizontalAlign(HorizontalAlign.CENTER)
- .verticalAlign(VerticalAlign.BOTTOM)
+ .align(Align.FILL)
}
}
}
@@ -202,7 +199,7 @@ class QWebviewBrowser(val project: Project, private val parentDisposable: Dispos
is BrowserMessage.SendUiClickTelemetry -> {
val signInOption = message.signInOptionClicked
if (signInOption.isNullOrEmpty()) {
- LOG.warn("Unknown sign in option")
+ LOG.warn { "Unknown sign in option" }
} else {
UiTelemetry.click(project, signInOption)
}
diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/startup/AmazonQStartupActivity.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/startup/AmazonQStartupActivity.kt
index 5dfb0b0cf62..a3011e5963c 100644
--- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/startup/AmazonQStartupActivity.kt
+++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/startup/AmazonQStartupActivity.kt
@@ -3,6 +3,7 @@
package software.aws.toolkits.jetbrains.services.amazonq.startup
+import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.runInEdt
import com.intellij.openapi.project.Project
import com.intellij.openapi.project.waitForSmartMode
@@ -27,6 +28,8 @@ class AmazonQStartupActivity : ProjectActivity {
private val runOnce = AtomicBoolean(false)
override suspend fun execute(project: Project) {
+ if (ApplicationManager.getApplication().isUnitTestMode) return
+
// initialize html contents in BGT so users don't have to wait when they open the tool window
AmazonQToolWindow.getInstance(project)
diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/PanelTestBase.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/PanelTestBase.kt
index f1403c25d7b..de0c247bb05 100644
--- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/PanelTestBase.kt
+++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/PanelTestBase.kt
@@ -4,8 +4,8 @@
package software.aws.toolkits.jetbrains.services.codemodernizer.panels
import com.intellij.openapi.project.Project
+import org.junit.Before
import org.junit.Rule
-import org.junit.jupiter.api.BeforeEach
import software.aws.toolkits.jetbrains.utils.rules.CodeInsightTestFixtureRule
open class PanelTestBase(
@@ -13,7 +13,7 @@ open class PanelTestBase(
) {
internal lateinit var project: Project
- @BeforeEach
+ @Before
open fun setup() {
project = projectRule.project
}
diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManagerTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManagerTest.kt
index 6e0d96e8f41..7b37fd3016f 100644
--- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManagerTest.kt
+++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManagerTest.kt
@@ -42,7 +42,6 @@ class CodeModernizerBottomWindowPanelManagerTest : PanelTestBase() {
codeModernizerBottomWindowPanelManagerMock.userInitiatedStopCodeModernizationUI()
assertThat(loadingPanelMock).isEqualTo(codeModernizerBottomWindowPanelManagerMock.fullSizeLoadingPanel)
verify(loadingPanelMock, times(0)).showSuccessUI()
- verify(codeModernizerBottomWindowPanelManagerMock, times(1)).banner
}
@Test
@@ -57,6 +56,5 @@ class CodeModernizerBottomWindowPanelManagerTest : PanelTestBase() {
var resultMock: CodeModernizerJobCompletedResult = spy(CodeModernizerJobCompletedResult.JobFailed(JobId("test-job-id"), "test-failure-reason"))
codeModernizerBottomWindowPanelManagerMock.setJobFinishedUI(resultMock)
verify(loadingPanelMock, times(0)).showSuccessUI()
- verify(codeModernizerBottomWindowPanelManagerMock, times(1)).banner
}
}
diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt
index 51fa7c6fdf8..3c600f75d89 100644
--- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt
+++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt
@@ -17,7 +17,7 @@ import com.intellij.ui.dsl.builder.BottomGap
import com.intellij.ui.dsl.builder.Panel
import com.intellij.ui.dsl.builder.TopGap
import com.intellij.ui.dsl.builder.panel
-import com.intellij.ui.dsl.gridLayout.Gaps
+import com.intellij.ui.dsl.gridLayout.UnscaledGaps
import icons.AwsIcons
import software.aws.toolkits.jetbrains.services.codewhisperer.learn.LearnCodeWhispererUIComponents.examplesDescriptionPanel
import software.aws.toolkits.jetbrains.services.codewhisperer.learn.LearnCodeWhispererUIComponents.tryExamplePanel
@@ -29,7 +29,7 @@ class LearnCodeWhispererEditor(val project: Project, val virtualFile: VirtualFil
private val contentPanel = panel {
row {
panel {
- customize(Gaps(20, 50, 0, 0))
+ customize(UnscaledGaps(20, 50, 0, 0))
row {
icon(AwsIcons.Logos.AWS_Q_GRADIENT)
@@ -46,7 +46,7 @@ class LearnCodeWhispererEditor(val project: Project, val virtualFile: VirtualFil
row {
// Single panel
panel {
- customize(Gaps(0, 50, 0, 0))
+ customize(UnscaledGaps(0, 50, 0, 0))
align(AlignY.TOP)
subtitle(message("codewhisperer.learn_page.examples.title")).bottomGap(BottomGap.MEDIUM)
diff --git a/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaSampleEventProvider.kt b/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaSampleEventProvider.kt
index 0f76e22d383..79f405c63f9 100644
--- a/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaSampleEventProvider.kt
+++ b/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaSampleEventProvider.kt
@@ -91,7 +91,6 @@ object LambdaSampleEventJsonValidator : RemoteResolveParser {
private val LOG = LoggerFactory.getLogger(LambdaSampleEventJsonValidator::class.java)
private val mapper = jacksonObjectMapper()
- .disable(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS)
.disable(MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORS)
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.enable(JsonParser.Feature.ALLOW_COMMENTS)
diff --git a/plugins/core/core/src/software/aws/toolkits/core/region/Partitions.kt b/plugins/core/core/src/software/aws/toolkits/core/region/Partitions.kt
index cea5e1b6ae0..6717eb08cb4 100644
--- a/plugins/core/core/src/software/aws/toolkits/core/region/Partitions.kt
+++ b/plugins/core/core/src/software/aws/toolkits/core/region/Partitions.kt
@@ -39,7 +39,6 @@ object PartitionParser {
private val LOG = LoggerFactory.getLogger(PartitionParser::class.java)
private val mapper = jacksonObjectMapper()
- .disable(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS)
.disable(MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORS)
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.enable(JsonParser.Feature.ALLOW_COMMENTS)
diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts
index d3a8e7b504e..491a82f4166 100644
--- a/plugins/core/jetbrains-community/build.gradle.kts
+++ b/plugins/core/jetbrains-community/build.gradle.kts
@@ -3,7 +3,6 @@
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask
-import org.jetbrains.intellij.platform.gradle.TestFrameworkType
import software.aws.toolkits.gradle.intellij.IdeFlavor
import software.aws.toolkits.telemetry.generator.gradle.GenerateTelemetry
@@ -56,12 +55,6 @@ configurations.testFixturesApi {
}
dependencies {
- intellijPlatform {
- testFramework(TestFrameworkType.Plugin.Java)
- testFramework(TestFrameworkType.Platform)
- testFramework(TestFrameworkType.JUnit5)
- }
-
compileOnlyApi(project(":plugin-core:core"))
compileOnlyApi(libs.aws.apacheClient)
compileOnlyApi(libs.aws.nettyClient)
diff --git a/plugins/core/jetbrains-community/src-233-242/software/aws/toolkits/jetbrains/PluginVersionChecker.kt b/plugins/core/jetbrains-community/src-233-242/software/aws/toolkits/jetbrains/PluginVersionChecker.kt
new file mode 100644
index 00000000000..92e527a6a61
--- /dev/null
+++ b/plugins/core/jetbrains-community/src-233-242/software/aws/toolkits/jetbrains/PluginVersionChecker.kt
@@ -0,0 +1,13 @@
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains
+
+import com.intellij.ide.ApplicationInitializedListener
+import kotlinx.coroutines.CoroutineScope
+
+class PluginVersionChecker : ApplicationInitializedListener {
+ override suspend fun execute(asyncScope: CoroutineScope) {
+ PluginVersionCheckerImpl.execute()
+ }
+}
diff --git a/plugins/core/jetbrains-community/src-243+/software/aws/toolkits/jetbrains/PluginVersionChecker.kt b/plugins/core/jetbrains-community/src-243+/software/aws/toolkits/jetbrains/PluginVersionChecker.kt
new file mode 100644
index 00000000000..46da3856f27
--- /dev/null
+++ b/plugins/core/jetbrains-community/src-243+/software/aws/toolkits/jetbrains/PluginVersionChecker.kt
@@ -0,0 +1,12 @@
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains
+
+import com.intellij.ide.ApplicationInitializedListener
+
+class PluginVersionChecker : ApplicationInitializedListener {
+ override suspend fun execute() {
+ PluginVersionCheckerImpl.execute()
+ }
+}
diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/PluginVersionChecker.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/PluginVersionCheckerImpl.kt
similarity index 93%
rename from plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/PluginVersionChecker.kt
rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/PluginVersionCheckerImpl.kt
index fe6bc0e1e0f..9d21e80d40f 100644
--- a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/PluginVersionChecker.kt
+++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/PluginVersionCheckerImpl.kt
@@ -3,7 +3,6 @@
package software.aws.toolkits.jetbrains
-import com.intellij.ide.ApplicationInitializedListener
import com.intellij.ide.plugins.IdeaPluginDescriptor
import com.intellij.ide.plugins.PluginEnabler
import com.intellij.notification.NotificationAction
@@ -12,7 +11,6 @@ import com.intellij.notification.SingletonNotificationManager
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.ex.ApplicationManagerEx
import com.intellij.openapi.progress.EmptyProgressIndicator
-import kotlinx.coroutines.CoroutineScope
import software.aws.toolkits.core.utils.error
import software.aws.toolkits.core.utils.getLogger
import software.aws.toolkits.core.utils.info
@@ -23,8 +21,8 @@ import software.aws.toolkits.jetbrains.core.plugin.PluginUpdateManager
import software.aws.toolkits.resources.AwsCoreBundle
import javax.swing.SwingUtilities
-class PluginVersionChecker : ApplicationInitializedListener {
- override suspend fun execute(asyncScope: CoroutineScope) {
+object PluginVersionCheckerImpl {
+ fun execute() {
if (ApplicationManager.getApplication().isHeadlessEnvironment) {
LOG.info { "Skipping due to headless environment" }
return
@@ -113,7 +111,5 @@ class PluginVersionChecker : ApplicationInitializedListener {
return false
}
- companion object {
- private val LOG = getLogger()
- }
+ private val LOG = getLogger()
}
diff --git a/plugins/toolkit/intellij-standalone/build.gradle.kts b/plugins/toolkit/intellij-standalone/build.gradle.kts
index c11729ce5b1..0b4c6b27eae 100644
--- a/plugins/toolkit/intellij-standalone/build.gradle.kts
+++ b/plugins/toolkit/intellij-standalone/build.gradle.kts
@@ -22,6 +22,8 @@ dependencies {
intellijPlatform {
localPlugin(project(":plugin-core"))
pluginModule(project(":plugin-toolkit:jetbrains-core"))
+
+ plugin("PythonCore:243.18137.10")
}
}
diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts
index 63787612467..737c1781753 100644
--- a/plugins/toolkit/jetbrains-core/build.gradle.kts
+++ b/plugins/toolkit/jetbrains-core/build.gradle.kts
@@ -34,6 +34,14 @@ intellijToolkit {
dependencies {
intellijPlatform {
localPlugin(project(":plugin-core"))
+
+ when (providers.gradleProperty("ideProfileName").get()) {
+ "2023.3", "2024.1" -> {}
+ else -> {
+ bundledModule("intellij.platform.vcs.dvcs.impl")
+ bundledModule("intellij.libraries.microba")
+ }
+ }
}
}
diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/PluginCoreEnforcementActivity.kt b/plugins/toolkit/jetbrains-core/src-233-241/software/aws/toolkits/jetbrains/core/startup/PluginCoreEnforcementActivity.kt
similarity index 100%
rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/PluginCoreEnforcementActivity.kt
rename to plugins/toolkit/jetbrains-core/src-233-241/software/aws/toolkits/jetbrains/core/startup/PluginCoreEnforcementActivity.kt
diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PyCharmSdkSelectionPanel.kt b/plugins/toolkit/jetbrains-core/src-233-242/software/aws/toolkits/jetbrains/services/lambda/python/PyCharmSdkSelectionPanel.kt
similarity index 100%
rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PyCharmSdkSelectionPanel.kt
rename to plugins/toolkit/jetbrains-core/src-233-242/software/aws/toolkits/jetbrains/services/lambda/python/PyCharmSdkSelectionPanel.kt
diff --git a/plugins/toolkit/jetbrains-core/src-243+/software/aws/toolkits/jetbrains/services/lambda/python/PyCharmSdkSelectionPanel.kt b/plugins/toolkit/jetbrains-core/src-243+/software/aws/toolkits/jetbrains/services/lambda/python/PyCharmSdkSelectionPanel.kt
new file mode 100644
index 00000000000..fe34a683ab4
--- /dev/null
+++ b/plugins/toolkit/jetbrains-core/src-243+/software/aws/toolkits/jetbrains/services/lambda/python/PyCharmSdkSelectionPanel.kt
@@ -0,0 +1,58 @@
+// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.lambda.python
+
+import com.intellij.ide.util.projectWizard.WizardContext
+import com.intellij.ide.wizard.NewProjectWizardBaseData
+import com.intellij.ide.wizard.NewProjectWizardStep
+import com.intellij.openapi.observable.properties.PropertyGraph
+import com.intellij.openapi.roots.ModifiableRootModel
+import com.intellij.openapi.ui.TextFieldWithBrowseButton
+import com.intellij.openapi.ui.ValidationInfo
+import com.intellij.openapi.util.UserDataHolderBase
+import com.intellij.ui.dsl.builder.panel
+import com.jetbrains.python.newProject.NewPythonProjectStep
+import software.aws.toolkits.jetbrains.services.lambda.wizard.SdkSelector
+import javax.swing.JComponent
+import javax.swing.JLabel
+
+@Suppress("UnusedPrivateProperty")
+class PyCharmSdkSelectionPanel(private val projectLocation: TextFieldWithBrowseButton?) : SdkSelector {
+ private val sdkStep by lazy {
+ val graph = PropertyGraph()
+ NewPythonProjectStep(object : NewProjectWizardStep {
+ override val context = WizardContext(null, null)
+ override val propertyGraph: PropertyGraph = graph
+ override val keywords = NewProjectWizardStep.Keywords()
+ override val data = UserDataHolderBase().apply {
+ putUserData(
+ NewProjectWizardBaseData.KEY,
+ object : NewProjectWizardBaseData {
+ override val nameProperty = graph.property("")
+ override val pathProperty = graph.property(projectLocation?.text?.trim() ?: "")
+
+ override var name by nameProperty
+ override var path by pathProperty
+ }
+ )
+ }
+ })
+ }
+
+ private val sdkPanel by lazy {
+ panel {
+ sdkStep.setupUI(this)
+ }
+ }
+
+ override fun sdkSelectionPanel(): JComponent = sdkPanel
+
+ override fun sdkSelectionLabel(): JLabel? = null
+
+ override fun applySdkSettings(model: ModifiableRootModel) {
+ sdkStep.setupProject(model.project)
+ }
+
+ override fun validateSelection(): ValidationInfo? = sdkPanel.validateAll().firstOrNull()
+}
diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/explorer/webview/ToolkitLoginWebview.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/explorer/webview/ToolkitLoginWebview.kt
index eb093c11b24..481e84e7f9d 100644
--- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/explorer/webview/ToolkitLoginWebview.kt
+++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/explorer/webview/ToolkitLoginWebview.kt
@@ -16,9 +16,8 @@ import com.intellij.openapi.util.Disposer
import com.intellij.ui.JBColor
import com.intellij.ui.components.JBTextArea
import com.intellij.ui.components.panels.Wrapper
+import com.intellij.ui.dsl.builder.Align
import com.intellij.ui.dsl.builder.panel
-import com.intellij.ui.dsl.gridLayout.HorizontalAlign
-import com.intellij.ui.dsl.gridLayout.VerticalAlign
import com.intellij.ui.jcef.JBCefApp
import com.intellij.ui.jcef.JBCefBrowserBase
import com.intellij.ui.jcef.JBCefBrowserBuilder
@@ -73,8 +72,7 @@ class ToolkitWebviewPanel(val project: Project, private val scope: CoroutineScop
val component = panel {
row {
cell(webviewContainer)
- .horizontalAlign(HorizontalAlign.FILL)
- .verticalAlign(VerticalAlign.FILL)
+ .align(Align.FILL)
}.resizableRow()
if (isDeveloperMode()) {
@@ -88,8 +86,7 @@ class ToolkitWebviewPanel(val project: Project, private val scope: CoroutineScop
)
},
)
- .horizontalAlign(HorizontalAlign.CENTER)
- .verticalAlign(VerticalAlign.BOTTOM)
+ .align(Align.FILL)
}
}
}
@@ -241,7 +238,7 @@ class ToolkitWebviewBrowser(val project: Project, private val parentDisposable:
is BrowserMessage.SendUiClickTelemetry -> {
val signInOption = message.signInOptionClicked
if (signInOption.isNullOrEmpty()) {
- LOG.warn("Unknown sign in option")
+ LOG.warn { "Unknown sign in option" }
} else {
UiTelemetry.click(project, signInOption)
}
diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanel.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanel.kt
index 4433128c8b0..7d1c55e021f 100644
--- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanel.kt
+++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanel.kt
@@ -30,7 +30,7 @@ import com.intellij.ui.dsl.builder.Panel
import com.intellij.ui.dsl.builder.TopGap
import com.intellij.ui.dsl.builder.actionListener
import com.intellij.ui.dsl.builder.panel
-import com.intellij.ui.dsl.gridLayout.Gaps
+import com.intellij.ui.dsl.gridLayout.UnscaledGaps
import com.intellij.util.Alarm
import com.intellij.util.ui.JBFont
import com.intellij.util.ui.JBUI
@@ -1110,7 +1110,7 @@ class GettingStartedPanel(
// Image.SCALE_DEFAULT is the only valid parameter for gifs
.getScaledInstance(PANEL_WIDTH - (indentSize * 2), -1, if (path.endsWith("gif")) Image.SCALE_DEFAULT else Image.SCALE_SMOOTH)
cell(JLabel(ImageIcon(image)))
- .customize(Gaps.EMPTY)
+ .customize(UnscaledGaps.EMPTY)
}
}
}
diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/ToolWindowStartupActivity.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/ToolWindowStartupActivity.kt
index 8b9d2b0ab15..7852de51b5e 100644
--- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/ToolWindowStartupActivity.kt
+++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/ToolWindowStartupActivity.kt
@@ -3,6 +3,7 @@
package software.aws.toolkits.jetbrains.core.startup
+import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.ProjectActivity
import software.aws.toolkits.jetbrains.core.explorer.webview.ToolkitWebviewPanel
@@ -13,6 +14,8 @@ class ToolWindowStartupActivity : ProjectActivity {
private val runOnce = AtomicBoolean(false)
override suspend fun execute(project: Project) {
+ if (ApplicationManager.getApplication().isUnitTestMode) return
+
// initialize html contents in BGT so users don't have to wait when they open the tool window
ToolkitWebviewPanel.getInstance(project)
diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SamProjectGenerator.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SamProjectGenerator.kt
index ad06cce34f2..24a4c38567b 100644
--- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SamProjectGenerator.kt
+++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SamProjectGenerator.kt
@@ -106,7 +106,11 @@ class SamProjectGeneratorSettingsPeer(val generator: SamProjectGenerator, privat
/**
* This hook is used in PyCharm and is called via {@link SamProjectBuilder#modifySettingsStep} for IntelliJ
*/
- override fun validate(): ValidationInfo? = samInitSelectionPanel.validate()
+ override fun validate(): ValidationInfo? = if (!::samInitSelectionPanel.isInitialized) {
+ null
+ } else {
+ samInitSelectionPanel.validate()
+ }
override fun getSettings(): SamNewProjectSettings = samInitSelectionPanel.getNewProjectSettings()
diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SdkSelectionPanel.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SdkSelectionPanel.kt
index 01d3dafc6b7..d3645ed2f82 100644
--- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SdkSelectionPanel.kt
+++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SdkSelectionPanel.kt
@@ -6,7 +6,9 @@ package software.aws.toolkits.jetbrains.services.lambda.wizard
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.WriteAction
import com.intellij.openapi.progress.ProgressIndicator
+import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.projectRoots.Sdk
+import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil
import com.intellij.openapi.roots.ModifiableRootModel
import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.openapi.ui.TextFieldWithBrowseButton
@@ -29,12 +31,19 @@ interface SdkSelector {
fun sdkSelectionLabel(): JLabel?
fun applySdkSettings(model: ModifiableRootModel) {
- val sdk = getSdk() ?: return
+ var sdk = getSdk() ?: return
val project = model.project
val projectRootManager = ProjectRootManager.getInstance(project)
WriteAction.runAndWait(
ThrowableRunnable {
+ val existingSdk = ProjectJdkTable.getInstance().findJdk(sdk.name)
+ if (existingSdk != null) {
+ sdk = existingSdk
+ } else {
+ SdkConfigurationUtil.addSdk(sdk)
+ }
+
if (projectRootManager.projectSdk == null) {
projectRootManager.projectSdk = sdk
}
diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts
index 284c7711225..d6f382c2697 100644
--- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts
+++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts
@@ -116,6 +116,12 @@ listOf("compileClasspath", "runtimeClasspath").forEach { configuration ->
}
}
+configurations {
+ all {
+ exclude("com.jetbrains.intellij.spellchecker")
+ }
+}
+
val gatewayResources = configurations.create("gatewayResources") {
isCanBeResolved = false
}
diff --git a/plugins/toolkit/jetbrains-gateway/src/software/aws/toolkits/jetbrains/gateway/CawsConnectorViewPanels.kt b/plugins/toolkit/jetbrains-gateway/src/software/aws/toolkits/jetbrains/gateway/CawsConnectorViewPanels.kt
index 262cbd75c95..018bb4cb991 100644
--- a/plugins/toolkit/jetbrains-gateway/src/software/aws/toolkits/jetbrains/gateway/CawsConnectorViewPanels.kt
+++ b/plugins/toolkit/jetbrains-gateway/src/software/aws/toolkits/jetbrains/gateway/CawsConnectorViewPanels.kt
@@ -489,8 +489,9 @@ class EnvironmentDetailsPanel(private val context: CawsSettings, lifetime: Lifet
panel {
row(message("caws.workspace.details.backend_toolkit_location")) {
textFieldWithBrowseButton(
- message("caws.workspace.details.toolkit_location"),
- fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor()
+ fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor().withTitle(
+ message("caws.workspace.details.toolkit_location")
+ )
).bindText(context::toolkitLocation)
}
diff --git a/plugins/toolkit/jetbrains-rider/.gitignore b/plugins/toolkit/jetbrains-rider/.gitignore
index 8c379429cba..fe8836b8971 100644
--- a/plugins/toolkit/jetbrains-rider/.gitignore
+++ b/plugins/toolkit/jetbrains-rider/.gitignore
@@ -1,5 +1,6 @@
/NuGet.Config
/testData/NuGet.Config
+ReSharper.AWS.sln.DotSettings.user
# Generated files
*Generated.kt
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Daemon/Lambda/LambdaDaemonHost.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Daemon/Lambda/LambdaDaemonHost.cs
index 7454b52b800..07ca8a25d1c 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Daemon/Lambda/LambdaDaemonHost.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Daemon/Lambda/LambdaDaemonHost.cs
@@ -1,10 +1,15 @@
using AWS.Toolkit.Rider.Model;
+using JetBrains.Application.Parts;
using JetBrains.ProjectModel;
using JetBrains.ReSharper.Feature.Services.Protocol;
namespace AWS.Daemon.Lambda
{
+ #if (PROFILE_2023_3 || PROFILE_2024_1 || PROFILE_2024_2)
[SolutionComponent]
+ #else
+ [SolutionComponent(InstantiationEx.UnspecifiedDefault)]
+ #endif
public class LambdaDaemonHost
{
private readonly LambdaDaemonModel _model;
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Daemon/ZoneMarker.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Daemon/ZoneMarker.cs
index 5e67e12e71b..6f27f935010 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Daemon/ZoneMarker.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Daemon/ZoneMarker.cs
@@ -1,11 +1,12 @@
using JetBrains.Application.BuildScript.Application.Zones;
using JetBrains.ReSharper.Feature.Services;
using JetBrains.ReSharper.Psi.CSharp;
+using JetBrains.Rider.Model;
namespace AWS.Daemon
{
[ZoneMarker]
- public class ZoneMarker : IRequire, IRequire
+ public class ZoneMarker : IRequire, IRequire, IRequire
{
}
}
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Localization/JavaPropertiesLoader.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Localization/JavaPropertiesLoader.cs
index e81c13183be..34b6531c200 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Localization/JavaPropertiesLoader.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Localization/JavaPropertiesLoader.cs
@@ -2,6 +2,7 @@
using System.IO;
using System.Linq;
using System.Reflection;
+using JetBrains.Application.Parts;
using JetBrains.ProjectModel;
using JetBrains.Util;
@@ -13,7 +14,11 @@ namespace AWS.Localization
/// We would like to use same localized strings to share values between IDEA and R#.
/// Note: the original .properties file is added to AWS.Localization project as a static resource.
///
+ #if (PROFILE_2023_3 || PROFILE_2024_1 || PROFILE_2024_2)
[SolutionComponent]
+ #else
+ [SolutionComponent(InstantiationEx.UnspecifiedDefault)]
+ #endif
public class JavaPropertiesLoader
{
private readonly IDictionary myLocalizedStrings = new Dictionary();
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Project/AwsProjectHost.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Project/AwsProjectHost.cs
index b9c579c41f1..6cb5520e57c 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Project/AwsProjectHost.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Project/AwsProjectHost.cs
@@ -1,4 +1,5 @@
using AWS.Toolkit.Rider.Model;
+using JetBrains.Application.Parts;
using JetBrains.ProjectModel;
using JetBrains.Rd.Tasks;
using JetBrains.ReSharper.Feature.Services.Protocol;
@@ -7,7 +8,11 @@
namespace AWS.Project
{
+ #if (PROFILE_2023_3 || PROFILE_2024_1 || PROFILE_2024_2)
[SolutionComponent]
+ #else
+ [SolutionComponent(InstantiationEx.UnspecifiedDefault)]
+ #endif
public class AwsProjectHost
{
public AwsProjectHost(ISolution solution)
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Project/ZoneMarker.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Project/ZoneMarker.cs
index 6fc8144ddc4..237fb1c7a80 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Project/ZoneMarker.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Project/ZoneMarker.cs
@@ -1,11 +1,11 @@
using JetBrains.Application.BuildScript.Application.Zones;
-using JetBrains.ProjectModel;
using JetBrains.ReSharper.Psi.CSharp;
+using JetBrains.Rider.Model;
namespace AWS.Project
{
[ZoneMarker]
- public class ZoneMarker : IRequire, IRequire
+ public class ZoneMarker : IRequire, IRequire
{
}
}
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Lambda/LambdaFinder.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Lambda/LambdaFinder.cs
index dc1d9757361..ee168ec55e5 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Lambda/LambdaFinder.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Lambda/LambdaFinder.cs
@@ -55,11 +55,11 @@ public static bool IsLambdaProjectType([CanBeNull] IProject project)
/// a) Parameter of type can be used without Serializer. Any class derived from Stream is a match.
/// b) Check for Amazon Event type (set of pre-defined Amazon types used in Amazon Lambda functions)
/// and for default Amazon serializer.
- /// c) Check for any Custom Data type that could be serialized using serializer.
+ /// c) Check for any Custom Data type that could be serialized using serializer.
/// 4. Check for method return type:
/// a) If method is async - return type should be or are allowed.
/// b) If method is sync - return type could be ,
- /// or Amazon Event type or Custom Data type with defined serializer.
+ /// or Amazon Event type or Custom Data type with defined serializer.
///
/// Method to check if it matches Amazon Lambda definition.
/// The value if a method matches Amazon Lambda definition.
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Lambda/LambdaPsiHost.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Lambda/LambdaPsiHost.cs
index ce955e9c788..d625524f998 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Lambda/LambdaPsiHost.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Lambda/LambdaPsiHost.cs
@@ -2,6 +2,7 @@
using System.Linq;
using AWS.Toolkit.Rider.Model;
using JetBrains.Application;
+using JetBrains.Application.Parts;
using JetBrains.Application.Progress;
using JetBrains.Application.Threading;
using JetBrains.Diagnostics;
@@ -19,7 +20,11 @@
namespace AWS.Psi.Lambda
{
+ #if (PROFILE_2023_3 || PROFILE_2024_1 || PROFILE_2024_2)
[SolutionComponent]
+ #else
+ [SolutionComponent(InstantiationEx.UnspecifiedDefault)]
+ #endif
public class LambdaPsiHost
{
private readonly ISymbolCache _symbolCache;
@@ -66,7 +71,7 @@ private bool IsHandlerExists(Lifetime lifetime, int projectId, string className,
var indicator = NullProgressIndicator.CreateCancellable(lifetime);
using (TryReadLockCookie.Create(indicator, _locks,
- () => !lifetime.IsAlive || _locks.ContentModelLocks.IsWriteLockRequested))
+ () => !lifetime.IsAlive || _locks.ContentModelLocks.IsWriteAccessAllowed))
{
var project = _projectModelViewHost.GetItemById(projectId);
Assertion.AssertNotNull(project, "project instance should not be null");
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Protocol/ModelZoneMarket.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Protocol/ModelZoneMarket.cs
new file mode 100644
index 00000000000..6c3a4493fb9
--- /dev/null
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/Protocol/ModelZoneMarket.cs
@@ -0,0 +1,16 @@
+using JetBrains.Application.BuildScript.Application.Zones;
+using JetBrains.Rider.Model;
+
+// https://github.com/JetBrains/resharper-unity/blob/cfd107d555a0a13a4b37273340bf930621d0a3dd/resharper/resharper-unity/src/Unity.Rider/ModelZoneMarker.cs
+
+// ReSharper disable once CheckNamespace
+namespace AWS.Toolkit.Rider.Model
+{
+ // Zone marker for the generated models. Required to keep zone inspections happy because the generated code uses a
+ // type from a namespace that requires IRiderModelZone. In practice, this doesn't cause issues
+ // TODO: Look at moving the models to a better location or namespace?
+ [ZoneMarker]
+ public class ZoneMarker : IRequire
+ {
+ }
+}
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/ZoneMarker.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/ZoneMarker.cs
index cff541a9eac..b7cdbf5bc3d 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/ZoneMarker.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Psi/ZoneMarker.cs
@@ -1,11 +1,16 @@
using JetBrains.Application.BuildScript.Application.Zones;
+using JetBrains.RdBackend.Common.Env;
using JetBrains.ReSharper.Psi.CSharp;
-using JetBrains.ReSharper.Resources.Shell;
+using JetBrains.Rider.Backend.Env;
namespace AWS.Psi
{
[ZoneMarker]
- public class ZoneMarker : IRequire, IRequire
+ public class ZoneMarker : IRequire, IRequire
+ #if (PROFILE_2023_3 || PROFILE_2024_1 || PROFILE_2024_2)
+ #else
+ , IRequire
+ #endif
{
}
}
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Settings/AwsSettingsHost.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Settings/AwsSettingsHost.cs
index 6f764454101..984e30c9ac0 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Settings/AwsSettingsHost.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Settings/AwsSettingsHost.cs
@@ -1,6 +1,7 @@
using AWS.Daemon.Settings;
using AWS.Toolkit.Rider.Model;
using JetBrains.Annotations;
+using JetBrains.Application.Parts;
using JetBrains.Application.Settings;
using JetBrains.Lifetimes;
using JetBrains.ProjectModel;
@@ -10,7 +11,11 @@
namespace AWS.Settings
{
+ #if (PROFILE_2023_3 || PROFILE_2024_1 || PROFILE_2024_2)
[SolutionComponent]
+ #else
+ [SolutionComponent(InstantiationEx.UnspecifiedDefault)]
+ #endif
public class AwsSettingsHost
{
public AwsSettingsHost(Lifetime lifetime, [NotNull] ISolution solution, [NotNull] ISettingsStore settingsStore)
diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Settings/ZoneMarker.cs b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Settings/ZoneMarker.cs
index 34792a9f7f8..e7d0039d552 100644
--- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Settings/ZoneMarker.cs
+++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Settings/ZoneMarker.cs
@@ -1,10 +1,11 @@
using JetBrains.Application.BuildScript.Application.Zones;
+using JetBrains.ReSharper.Feature.Services.Daemon;
using JetBrains.ReSharper.Psi.CSharp;
namespace AWS.Settings
{
[ZoneMarker]
- public class ZoneMarker : IRequire
+ public class ZoneMarker : IRequire, IRequire
{
}
}
diff --git a/plugins/toolkit/jetbrains-rider/build.gradle.kts b/plugins/toolkit/jetbrains-rider/build.gradle.kts
index 6381e62bec0..4a43c1a548f 100644
--- a/plugins/toolkit/jetbrains-rider/build.gradle.kts
+++ b/plugins/toolkit/jetbrains-rider/build.gradle.kts
@@ -52,6 +52,14 @@ dependencies {
intellijPlatform {
localPlugin(project(":plugin-core"))
testFramework(TestFrameworkType.Bundled)
+
+ // https://github.com/JetBrains/intellij-platform-gradle-plugin/issues/1774
+ when (providers.gradleProperty("ideProfileName").get()) {
+ "2023.3", "2024.1" -> {}
+ else -> {
+ bundledModule("intellij.rider")
+ }
+ }
}
implementation(project(":plugin-toolkit:jetbrains-core"))
diff --git a/plugins/toolkit/jetbrains-rider/it/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotnetLocalLambdaRunConfigurationIntegrationTest.kt b/plugins/toolkit/jetbrains-rider/it/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotnetLocalLambdaRunConfigurationIntegrationTest.kt
index 5b757e8dea2..0d71b55987f 100644
--- a/plugins/toolkit/jetbrains-rider/it/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotnetLocalLambdaRunConfigurationIntegrationTest.kt
+++ b/plugins/toolkit/jetbrains-rider/it/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotnetLocalLambdaRunConfigurationIntegrationTest.kt
@@ -56,7 +56,7 @@ abstract class DotnetLocalLambdaRunConfigurationIntegrationTestBase(private val
PropertiesComponent.getInstance().setValue("debugger.immediate.window.in.watches", initialImmediateWindow)
}
- override fun getSolutionDirectoryName(): String = "testData/solutions/$solutionName"
+ override fun solutionDirectoryName(): String = "testData/solutions/$solutionName"
// broken
@Test(enabled = false)
@@ -106,7 +106,7 @@ abstract class DotnetLocalLambdaRunConfigurationIntegrationTestBase(private val
@Test
fun samIsExecutedWithFileInput() {
- val input = Files.createTempFile(tempTestDirectory.toPath(), "tmp", null).also {
+ val input = Files.createTempFile("tmp", null).also {
it.writeText("Hello World")
}
@@ -152,7 +152,7 @@ abstract class DotnetLocalLambdaImageRunConfigurationIntegrationTestBase(private
removeAllBreakpoints(project)
}
- override fun getSolutionDirectoryName(): String = "testData/solutions/$solutionName"
+ override fun solutionDirectoryName(): String = "testData/solutions/$solutionName"
@Test
fun samIsExecutedImage() {
diff --git a/plugins/toolkit/jetbrains-rider/tst-233-242/base/BaseTestWithMarkup.kt b/plugins/toolkit/jetbrains-rider/tst-233-242/base/BaseTestWithMarkup.kt
new file mode 100644
index 00000000000..6db6cf3582e
--- /dev/null
+++ b/plugins/toolkit/jetbrains-rider/tst-233-242/base/BaseTestWithMarkup.kt
@@ -0,0 +1,10 @@
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package base
+
+abstract class BaseTestWithMarkup : com.jetbrains.rider.test.base.BaseTestWithMarkup() {
+ abstract fun solutionDirectoryName(): String
+
+ override fun getSolutionDirectoryName() = solutionDirectoryName()
+}
diff --git a/plugins/toolkit/jetbrains-rider/tst-233-242/base/BaseTestWithSolution.kt b/plugins/toolkit/jetbrains-rider/tst-233-242/base/BaseTestWithSolution.kt
new file mode 100644
index 00000000000..0c8d7c88541
--- /dev/null
+++ b/plugins/toolkit/jetbrains-rider/tst-233-242/base/BaseTestWithSolution.kt
@@ -0,0 +1,10 @@
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package base
+
+abstract class BaseTestWithSolution : com.jetbrains.rider.test.base.BaseTestWithSolution() {
+ abstract fun solutionDirectoryName(): String
+
+ override fun getSolutionDirectoryName() = solutionDirectoryName()
+}
diff --git a/plugins/toolkit/jetbrains-rider/tst-243+/base/BaseTestWithMarkup.kt b/plugins/toolkit/jetbrains-rider/tst-243+/base/BaseTestWithMarkup.kt
new file mode 100644
index 00000000000..85d0001c273
--- /dev/null
+++ b/plugins/toolkit/jetbrains-rider/tst-243+/base/BaseTestWithMarkup.kt
@@ -0,0 +1,11 @@
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package base
+
+abstract class BaseTestWithMarkup : com.jetbrains.rider.test.base.BaseTestWithMarkup() {
+ abstract fun solutionDirectoryName(): String
+
+ override val testSolution: String
+ get() = solutionDirectoryName()
+}
diff --git a/plugins/toolkit/jetbrains-rider/tst-243+/base/BaseTestWithSolution.kt b/plugins/toolkit/jetbrains-rider/tst-243+/base/BaseTestWithSolution.kt
new file mode 100644
index 00000000000..aaf07d18787
--- /dev/null
+++ b/plugins/toolkit/jetbrains-rider/tst-243+/base/BaseTestWithSolution.kt
@@ -0,0 +1,11 @@
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package base
+
+abstract class BaseTestWithSolution : com.jetbrains.rider.test.base.BaseTestWithSolution() {
+ abstract fun solutionDirectoryName(): String
+
+ override val testSolution: String
+ get() = solutionDirectoryName()
+}
diff --git a/plugins/toolkit/jetbrains-rider/tst/base/AwsReuseSolutionTestBase.kt b/plugins/toolkit/jetbrains-rider/tst/base/AwsReuseSolutionTestBase.kt
index 1beba47fb91..6b07f8856c7 100644
--- a/plugins/toolkit/jetbrains-rider/tst/base/AwsReuseSolutionTestBase.kt
+++ b/plugins/toolkit/jetbrains-rider/tst/base/AwsReuseSolutionTestBase.kt
@@ -3,60 +3,17 @@
package base
-import com.intellij.ide.GeneralSettings
-import com.intellij.openapi.project.Project
import com.jetbrains.rider.projectView.solutionDirectory
-import com.jetbrains.rider.test.base.BaseTestWithSolutionBase
import com.jetbrains.rider.test.debugger.XDebuggerTestHelper
import com.jetbrains.rider.test.scriptingApi.getVirtualFileFromPath
-import com.jetbrains.rider.test.scriptingApi.useCachedTemplates
-import org.testng.annotations.AfterClass
-import org.testng.annotations.BeforeClass
-import software.aws.toolkits.jetbrains.utils.OpenSolutionFileParams
-import software.aws.toolkits.jetbrains.utils.openSolutionFile
-import java.io.File
-import java.time.Duration
/**
* Base test class that uses the same solution per test class.
* Solution re-open logic takes time. We can avoid this by using the same solution instance per every test in a class
*/
-abstract class AwsReuseSolutionTestBase : BaseTestWithSolutionBase() {
-
- private var myProject: Project? = null
- var project: Project
- get() = this.myProject!!
- set(value) {
- this.myProject = value
- }
-
- protected open val waitForCaches: Boolean get() = false
- protected open val persistCaches: Boolean get() = false
- protected open val restoreNuGetPackages: Boolean get() = false
-
- protected abstract fun getSolutionDirectoryName(): String
-
- protected open fun getCustomSolutionFileName(): String? = null
- protected open fun preprocessTempDirectory(tempDir: File) {}
-
- // TODO: Remove when https://youtrack.jetbrains.com/issue/RIDER-47995 is fixed FIX_WHEN_MIN_IS_213
- @BeforeClass
- fun allowDotnetRoots() {
- allowCustomDotnetRoots()
- }
-
- @BeforeClass(alwaysRun = true)
- fun setUpClassSolution() {
- openSolution(getSolutionDirectoryName())
- }
-
- @AfterClass(alwaysRun = true)
- fun closeSolution() {
- try {
- closeSolutionAndResetSettings(myProject)
- } finally {
- myProject = null
- }
- }
+abstract class AwsReuseSolutionTestBase : BaseTestWithSolution() {
+ override val waitForCaches: Boolean get() = false
+ override val persistCaches: Boolean get() = false
+ override val restoreNuGetPackages: Boolean get() = false
// 15 is a magic number (it's the return statement since they are all the same), but the only
// example of it used that I could find it is used that way:
@@ -67,21 +24,5 @@ abstract class AwsReuseSolutionTestBase : BaseTestWithSolutionBase() {
XDebuggerTestHelper.toggleBreakpoint(project, getVirtualFileFromPath("src/HelloWorld/Function.cs", project.solutionDirectory), line - 1)
}
- private fun openSolution(solutionDirName: String) {
- GeneralSettings.getInstance().isConfirmExit = false
-
- val params = OpenSolutionFileParams()
- params.backendLoadedTimeout = backendStartTimeout
- params.customSolutionName = getCustomSolutionFileName()
- params.preprocessTempDirectory = { preprocessTempDirectory(it) }
- params.persistCaches = persistCaches
- params.waitForCaches = waitForCaches
- params.restoreNuGetPackages = restoreNuGetPackages
-
- useCachedTemplates = false
-
- myProject = openSolution(openSolutionFile(solutionDirName), params)
- }
-
- override val backendShellLoadTimeout: Duration = backendStartTimeout
+ override val backendLoadedTimeout = backendStartTimeout
}
diff --git a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/completion/DotNetHandlerCompletionProviderTest.kt b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/completion/DotNetHandlerCompletionProviderTest.kt
index 3d27754a3d3..5a22634f03d 100644
--- a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/completion/DotNetHandlerCompletionProviderTest.kt
+++ b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/completion/DotNetHandlerCompletionProviderTest.kt
@@ -13,7 +13,7 @@ import software.aws.toolkits.jetbrains.utils.OPEN_SOLUTION_DIR_NAME
class DotNetHandlerCompletionProviderTest : AwsReuseSolutionTestBase() {
- override fun getSolutionDirectoryName(): String = OPEN_SOLUTION_DIR_NAME
+ override fun solutionDirectoryName(): String = OPEN_SOLUTION_DIR_NAME
override val waitForCaches = true
diff --git a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/completion/DotNetHandlerCompletionTest.kt b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/completion/DotNetHandlerCompletionTest.kt
index b2b3e17c0f6..5aa4eabe51e 100644
--- a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/completion/DotNetHandlerCompletionTest.kt
+++ b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/completion/DotNetHandlerCompletionTest.kt
@@ -3,23 +3,22 @@
package software.aws.toolkits.jetbrains.services.lambda.completion
+import base.BaseTestWithSolution
import base.allowCustomDotnetRoots
import base.backendStartTimeout
import com.intellij.ui.icons.CachedImageIcon
import com.jetbrains.rd.ide.model.IconModel
import com.jetbrains.rd.ui.icons.toIdeaIcon
import com.jetbrains.rider.test.annotations.TestEnvironment
-import com.jetbrains.rider.test.base.BaseTestWithSolution
import org.assertj.core.api.Assertions.assertThat
import org.testng.annotations.BeforeSuite
import org.testng.annotations.Test
import java.time.Duration
class DotNetHandlerCompletionTest : BaseTestWithSolution() {
- override val backendLoadedTimeout: Duration = backendStartTimeout
- override val backendShellLoadTimeout: Duration = backendStartTimeout
+ override fun solutionDirectoryName() = "testData/solutions"
- override fun getSolutionDirectoryName(): String = ""
+ override val backendLoadedTimeout: Duration = backendStartTimeout
override val waitForCaches = true
diff --git a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetLambdaBuilderTest.kt b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetLambdaBuilderTest.kt
index a10f65829c0..c71e4340484 100644
--- a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetLambdaBuilderTest.kt
+++ b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetLambdaBuilderTest.kt
@@ -13,7 +13,7 @@ import software.aws.toolkits.jetbrains.services.lambda.sam.SamCommon
import software.aws.toolkits.jetbrains.utils.OPEN_SOLUTION_DIR_NAME
class DotNetLambdaBuilderTest : AwsReuseSolutionTestBase() {
- override fun getSolutionDirectoryName(): String = OPEN_SOLUTION_DIR_NAME
+ override fun solutionDirectoryName(): String = OPEN_SOLUTION_DIR_NAME
private val sut = DotNetLambdaBuilder()
diff --git a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetLambdaHandlerResolverTest.kt b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetLambdaHandlerResolverTest.kt
index 827888a53eb..27a35f2a54f 100644
--- a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetLambdaHandlerResolverTest.kt
+++ b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetLambdaHandlerResolverTest.kt
@@ -17,7 +17,7 @@ import software.aws.toolkits.jetbrains.utils.OPEN_SOLUTION_DIR_NAME
*/
class DotNetLambdaHandlerResolverTest : AwsReuseSolutionTestBase() {
- override fun getSolutionDirectoryName(): String = OPEN_SOLUTION_DIR_NAME
+ override fun solutionDirectoryName(): String = OPEN_SOLUTION_DIR_NAME
@Test
fun testHandler_SingleValidHandler() {
diff --git a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/LambdaGutterMarkHighlightingTest.kt b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/LambdaGutterMarkHighlightingTest.kt
index 21980fd6234..b7f0e92a994 100644
--- a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/LambdaGutterMarkHighlightingTest.kt
+++ b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/dotnet/LambdaGutterMarkHighlightingTest.kt
@@ -3,10 +3,10 @@
package software.aws.toolkits.jetbrains.services.lambda.dotnet
+import base.BaseTestWithMarkup
import base.backendStartTimeout
import com.jetbrains.rdclient.testFramework.waitForDaemon
import com.jetbrains.rider.projectView.solution
-import com.jetbrains.rider.test.base.BaseTestWithMarkup
import org.testng.annotations.DataProvider
import org.testng.annotations.Test
import software.aws.toolkits.jetbrains.protocol.awsSettingModel
@@ -19,9 +19,8 @@ class LambdaGutterMarkHighlightingTest : BaseTestWithMarkup() {
}
override val backendLoadedTimeout: Duration = backendStartTimeout
- override val backendShellLoadTimeout: Duration = backendStartTimeout
- override fun getSolutionDirectoryName(): String = "SamHelloWorldApp"
+ override fun solutionDirectoryName() = "SamHelloWorldApp"
@Test
fun testClass_FunctionClass_Detected() = verifyLambdaGutterMark()
diff --git a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/execution/local/DotNetLocalLambdaRunConfigurationTest.kt b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/execution/local/DotNetLocalLambdaRunConfigurationTest.kt
index e057a283684..b3333e16cca 100644
--- a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/execution/local/DotNetLocalLambdaRunConfigurationTest.kt
+++ b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/services/lambda/execution/local/DotNetLocalLambdaRunConfigurationTest.kt
@@ -23,7 +23,7 @@ import software.aws.toolkits.jetbrains.utils.OPEN_SOLUTION_DIR_NAME
import software.aws.toolkits.resources.message
class DotNetLocalLambdaRunConfigurationTest : AwsReuseSolutionTestBase() {
- override fun getSolutionDirectoryName(): String = OPEN_SOLUTION_DIR_NAME
+ override fun solutionDirectoryName(): String = OPEN_SOLUTION_DIR_NAME
override val waitForCaches = true
diff --git a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/utils/OpenSolutionFileParams.kt b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/utils/OpenSolutionFileParams.kt
index 1f72a7f5636..5bf16d4276f 100644
--- a/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/utils/OpenSolutionFileParams.kt
+++ b/plugins/toolkit/jetbrains-rider/tst/software/aws/toolkits/jetbrains/utils/OpenSolutionFileParams.kt
@@ -16,4 +16,4 @@ fun openSolutionFile(solutionDirName: String): File {
return File("$solutionDirName/$solutionFileName")
}
-const val OPEN_SOLUTION_DIR_NAME: String = "testData/solutions/SamHelloWorldApp"
+const val OPEN_SOLUTION_DIR_NAME: String = "SamHelloWorldApp"
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 6d90bba3ac9..21396263a70 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -29,7 +29,7 @@ val codeArtifactMavenRepo = fun RepositoryHandler.(): MavenArtifactRepository? {
plugins {
id("com.github.burrunan.s3-build-cache") version "1.5"
id("com.gradle.develocity") version "3.17.6"
- id("org.jetbrains.intellij.platform.settings") version "2.0.0"
+ id("org.jetbrains.intellij.platform.settings") version "2.1.0"
}
dependencyResolutionManagement {