diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/config/SettingsChangedNotifier.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/config/SettingsChangedNotifier.kt index 8bfe23a..15412c3 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/config/SettingsChangedNotifier.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/config/SettingsChangedNotifier.kt @@ -2,10 +2,11 @@ package com.github.bobi.aemgroovyconsoleplugin.config import com.intellij.util.messages.Topic -interface SettingsChangedNotifier { +fun interface SettingsChangedNotifier { companion object { - val TOPIC: Topic = Topic.create("AEM Servers configuration changed", SettingsChangedNotifier::class.java) + val TOPIC: Topic = + Topic.create("AEM Servers configuration changed", SettingsChangedNotifier::class.java) } fun settingsChanged() -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/config/ui/AemServerEditDialog.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/config/ui/AemServerEditDialog.kt index 1a71b3e..bd13cff 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/config/ui/AemServerEditDialog.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/config/ui/AemServerEditDialog.kt @@ -33,6 +33,8 @@ import javax.swing.* private const val TOKEN_DESCRIPTION = "Paste JSON from Adobe AEM Developer Console" +private const val INVALID_JSON_MESSAGE = "Invalid json" + /** * User: Andrey Bardashevsky * Date/Time: 29.07.2022 15:45 @@ -72,6 +74,7 @@ class AemServerEditDialog(private val project: Project, private val tableItem: A init() } + @Suppress("kotlin:S3776") override fun createCenterPanel(): JComponent = panel { row("Server Name: ") { textField() @@ -305,10 +308,10 @@ class AemServerEditDialog(private val project: Project, private val tableItem: A val (ok, statusCode, accessToken) = gson.fromJson(value, AemDevToken::class.java) if (!ok || statusCode != 200 || accessToken.isBlank()) { - return error("Invalid json") + return error(INVALID_JSON_MESSAGE) } } catch (e: Throwable) { - return error("Invalid json") + return error(INVALID_JSON_MESSAGE) } } @@ -336,10 +339,10 @@ class AemServerEditDialog(private val project: Project, private val tableItem: A || integration.privateKey.isBlank() || integration.publicKey.isBlank() ) { - return error("Invalid json") + return error(INVALID_JSON_MESSAGE) } } catch (e: Throwable) { - return error("Invalid json") + return error(INVALID_JSON_MESSAGE) } } diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/dsl/holders/GenericMethodHolder.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/dsl/holders/GenericMethodHolder.kt index 9309ede..48fe1c9 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/dsl/holders/GenericMethodHolder.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/dsl/holders/GenericMethodHolder.kt @@ -87,18 +87,15 @@ class GenericMethodHolder(descriptor: GenericMethodDescriptor, psiFile: PsiFile) place: PsiElement, genericTypes: Map ): PsiClassType { - return if (genericTypes.contains(typeDescriptor.fqn)) { - genericTypes[typeDescriptor.fqn]!! - } else { - if (typeDescriptor.genericType != null) { + return genericTypes[typeDescriptor.fqn] + ?: if (typeDescriptor.genericType != null) { TypesUtil.createGenericType(typeDescriptor.fqn, place, genericTypes[typeDescriptor.genericType]) } else { TypesUtil.createType(typeDescriptor.fqn, place) } - } } companion object { private val ORIGIN_INFO = "via ${this::class.java.name}" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/editor/AemConsoleEditorDecorator.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/editor/AemConsoleEditorDecorator.kt index 2d6ec66..4b921cc 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/editor/AemConsoleEditorDecorator.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/editor/AemConsoleEditorDecorator.kt @@ -20,11 +20,10 @@ class AemConsoleEditorDecorator(project: Project) : EditorNotificationProvider { init { val notifications = project.getService(EditorNotifications::class.java) - project.messageBus.connect().subscribe(SettingsChangedNotifier.TOPIC, object : SettingsChangedNotifier { - override fun settingsChanged() { - notifications.updateAllNotifications() - } - }) + project.messageBus.connect().subscribe( + SettingsChangedNotifier.TOPIC, + SettingsChangedNotifier { notifications.updateAllNotifications() } + ) } override fun collectNotificationData( @@ -44,4 +43,4 @@ class AemConsoleEditorDecorator(project: Project) : EditorNotificationProvider { return Function { AemConsoleEditorToolbar(project, it) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/execution/AemGroovyConsoleScriptExecutor.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/execution/AemGroovyConsoleScriptExecutor.kt index a4704eb..8b86fcf 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/execution/AemGroovyConsoleScriptExecutor.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/execution/AemGroovyConsoleScriptExecutor.kt @@ -196,6 +196,7 @@ class AemGroovyConsoleScriptExecutor(private val project: Project) { } } + @Suppress("kotlin:S3776") override fun actionPerformed(e: AnActionEvent) { val project = e.project val component = e.getData(PlatformDataKeys.CONTEXT_COMPONENT) diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/PasswordsService.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/PasswordsService.kt index 79d676f..6735c5b 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/PasswordsService.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/PasswordsService.kt @@ -17,25 +17,25 @@ object PasswordsService { fun removeCredentials(id: Long) { val passwordSafe = PasswordSafe.instance - passwordSafe.set(credentialAttributes(id), null) - passwordSafe.set(credentialAttributes(id, AEM_ACCESS_TOKEN_SUFFIX), null) + passwordSafe[credentialAttributes(id)] = null + passwordSafe[credentialAttributes(id, AEM_ACCESS_TOKEN_SUFFIX)] = null } fun setCredentials(id: Long, user: String, password: String) { val passwordSafe = PasswordSafe.instance - passwordSafe.set(credentialAttributes(id), Credentials(user, password)) - passwordSafe.set(credentialAttributes(id, AEM_ACCESS_TOKEN_SUFFIX), null) + passwordSafe[credentialAttributes(id)] = Credentials(user, password) + passwordSafe[credentialAttributes(id, AEM_ACCESS_TOKEN_SUFFIX)] = null } - fun getCredentials(id: Long): Credentials? = PasswordSafe.instance.get(credentialAttributes(id)) + fun getCredentials(id: Long): Credentials? = PasswordSafe.instance[credentialAttributes(id)] fun setAccessToken(id: Long, token: String) { - PasswordSafe.instance.set(credentialAttributes(id, AEM_ACCESS_TOKEN_SUFFIX), Credentials("token", token)) + PasswordSafe.instance[credentialAttributes(id, AEM_ACCESS_TOKEN_SUFFIX)] = Credentials("token", token) } fun getAccessToken(id: Long): String? = - PasswordSafe.instance.get(credentialAttributes(id, AEM_ACCESS_TOKEN_SUFFIX))?.getPasswordAsString() + PasswordSafe.instance[credentialAttributes(id, AEM_ACCESS_TOKEN_SUFFIX)]?.getPasswordAsString() private fun credentialAttributes(id: Long, suffix: String = "") = CredentialAttributes( generateServiceName(AEM_GROOVY_CONSOLE, id.toString() + suffix), diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/http/AdobeIMSTokenProvider.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/http/AdobeIMSTokenProvider.kt index e574edf..7032bab 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/http/AdobeIMSTokenProvider.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/http/AdobeIMSTokenProvider.kt @@ -58,14 +58,14 @@ class AdobeIMSTokenProvider : Disposable { private fun getImsToken(config: AemServerHttpConfig): String { if (config.id == null) { - return fetchAccessToken(config).access_token + return fetchAccessToken(config).accessToken } else { try { val token = PasswordsService.getAccessToken(config.id) if (token !== null) { val accessToken = verifyAccessToken(token) - return accessToken.access_token + return accessToken.accessToken } else { throw Exception("Token not found") } @@ -74,7 +74,7 @@ class AdobeIMSTokenProvider : Disposable { PasswordsService.setAccessToken(config.id, gson.toJson(accessToken)) - return accessToken.access_token + return accessToken.accessToken } } } @@ -82,13 +82,13 @@ class AdobeIMSTokenProvider : Disposable { private fun verifyAccessToken(token: String): AccessToken { val accessToken = gson.fromJson(token, AccessToken::class.java) - val splitToken = accessToken.access_token.split(Regex("\\.")) + val splitToken = accessToken.accessToken.split(Regex("\\.")) val unsignedToken = splitToken[0] + "." + splitToken[1] + "." val jwt = Jwts.parserBuilder().build().parseClaimsJwt(unsignedToken) - val createdAt = jwt.body.get("created_at", String::class.java).toLong() - val expiresIn = jwt.body.get("expires_in", String::class.java).toLong() + val createdAt = jwt.body["created_at", String::class.java].toLong() + val expiresIn = jwt.body["expires_in", String::class.java].toLong() val expiresAt = Instant.ofEpochMilli(createdAt + expiresIn).minus(1.hours.toJavaDuration()) diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/http/GroovyConsoleHttpService.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/http/GroovyConsoleHttpService.kt index bd6caf6..a564d72 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/http/GroovyConsoleHttpService.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/http/GroovyConsoleHttpService.kt @@ -12,17 +12,6 @@ import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.diagnostic.thisLogger import com.intellij.openapi.project.Project -import io.ktor.client.* -import io.ktor.client.call.* -import io.ktor.client.engine.cio.* -import io.ktor.client.plugins.auth.* -import io.ktor.client.plugins.auth.providers.* -import io.ktor.client.plugins.contentnegotiation.* -import io.ktor.client.request.* -import io.ktor.client.request.forms.* -import io.ktor.client.statement.* -import io.ktor.http.* -import io.ktor.serialization.kotlinx.json.* import io.ktor.utils.io.core.* import org.apache.hc.client5.http.classic.methods.HttpPost import org.apache.hc.client5.http.config.ConnectionConfig @@ -170,9 +159,7 @@ class GroovyConsoleHttpService(project: Project) : Disposable { val user = credentials?.userName.orEmpty() val password = credentials?.getPasswordAsString().orEmpty() - if (user.isBlank() || password.isBlank()) { - throw IllegalArgumentException("Credentials is not found for server: ${config.id}") - } + require(user.isNotBlank() && password.isNotBlank()) { "Credentials is not found for server: ${config.id}" } return AemServerCredentials(user, password) } diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/model/AemTokens.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/model/AemTokens.kt index 5086500..1b00564 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/model/AemTokens.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/services/model/AemTokens.kt @@ -1,5 +1,7 @@ package com.github.bobi.aemgroovyconsoleplugin.services.model +import com.google.gson.annotations.SerializedName + /** * User: Andrey Bardashevsky * Date/Time: 08.07.2023 18:32 @@ -30,7 +32,10 @@ data class AemCertificateToken( ) data class AccessToken( - val token_type: String, - val access_token: String, - val expires_in: Long, + @SerializedName("token_type") + val tokenType: String, + @SerializedName("access_token") + val accessToken: String, + @SerializedName("expires_in") + val expiresIn: Long, ) diff --git a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/utils/Notifications.kt b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/utils/Notifications.kt index fcb0e16..dc9a79e 100644 --- a/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/utils/Notifications.kt +++ b/src/main/kotlin/com/github/bobi/aemgroovyconsoleplugin/utils/Notifications.kt @@ -19,6 +19,7 @@ object Notifications { notify(title, content, NotificationType.INFORMATION) } + @Suppress("unused") fun notifyWarn(title: String = "", content: String) { notify(title, content, NotificationType.WARNING) } @@ -26,4 +27,4 @@ object Notifications { private fun notify(title: String, content: String, type: NotificationType) { Notifications.Bus.notify(Notification(NOTOFICATION_GROUP_ID, title, content, type)) } -} \ No newline at end of file +} diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index dc124d8..d4d393d 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -15,8 +15,11 @@ fieldName="INSTANCE" /> - +