Closed edivaldoms closed 5 years ago
Eu concordo que essa validação não se faz necessária. O desenvolvedor deve ter total controle sobre a geração dos objetos.
Eu fiz algumas melhorias nos validadores onde não valida se o valor for nulo. Vou submeter um pull request daqui a pouco.
Sempre que vamos setar os valores das classes só podemos fazer isso se o valor for diferente de null, pois se o valor for null, apresenta erro. Para resolver esse problema nosso código fica enorme.
Temos que checar com if(x != null){...} sempre antes de setar:
if (getMDFInfoIdentificacaoUfPercurso(mdfe) != null){ a.setIdentificacaoUfPercursos(getMDFInfoIdentificacaoUfPercurso(mdfe)); }
if (mdfe.getIdeTpTransp() != null) { a.setTipoTranportador(MDFTipoTranportador.valueOfCodigo(mdfe.getIdeTpTransp().getCodigo())); }
Estava olhando o método em com.fincatto.documentofiscal.mdfe3.classes.nota.MDFInfoIdentificacao
public void setIdentificacaoUfPercursos(final List<MDFInfoIdentificacaoUfPercurso> identificacaoUfPercursos) { this.identificacaoUfPercursos = ListValidador.validaListaNaoObrigatoria(identificacaoUfPercursos, 25, "UF percurso MDF-e"); }
Este campo no XML pode ser nulo ou se tiver uma lista, deve ser de no máximo 25 registros. Mas pelo fato de chamar o metodo setIdentificacaoUfPercursos(null), já lança o Exception.
O método que valida a lista "Não Obrigatória" está assim:
public static <E> List<E> validaListaNaoObrigatoria(final List<E> lista, final int tamanho, final String info){ validaTamanho(lista, tamanho, info); return lista; }
Mas acredito que deva ser algo tipo:
public static <E> List<E> validaListaNaoObrigatoria(final List<E> lista, final int tamanho, final String info) { if (lista != null) { validaTamanho(lista, tamanho, info); } return lista; }
Com isso, não precisaria ficar verificando se está nula antes de setar.O que acham de fazer essa mudança?
Outro detalhe que poderia ficar para o futuro, seria a possibilidade de desligar a validação, pois muitas vezes queremos pre-visualizar a DANFE e se o usuário não preencher diversos campos sem antes de terminar o documento, não conseguirá devido a validação do XML.