JAXB: anotação de espaço para nome não herdada durante a desserialização - regressão no JDK 1.8_102?

Eu me deparei com uma situação em que o JAXB se recusa a remover o ordenamento de um elemento XML, a menos que o campo Java correspondente tenha uma anotação de espaço para nome. Esse comportamento foi iniciado apenas no JDK 1.8.0_111 (ou possivelmente em 102). As versões anteriores do JDK 1.8 funcionam.

Caso de teste:

Classe Java (reduzida):

package my.package;
@XmlRootElement(name = "MyElement", namespace="myns")
public class MyElement {
    @XmlElement(name = "subEl")
    private String subEl;
}

XML:

<MyElement xmlns="myns">
    <subEl>text1</subEl>
</MyElement>

package-info.java:

@XmlSchema(elementFormDefault = XmlNsForm.QUALIFIED)
package my.package;

Código de cancelamento de distribuição:

    JAXBContext jc = JAXBContext.newInstance(MyElement.class);
    Unmarshaller unmarshaller = jc.createUnmarshaller();
    MyElement myel = (MyElement) unmarshaller.unmarshal(xmlStream);
    System.out.println("Parse result: "+ myel);

Com o JDK 1.8.0_101 (e versões anteriores), isso imprime:

Analisar resultado: MyElement [subEl = subEl]

Com o JDK 1.8.0_111, recebo:

Analisar resultado: MyElement [subEl = null]

Portanto, o JDK 1.8.0_111 se recusa a remover o controle do elemento "MyElement".

Se eu especificar o espaço para nome na anotação de campo:

    @XmlElement(name = "subEl", namespace="myns")
    private String subEl;

funciona como esperado em todas as versões do JDK.

O que está acontecendo aqui?

Tanto quanto eu entendo, a configuraçãoelementFormDefault = XmlNsForm.QUALIFIED deve fazer com que todos os campos da classe MyElement "herdam" o espaço para nome da classe. oJavadocs para@XmlElement dizer:

Se o valor for "## default", o espaço para nome será determinado da seguinte maneira:

Se o pacote anexo tiver anotação XmlSchema e seu elementFormDefault for QUALIFIED, o espaço para nome da classe envolvente. Caso contrário '' (que produz um elemento não qualificado no espaço para nome padrão.

Padrão: "## default"

Então, por que o JDK 1.8.0_111 não desseleciona o elemento?

Nota: Relatório de bug do JAXB# 1087 - Desfazer a remoção de elementos agrupados com elementForName = falha qualificada (anteriormente emJAXB-1087- Desmarcação de elementos agrupados com elementForName = falha qualificada) parece relatar o mesmo problema - nenhuma resposta até o momento.

questionAnswers(1)

yourAnswerToTheQuestion