Erro de conversão JAXBElement no Webservice

0 respostas
J

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;

/**
     * Gets the value of the descricao property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code &lt;}{@link String }{@code &gt;}
     *     
     */
    public JAXBElement&lt;String&gt; getDescricao() {
        return descricao;
    }

    /**
     * Sets the value of the descricao property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code &lt;}{@link String }{@code &gt;}
     *     
     */
    public void setDescricao(JAXBElement&lt;String&gt; value) {
        this.descricao = ((JAXBElement&lt;String&gt; ) value);
    }

Quando no request é informado algo na descrição ele é mapeado normalmente para o VO no atributo do tipo String:

protected String descricao;

    /**
     * Gets the value of the descricao property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code &lt;}{@link String }{@code &gt;}
     *     
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * Sets the value of the descricao property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code &lt;}{@link String }{@code &gt;}
     *     
     */
    public void setDescricao(String value) {
        this.descricao = ((String ) value);
    }

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

Criado 14 de abril de 2008
Respostas 0
Participantes 1