Skip to content

Commit fe8b984

Browse files
authored
Fix type cast issue in transport action call (#223)
* Change generic type to ActionRequest to avoid classloader issue Signed-off-by: Chen Dai <daichen@amazon.com> * Remove unused import Signed-off-by: Chen Dai <daichen@amazon.com> * Add UT for send notification API Signed-off-by: Chen Dai <daichen@amazon.com> * Fix UT failure due to coroutine Signed-off-by: Chen Dai <daichen@amazon.com> * Fix checkstyle Signed-off-by: Chen Dai <daichen@amazon.com> * Add UT for all other APIs Signed-off-by: Chen Dai <daichen@amazon.com> * Add UT for all other APIs Signed-off-by: Chen Dai <daichen@amazon.com> * Fix checkstyle Signed-off-by: Chen Dai <daichen@amazon.com>
1 parent 34f4d35 commit fe8b984

File tree

12 files changed

+251
-13
lines changed

12 files changed

+251
-13
lines changed

notifications/build.gradle

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,19 @@ dependencies {
166166
'org.assertj:assertj-core:3.19.0',
167167
'org.mockito:mockito-junit-jupiter:3.10.0',
168168
'com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0',
169+
'io.mockk:mockk:1.11.0',
170+
'io.mockk:mockk-common:1.11.0',
171+
'io.mockk:mockk-dsl:1.11.0',
172+
'io.mockk:mockk-dsl-jvm:1.11.0',
173+
'io.mockk:mockk-agent-api:1.11.0',
174+
'io.mockk:mockk-agent-common:1.11.0',
175+
'io.mockk:mockk-agent-jvm:1.11.0',
169176
"org.junit.jupiter:junit-jupiter-api:${junit_version}"
170177
)
171178
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junit_version}")
172179
testCompile "org.opensearch.test:framework:${opensearch_version}"
173180
testCompile "org.jetbrains.kotlin:kotlin-test:${kotlin_version}"
181+
testCompile "org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}" // required by mockk
174182
testCompile "org.mockito:mockito-core:3.10.0"
175183
testCompile 'com.google.code.gson:gson:2.8.7'
176184
testImplementation 'org.springframework.integration:spring-integration-mail:5.5.0'

notifications/src/main/kotlin/org/opensearch/notifications/action/CreateNotificationConfigAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
package org.opensearch.notifications.action
2929

