Skip to content

Commit 59cdbe5

Browse files
authored
Fix regression in 2020.3.2 with SecretsManager Auth (#2417)
1 parent 58c4157 commit 59cdbe5

File tree

4 files changed

+14
-15
lines changed

4 files changed

+14
-15
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Fix Secrets Manager-based databse auth throwing NullPointer when editing settings in 2020.3.2 (Fixes #2403)"
4+
}

jetbrains-ultimate/src/software/aws/toolkits/jetbrains/datagrip/actions/AddSecretsManagerConnection.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ fun DataSourceRegistry.createDatasource(project: Project, secret: SecretsManager
8787
.withJdbcAdditionalProperty(CREDENTIAL_ID_PROPERTY, connectionSettings?.credentials?.id)
8888
.withJdbcAdditionalProperty(REGION_ID_PROPERTY, connectionSettings?.region?.id)
8989
.withJdbcAdditionalProperty(SECRET_ID_PROPERTY, secretArn)
90-
.withUrl(secret.host)
9190
.withUser(secret.username)
9291
.withUrl("jdbc:$jdbcAdapter://${secret.host}:${secret.port}")
9392
.commit()

jetbrains-ultimate/src/software/aws/toolkits/jetbrains/datagrip/auth/SecretsManagerAuthWidget.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import javax.swing.JPanel
2020
const val SECRET_ID_PROPERTY = "AWS.SecretId"
2121
const val GET_URL_FROM_SECRET = "AWS.getUrlFromSecret"
2222

23-
class SecretsManagerAuthWidget : AwsAuthWidget(userField = false) {
23+
class SecretsManagerAuthWidget : AwsAuthWidget(userFieldEnabled = false) {
2424
private val secretIdSelector = JBTextField()
2525
private val urlFromSecret = JBCheckBox(message("datagrip.secret_host"))
2626

jetbrains-ultimate/src/software/aws/toolkits/jetbrains/ui/AwsAuthWidget.kt

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import software.aws.toolkits.resources.message
2222
import javax.swing.JPanel
2323
import javax.swing.event.DocumentListener
2424

25-
abstract class AwsAuthWidget(private val userField: Boolean = true) : DatabaseCredentialsAuthProvider.UserWidget() {
25+
abstract class AwsAuthWidget(private val userFieldEnabled: Boolean = true) : DatabaseCredentialsAuthProvider.UserWidget() {
2626
private val credentialSelector = CredentialProviderSelector()
2727
private val regionSelector = RegionSelector()
2828

@@ -37,9 +37,11 @@ abstract class AwsAuthWidget(private val userField: Boolean = true) : DatabaseCr
3737

3838
override fun createPanel(): JPanel {
3939
val panel = JPanel(GridLayoutManager(rowCount, columnCount))
40-
if (userField) {
41-
addUserField(panel, 0)
42-
}
40+
addUserField(panel, 0)
41+
42+
// Disable the user field if we treat it as immutable
43+
myUserField.isEnabled = userFieldEnabled
44+
4345
val credsLabel = JBLabel(message("aws_connection.credentials.label"))
4446
val regionLabel = JBLabel(message("aws_connection.region.label"))
4547
panel.add(credsLabel, UrlPropertiesPanel.createLabelConstraints(1, 0, credsLabel.preferredSize.getWidth()))
@@ -51,10 +53,7 @@ abstract class AwsAuthWidget(private val userField: Boolean = true) : DatabaseCr
5153
}
5254

5355
override fun save(dataSource: LocalDataSource, copyCredentials: Boolean) {
54-
// Tries to set username so if we don't have one, don't set
55-
if (userField) {
56-
super.save(dataSource, copyCredentials)
57-
}
56+
super.save(dataSource, copyCredentials)
5857

5958
DataSourceUiUtil.putOrRemove(
6059
dataSource.additionalJdbcProperties,
@@ -69,10 +68,7 @@ abstract class AwsAuthWidget(private val userField: Boolean = true) : DatabaseCr
6968
}
7069

7170
override fun reset(dataSource: LocalDataSource, resetCredentials: Boolean) {
72-
// Tries to set username so if we don't have one, don't set
73-
if (userField) {
74-
super.reset(dataSource, resetCredentials)
75-
}
71+
super.reset(dataSource, resetCredentials)
7672

7773
val regionProvider = AwsRegionProvider.getInstance()
7874
val allRegions = regionProvider.allRegions()
@@ -102,7 +98,7 @@ abstract class AwsAuthWidget(private val userField: Boolean = true) : DatabaseCr
10298
override fun isPasswordChanged(): Boolean = false
10399
override fun onChanged(r: DocumentListener) {
104100
// Tries to set username so if we don't have one, don't set
105-
if (userField) {
101+
if (userFieldEnabled) {
106102
super.onChanged(r)
107103
}
108104
}

0 commit comments

Comments
 (0)