CXF Classe de Domínio com Many-to-one
17/05/2013 12:10
0
Bom dia/tarde/noite a todos,
tenho o seguinte cenário, uma aplicação desktop tem que acessar meu WebService(em Grails) para verificar se tenho novos produtos cadastrados na minha base de dados.

Estou usando o plugin do CXF, consigo acessar o meu WebService com o SoapUI e retornar a lista de produtos, o problema é que quando eu retorno a lista de produtos ele não detalha as minhas Classes Many-to-one. Abaixo deixo os meus códigos de exemplo:

Minha Classe de Produto o many-to-one que quero detalhar é Empresa:

package teste

import javax.xml.bind.annotation.XmlAccessType
import javax.xml.bind.annotation.XmlAccessorType
import javax.xml.bind.annotation.XmlElement

@XmlAccessorType(XmlAccessType.NONE)
class Produto implements Serializable {

@XmlElement
Long id

@XmlElement
Empresa empresa

@XmlElement
String descricao

@XmlElement
boolean ativo = true

@Override
String toString() {
"$id - $descricao"
}

static constraints = {
descricao size:1..200
}

static mapping = {
table 'PRODUTO'
id generator:'sequence', params:[sequence:"SEQ_${Utils.getGenerator(className)}_ID"]
empresa column:'ID_EMPRESA'
descricao column:'PROD_DESCRICAO'
ativo column:'PROD_ATIVO'
}

def row() {
return [id: id, descricao: descricao, textField: toString()]
}

}

Aqui a Classe de domínio Empresa:

package teste

import javax.xml.bind.annotation.XmlAccessType
import javax.xml.bind.annotation.XmlAccessorType
import javax.xml.bind.annotation.XmlElement

@XmlAccessorType(XmlAccessType.NONE)
class Empresa implements Serializable {

@XmlElement
Long id
@XmlElement
String razao
@XmlElement
String sigla
@XmlElement
boolean ativo = true

static constraints = {
sigla size:1..14, nullable: true
razao size:3..100
}

static mapping = {
table 'CTRL_EMPRESA'
// Firebird Generator.
id column:'ID_EMPRESA', generator:'assigned'//, params:[sequence:"SEQ_${Utils.getGenerator(className)}_ID"]
version false
razao column: 'EMP_RAZAO'
ativo column: 'EMP_ATIVO'
sigla column: 'EMP_SIGLA'
}

@Override
String toString() {
return "$id - $razao"
}

def row() {
return [id: id, razao: razao, ativo: ativo, textField: toString()]
}

}

Agora meu Service:

package teste

import javax.jws.WebMethod
import javax.jws.WebResult

import org.grails.cxf.utils.EndpointType

class PdvService {

static expose = EndpointType.JAX_WS

@WebResult(name='teste')
@WebMethod
String metodoTeste() {
return "Eu sou um método do Serviço PDV"
}

@WebResult(name='produto')
@WebMethod
Produto[] listaProd() {
return Produto.list() as Produto[]
}

}

Agora o resultado no SoapUI:
https://gist.github.com/eduardodaluz/5598639
Coloquei no Gist pq aqui iria ficar muito grande. O que eu quero é que na linha 6 onde está só "<empresa/>" apareça algo como:

<empresa>
<id>1</id>
<razao>EMPRESA ZÉ DAS COUVES</razao>
</empresa


Alguém pode me dar uma luz?
Tags: cxf Classe Domínio many-to-one domain class many one


Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto