Estou com problemas nessa ultima questão. A resquest que gera a tag do filtros fica como "ws:filtros" , qdo executo ela aparece nullpointer excepttion. Se eu alterar a tag para filtros funciona. Como faço para gerar com o nome da tag igual a exemplo ?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.modelo.estoque.caelum.com.br/">
<soapenv:Header/>
<soapenv:Body>
<ws:todosOsItens>
<!--Optional:-->
<ws:filtros>
<!--Zero or more repetitions:-->
<filtro>
<!--Optional:-->
<nome>?</nome>
<!--Optional:-->
<tipo>?</tipo>
</filtro>
</ws:filtros>
</ws:todosOsItens>
</soapenv:Body>
</soapenv:Envelope>
minhas classes:
package br.com.caelum.estoque.modelo.ws;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import br.com.caelum.estoque.modelo.item.Filtro;
import br.com.caelum.estoque.modelo.item.Filtros;
import br.com.caelum.estoque.modelo.item.Item;
import br.com.caelum.estoque.modelo.item.ItemDao;
import br.com.caelum.estoque.modelo.item.ListaItens;
@WebService
public class EstoqueWs {
ItemDao dao = new ItemDao();
@WebMethod(operationName = "todosOsItens")
@WebResult(name = "itens")
public ListaItens getItens(@WebParam(name="filtros") Filtros filtros){
System.out.println("Chamando getItens()");
List<Filtro> lista = filtros.getLista();
ArrayList<Item> todosItens = dao.todosItens(lista);
return new ListaItens(todosItens);
}
}
package br.com.caelum.estoque.modelo.item;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement()
@XmlAccessorType(XmlAccessType.FIELD)
public class Filtros {
@XmlElement(name="filtro")
private List<Filtro> filtros;
public Filtros(List<Filtro> filtros) {
this.filtros = filtros;
}
Filtros() {
}
public List<Filtro> getLista() {
return filtros;
}
}