microsoftgraph / microsoftgraph/msgraph-beta-sdk-java

Entity.createFromDiscriminatorValue incorrectly deserializes #microsoft.graph.user as com.microsoft.graph.beta.models.security.User

Abierto
#1,264 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

type:bug
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

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.