Entity.createFromDiscriminatorValue incorrectly deserializes #microsoft.graph.user as com.microsoft.graph.beta.models.security.User
還沒有人認領這個 Issue。
評估
研究方向
從所引用行中的產生模型 models/Entity.java 判別器工廠開始,並將其 imports 和型別對應與 DirectoryObject::createFromDiscriminatorValue 進行比較。執行提供的 KiotaJsonSerialization 重現,接著為 #microsoft.graph.user 新增回歸涵蓋範圍,並檢查其他判別器對應是否存在相同的歧義。
由索引模型根據 Issue 內容生成。
描述
Describe the bug
In current beta version, when trying to deserialize a #microsoft.graph.user from JSON using KiotaJsonSerialization.deserialize(json, Entity::createFromDiscriminatorValue), it's returned as a com.microsoft.graph.beta.models.security.User instance.
This is because only one of com.microsoft.graph.beta.models.User and com.microsoft.graph.beta.models.security.User is imported the latter), and classes are referenced without fully qualified name.
See https://github.com/microsoftgraph/msgraph-beta-sdk-java/blob/3612a3a8958cc35b0be7626b966008ea99a031af/src/main/java/com/microsoft/graph/beta/generated/models/Entity.java#L2075 and https://github.com/microsoftgraph/msgraph-beta-sdk-java/blob/3612a3a8958cc35b0be7626b966008ea99a031af/src/main/java/com/microsoft/graph/beta/generated/models/Entity.java#L2326
There are probably other cases like this one.
Expected behavior
KiotaJsonSerialization.deserialize(json, Entity::createFromDiscriminatorValue) should return a com.microsoft.graph.beta.models.User instance for #microsoft.graph.user objects.
How to reproduce
This test
//passes
assertEquals(com.microsoft.graph.beta.models.User.class, KiotaJsonSerialization.deserialize("""
{
"@odata.type": "#microsoft.graph.user"
}
""", DirectoryObject::createFromDiscriminatorValue).getClass());
//KO
assertEquals(com.microsoft.graph.beta.models.User.class, KiotaJsonSerialization.deserialize("""
{
"@odata.type": "#microsoft.graph.user"
}
""", Entity::createFromDiscriminatorValue).getClass());
will fail with
org.opentest4j.AssertionFailedError:
Expected :class com.microsoft.graph.beta.models.User
Actual :class com.microsoft.graph.beta.models.security.User
SDK Version
6.51.0
Latest version known to work for scenario above?
No response
Known Workarounds
Pass a more precise ParsableFactory, like DirectoryObject::createFromDiscriminatorValue, like in the reproduction test.
Debug output
Configuration
No response
Other information
I found an old bug in Kiota that might be related (it was marked as fixed though): https://github.com/microsoft/kiota/issues/1801
- 主要語言
- Java
- 星號
- 32
- 分支
- 14
- 平均合併
- 1 天 3 小時
- 30 天內合併 PR
- 6
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
microsoftgraph/msgraph-beta-sdk-java 的其他 Issue
-
type:bug
難度 4/5 3-5 天 新手友好度 35/100
-
enhancement help wanted
難度 3/5 1-2 天 新手友好度 35/100
-
dependency:metadata status:waiting-for-dependency
難度 4/5 3-5 天 新手友好度 38/100
microsoftgraph/msgraph-beta-sdk-java#1181 · 5 則留言 · 1 個 reaction ·
-
type:bug
難度 4/5 3-5 天 新手友好度 35/100
microsoftgraph/msgraph-beta-sdk-java#1162 · 1 則留言 · 1 個 reaction ·
-
Needs: attention :wave: Needs: Attention 👋 Type: Question
難度 3/5 1-2 天 新手友好度 35/100
microsoftgraph/msgraph-beta-sdk-java#1002 · 2 則留言 ·
查看 microsoftgraph/msgraph-beta-sdk-java 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 78/100
-
難度 2/5 1-3 小時 新手友好度 76/100
-
bug needs triage
難度 2/5 1-3 小時 新手友好度 76/100
-
難度 1/5 1 小時以內 新手友好度 94/100
objectionary/hone-maven-plugin#1061 ·
-
難度 2/5 1-3 小時 新手友好度 76/100
spring-projects/spring-modulith#1895 ·