Pessoal, estou com um problema que gostaria de ver com vocês se já passaram por algo parecido e poderiam me ajudar.
Estou trabalhando com webservice e o mapeamento entre as classes é feito com o Dozer via xml.
Tenho uma classe que contém um atributo "descrição do tipo JAXBElement:
protected JAXBElement<String> descricao;
[code] /**
* Gets the value of the descricao property.
*
* @return
* possible object is
* {@link JAXBElement }{@code <}{@link String }{@code >}
*
*/
public JAXBElement<String> getDescricao() {
return descricao;
}
/**
* Sets the value of the descricao property.
*
* @param value
* allowed object is
* {@link JAXBElement }{@code <}{@link String }{@code >}
*
*/
public void setDescricao(JAXBElement<String> value) {
this.descricao = ((JAXBElement<String> ) value);
}[/code]
Quando no request é informado algo na descrição ele é mapeado normalmente para o VO no atributo do tipo String:
[code]protected String descricao;
/**
* Gets the value of the descricao property.
*
* @return
* possible object is
* {@link JAXBElement }{@code <}{@link String }{@code >}
*
*/
public String getDescricao() {
return descricao;
}
/**
* Sets the value of the descricao property.
*
* @param value
* allowed object is
* {@link JAXBElement }{@code <}{@link String }{@code >}
*
*/
public void setDescricao(String value) {
this.descricao = ((String ) value);
}[/code]
Quando não é informado nada na descrição, devo recuperar do banco de dados este valor e setar no VO.
Acontece que se o campo está nulo no request, quando vou setar seto o valor no VO e o dozer faz o mapeamento para montar o xml response, ocorre o seguinte erro:
08-04-12 14:20:12 ERROR - Field mapping error -->
MapId: null
Type: null
Source parent class: br.com.vo.TabelaVO
Source field name: descricao
Source field type: class java.lang.String
Source field value: VALOR DO CAMPO DESCRIÇÃO
Dest parent class: br.com.schemas.CtTabela
Dest field name: descricao
Dest field type: javax.xml.bind.JAXBElement
net.sf.dozer.util.mapping.MappingException: Converter JaxbElementConverter used incorrectly. Arguments passed in were:null and VALOR DO CAMPO DESCRIÇÃO
at br.com.amil.tiss.util.JaxbElementConverter.convert(JaxbElementConverter.java:46)
Pelo o que tive lendo, a conversão do request é possível porque o método do JAXBElemente possui toString() e consegue setar no atributo String, mas já na volta não é possível efetuar esta conversão.
Alguém poderia me ajudar?
Valeu
Júlio