microsoftgraph / microsoftgraph/msgraph-beta-sdk-java
Entity.createFromDiscriminatorValue incorrectly deserializes #microsoft.graph.user as com.microsoft.graph.beta.models.security.User
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Java
- Estrellas
- 32
- Forks
- 14
- Merge medio
- 1 d 3 h
- PR fusionados (30 d)
- 6
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con la fábrica de discriminadores de los modelos generados models/Entity.java en las líneas referenciadas y compara sus imports y asignaciones de tipos con DirectoryObject::createFromDiscriminatorValue. Ejecuta la reproducción proporcionada de KiotaJsonSerialization, añade después cobertura de regresión para #microsoft.graph.user y comprueba si otras asignaciones de discriminadores presentan la misma ambigüedad.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- api
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 45/100