3030
import org.opensearch.action.ActionListener
31+
import org.opensearch.action.ActionRequest
3132
import org.opensearch.action.support.ActionFilters
3233
import org.opensearch.client.Client
3334
import org.opensearch.common.inject.Inject
@@ -63,7 +64,7 @@ internal class CreateNotificationConfigAction @Inject constructor(
6364
*/
6465
override fun doExecute(
6566
task: Task?,
66-
request: CreateNotificationConfigRequest,
67+
request: ActionRequest,
6768
listener: ActionListener<CreateNotificationConfigResponse>
6869
) {
6970
val transformedRequest = request as? CreateNotificationConfigRequest

notifications/src/main/kotlin/org/opensearch/notifications/action/DeleteNotificationConfigAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
package org.opensearch.notifications.action
2929

3030
import org.opensearch.action.ActionListener
31+
import org.opensearch.action.ActionRequest
3132
import org.opensearch.action.support.ActionFilters
3233
import org.opensearch.client.Client
3334
import org.opensearch.common.inject.Inject
@@ -63,7 +64,7 @@ internal class DeleteNotificationConfigAction @Inject constructor(
6364
*/
6465
override fun doExecute(
6566
task: Task?,
66-
request: DeleteNotificationConfigRequest,
67+
request: ActionRequest,
6768
listener: ActionListener<DeleteNotificationConfigResponse>
6869
) {
6970
val transformedRequest = request as? DeleteNotificationConfigRequest

notifications/src/main/kotlin/org/opensearch/notifications/action/GetFeatureChannelListAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
package org.opensearch.notifications.action
2929

3030
import org.opensearch.action.ActionListener
31+
import org.opensearch.action.ActionRequest
3132
import org.opensearch.action.support.ActionFilters
3233
import org.opensearch.client.Client
3334
import org.opensearch.common.inject.Inject
@@ -65,7 +66,7 @@ internal class GetFeatureChannelListAction @Inject constructor(
6566
*/
6667
override fun doExecute(
6768
task: Task?,
68-
request: GetFeatureChannelListRequest,
69+
request: ActionRequest,
6970
listener: ActionListener<GetFeatureChannelListResponse>
7071
) {
7172
val transformedRequest = request as? GetFeatureChannelListRequest

notifications/src/main/kotlin/org/opensearch/notifications/action/GetNotificationConfigAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
package org.opensearch.notifications.action
2929

3030
import org.opensearch.action.ActionListener
31+
import org.opensearch.action.ActionRequest
3132
import org.opensearch.action.support.ActionFilters
3233
import org.opensearch.client.Client
3334
import org.opensearch.common.inject.Inject
@@ -63,7 +64,7 @@ internal class GetNotificationConfigAction @Inject constructor(
6364
*/
6465
override fun doExecute(
6566
task: Task?,
66-
request: GetNotificationConfigRequest,
67+
request: ActionRequest,
6768
listener: ActionListener<GetNotificationConfigResponse>
6869
) {
6970
val transformedRequest = request as? GetNotificationConfigRequest

notifications/src/main/kotlin/org/opensearch/notifications/action/GetNotificationEventAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
package org.opensearch.notifications.action
2929

3030
import org.opensearch.action.ActionListener
31+
import org.opensearch.action.ActionRequest
3132
import org.opensearch.action.support.ActionFilters
3233
import org.opensearch.client.Client
3334
import org.opensearch.common.inject.Inject
@@ -63,7 +64,7 @@ internal class GetNotificationEventAction @Inject constructor(
6364
*/
6465
override fun doExecute(
6566
task: Task?,
66-
request: GetNotificationEventRequest,
67+
request: ActionRequest,
6768
listener: ActionListener<GetNotificationEventResponse>
6869
) {
6970
val transformedRequest = request as? GetNotificationEventRequest

notifications/src/main/kotlin/org/opensearch/notifications/action/GetPluginFeaturesAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
package org.opensearch.notifications.action
2929

3030
import org.opensearch.action.ActionListener
31+
import org.opensearch.action.ActionRequest
3132
import org.opensearch.action.support.ActionFilters
3233
import org.opensearch.client.Client
3334
import org.opensearch.common.inject.Inject
@@ -63,7 +64,7 @@ internal class GetPluginFeaturesAction @Inject constructor(
6364
*/
6465
override fun doExecute(
6566
task: Task?,
66-
request: GetPluginFeaturesRequest,
67+
request: ActionRequest,
6768
listener: ActionListener<GetPluginFeaturesResponse>
6869
) {
6970
val transformedRequest = request as? GetPluginFeaturesRequest

notifications/src/main/kotlin/org/opensearch/notifications/action/PluginBaseAction.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ internal abstract class PluginBaseAction<Request : ActionRequest, Response : Act
5656
transportService: TransportService,
5757
val client: Client,
5858
actionFilters: ActionFilters,
59-
requestReader: Writeable.Reader<Request>
60-
) : HandledTransportAction<Request, Response>(name, transportService, actionFilters, requestReader) {
59+
requestReader: Writeable.Reader<ActionRequest>
60+
) : HandledTransportAction<ActionRequest, Response>(name, transportService, actionFilters, requestReader) {
6161
companion object {
6262
private val log by logger(PluginBaseAction::class.java)
6363
private val scope: CoroutineScope = CoroutineScope(Dispatchers.IO)
@@ -66,18 +66,18 @@ internal abstract class PluginBaseAction<Request : ActionRequest, Response : Act
6666
/**
6767
* {@inheritDoc}
6868
*/
69-
@Suppress("TooGenericExceptionCaught")
69+
@Suppress("TooGenericExceptionCaught", "UNCHECKED_CAST")
7070
override fun doExecute(
7171
task: Task?,
72-
request: Request,
72+
request: ActionRequest,
7373
listener: ActionListener<Response>
7474
) {
7575
val userStr: String? =
7676
client.threadPool().threadContext.getTransient<String>(OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT)
7777
val user: User? = User.parse(userStr)
7878
scope.launch {
7979
try {
80-
listener.onResponse(executeRequest(request, user))
80+
listener.onResponse(executeRequest(request as Request, user))
8181
} catch (exception: OpenSearchStatusException) {
8282
log.warn("$LOG_PREFIX:OpenSearchStatusException:", exception)
8383
listener.onFailure(exception)

notifications/src/main/kotlin/org/opensearch/notifications/action/SendNotificationAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
package org.opensearch.notifications.action
2929

3030
import org.opensearch.action.ActionListener
31+
import org.opensearch.action.ActionRequest
3132
import org.opensearch.action.support.ActionFilters
3233
import org.opensearch.client.Client
3334
import org.opensearch.common.inject.Inject
@@ -63,7 +64,7 @@ internal class SendNotificationAction @Inject constructor(
6364
*/
6465
override fun doExecute(
6566
task: Task?,
66-
request: SendNotificationRequest,
67+
request: ActionRequest,
6768
listener: ActionListener<SendNotificationResponse>
6869
) {
6970
val transformedRequest = request as? SendNotificationRequest

notifications/src/main/kotlin/org/opensearch/notifications/action/UpdateNotificationConfigAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
package org.opensearch.notifications.action
2929

3030
import org.opensearch.action.ActionListener
31+
import org.opensearch.action.ActionRequest
3132
import org.opensearch.action.support.ActionFilters
3233
import org.opensearch.client.Client
3334
import org.opensearch.common.inject.Inject
@@ -63,7 +64,7 @@ internal class UpdateNotificationConfigAction @Inject constructor(
6364
*/
6465
override fun doExecute(
6566
task: Task?,
66-
request: UpdateNotificationConfigRequest,
67+
request: ActionRequest,
6768
listener: ActionListener<UpdateNotificationConfigResponse>
6869
) {
6970
val transformedRequest = request as? UpdateNotificationConfigRequest

0 commit comments

Comments
 (0)