Propósito
O objetivo desse Grooming foi o de alinhar como deveria ser o comportamentos padrão ao desserializar uma string, que contem um XML, para um objeto da linguagem que a recebeu.
O maior ponto de dúvida estava em como tratar os seguintes cenários:
- Tags vazias
- Tags nulas
- Tags ausentes
Ata
A discussão rodou em torno do comportamento esperado tanto para o conversor quanto para os EAIs.
Foi identificado que os EAIs se comportam de maneira diferente em relação a esses itens, porém ainda não existe certeza sobre os comportamentos atuais.
O conversor está retirando as tags vazias ou nulas.
Conclusões
Chegamos às seguintes definições:
- Tags Vazias
- Uma tag vazia sempre tem o significado de string vazia, não podendo, assim, ser desserializada para variáveis de tipos diferentes de string.
- Seguem exemplos abaixo de comportamento do conversor:
Variável String:
XML<name/> <name2></name2>
JSON{ "name" : "", "name2": "" }
Variável boolean, data ou numérica
XML<date/> <number></number>
Erro{ code: "Precisamos definir o código identificador", message: "Não foi possível desserializar a mensagem. A propriedade 'date' esperava um tipo datetime, mas recebeu string", helpUrl: "http://tdn.totvs.com/linkcomdetalhesdoerro", detailedMessage: "Texto contendo a exception gerada"}
- Tags nulas
- Uma tag nula é considerada um valor aceitável.
- O comportamento/significado desse valor vai depender da implementação de quem o recebeu.
- Adapters podem zerar o valor, ou até mesmo substituir por um valor default
- O conversor irá manter o valor de nulo em ambos os formatos.
Seguem exemplos abaixo de comportamento do conversor:
XML<prop xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
JSON{ "prop": null }
- Tags Ausentes
- O comportamento/significado de não existir uma determinada tag no corpo da mensagem vai depender da implementação de quem o recebeu.
- Adapters podem zerar o valor, ou até mesmo substituir por um valor default
- Conversor transcreve exatamente como recebeu. Ou seja, se uma tag não veio no XML, a mesma também não irá existir em JSON.
- O comportamento/significado de não existir uma determinada tag no corpo da mensagem vai depender da implementação de quem o recebeu.
Ações
- Tarefa de melhoria
- Conversor: Foram abertas issues, do tipo story, para ajustar esses comportamentos no conversor
- EAI: Foram abertas issues, do tipo spike, para comparar o comportamento atual com o esperado, em todas as linhas.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas