Skip to content

Commit b343956

Browse files
authored
KTOR-8507: Exclude a parent from query params when it is an object (#4760)
1 parent 6d2db1d commit b343956

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

ktor-shared/ktor-resources/common/src/io/ktor/resources/serialization/ResourcesFormat.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public class ResourcesFormat(
8484
val elementDescriptor = descriptor.getElementDescriptor(index)
8585
if (!elementDescriptor.isInline && elementDescriptor.kind is StructureKind.CLASS) {
8686
collectAllParameters(elementDescriptor, result)
87-
} else {
87+
} else if (elementDescriptor.kind !is StructureKind.OBJECT) {
8888
result.add(Parameter(name, descriptor.isElementOptional(index)))
8989
}
9090
}

ktor-shared/ktor-resources/common/test/io/ktor/tests/resources/ParametersSerializationTest.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package io.ktor.tests.resources
66

77
import io.ktor.http.*
8+
import io.ktor.resources.Resource
89
import io.ktor.resources.serialization.*
910
import kotlinx.serialization.*
1011
import kotlin.test.*
@@ -174,4 +175,15 @@ class ParametersSerializationTest {
174175
assertEquals("c", encoded["charValue"])
175176
assertEquals("value", encoded["stringValue"])
176177
}
178+
179+
@Resource("v1")
180+
private data object V1 {
181+
@Resource("api")
182+
data class Api(val parent: V1)
183+
}
184+
185+
@Test
186+
fun testQueryParamsDoNotContainsObjectParent() {
187+
assertEquals(emptySet(), resourcesFormat.encodeToQueryParameters(serializer = serializer<V1.Api>()))
188+
}
177189
}

0 commit comments

Comments
 (0)