Utilizando a data do tipo java.util.Date funciona exatamente como mostrado. Porém testando com as classes java.time.LocalDate e java.time.LocalDateTime a data do erro não está sendo informada nos detalhes do Fault. O JAX-WS funciona coma nova api de datas ou estou fazendo algo erado? Segue o código:
Exceção contendo o método getFaultInfo():
@WebFault(name = "AutorizacaoFault", messageName="AutorizacaoFault")
public class AutorizacaoException extends Exception {
public AutorizacaoException(String msg) {
super(msg);
}
public FaultInfo getFaultInfo() {
return new FaultInfo("Token inválido.", LocalDateTime.now());
}
}
Implementação da classe FaultInfo utilizando java.time.LocalDateTime:
@XmlAccessorType(XmlAccessType.FIELD)
public class FaultInfo {
private String mensagem;
private LocalDateTime dataErro;
FaultInfo() {
}
public FaultInfo(String mensagem, LocalDateTime dataErro) {
this.mensagem = mensagem;
this.dataErro = dataErro;
}
}
O request do soap:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.estoque.caelum.com.br/">
<soapenv:Header>
<ws:tokenUsuario>
<dataValidade></dataValidade>
<token>ZZZ</token>
</ws:tokenUsuario>
</soapenv:Header>
<soapenv:Body>
<ws:cadastrarItem>
<item>
<codigo></codigo>
<nome></nome>
<quantidade></quantidade>
<tipo></tipo>
</item>
</ws:cadastrarItem>
</soapenv:Body>
</soapenv:Envelope>
O response do soap:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>Token Inválido.</faultstring>
<detail>
<ns2:AutorizacaoFault xmlns:ns2="http://ws.estoque.caelum.com.br/">
<mensagem>Token inválido.</mensagem>
<dataErro/>
</ns2:AutorizacaoFault>
</detail>
</S:Fault>
</S:Body>
</S:Envelope>
Aqui o problema, o atributo dataErro está vindo numa tag fechada sem conter qualquer informação sobre a data do erro, quando utilizo LocalDate ou LocalDateTime. Deveria funcionar?