Using `@XmlAttribute` for property with non-scalar type prevents serialization as attribute for other properties

Abierto
#128 5 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
java
Área
backend

Línea de trabajo

Comienza con el reproductor Bug2.main y ejecuta los dos casos de serialización de XmlMapper mostrados en el issue. Rastrea cómo se gestionan las anotaciones JAXB @XmlAttribute para el campo Bean no escalar, luego verifica que el comportamiento para start, bean y end coincida con un resultado acordado explícitamente y añade una prueba de regresión si se identifica la ubicación de las pruebas del proyecto.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

has-failing-test

Look at the last line of this class.
Incorrect using @XmlAttribute for a bean serialization breaks a serialization of other properties.
I excepted to see an error or bean value as an attribute value.

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;

public class Bug2 {

    @XmlRootElement(name = "bean")
    public static class Bean {

    }

    @XmlRootElement(name = "root")
    public static class Container {
        @XmlAttribute(name = "start")
        public String start;

        @XmlAttribute(name = "bean")
        public Bean bean;

        @XmlAttribute(name = "end")
        public String end;
    }

    public static void main(String[] args) throws JsonProcessingException {
        XmlMapper xmlMapper = new XmlMapper();
        xmlMapper.registerModule(new JaxbAnnotationModule());
        xmlMapper.registerModule(new JacksonXmlModule());

        Container container = new Container();
        container.start = "!start";
        container.end = "!end";
        System.out.println(xmlMapper.writeValueAsString(container)); // print <root xmlns="" start="!start" end="!end"></root>

        Bean bean = new Bean();
        container.bean = bean;
        System.out.println(xmlMapper.writeValueAsString(container)); // print <root xmlns="" start="!start"><bean></bean><end>!end</end></root>
    }
}

Lenguaje dominante
Java
Estrellas
636
Forks
250
Merge medio
7 h 10 min
PR fusionados (30 d)
8

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

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.

Más de FasterXML/jackson-dataformat-xml

Todos los issues de FasterXML/jackson-dataformat-xml

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.