Ola pessoal,
estou precisando de uma ajudinha.
Tenho uma coleção de objetos do tipo ‘Varejo’, e cada varejo tem um relacionamento com o tipo ‘TipoVarejo’. Um varejo é de um tipo, saca?
Ae gostaria de utilizar o JXPath pra percorrer esta lista de varejos e me retorne somente os varejos de tipo ‘Restaurante’ (no caso, com id igual a 2), como mostra o código abaixo:
public static void main(String[] a) {
List varejos = new ArrayList();
varejos.add(criaVarejo("7830", "1"));
varejos.add(criaVarejo("7831", "2"));
varejos.add(criaVarejo("8366", "2"));
varejos.add(criaVarejo("8738", "3"));
varejos.add(criaVarejo("8739", "1"));
varejos.add(criaVarejo("8756", "2"));
JXPathContext context = JXPathContext.newContext(varejos);
Iterator it = context.iterate("./tipo[@id = '2']/..");
List varejosFiltrados = new ArrayList();
while(it.hasNext()) {
varejosFiltrados.add(it.next());
}
}
private Varejo criaVarejo(String id, String tipo) {
TipoVarejo tipoVarejo = new TipoVarejo();
tipoVarejo.setId(tipo);
Varejo varejo = new Varejo();
varejo.setId(id);
varejo.setTipo(tipoVarejo);
return varejo;
}
Ae quando eu rodo o exemplo, levo o seguinte erro:
org.apache.commons.jxpath.JXPathException: Cannot compare pointers that do not belong to the same tree: '/.[3]' and '/.[2]'
at org.apache.commons.jxpath.ri.model.NodePointer.compareNodePointers(NodePointer.java:722)
at org.apache.commons.jxpath.ri.model.NodePointer.compareNodePointers(NodePointer.java:729)
at org.apache.commons.jxpath.ri.model.NodePointer.compareTo(NodePointer.java:690)
at org.apache.commons.jxpath.ri.EvalContext$1.compare(EvalContext.java:58)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at org.apache.commons.jxpath.ri.EvalContext.constructIterator(EvalContext.java:198)
at org.apache.commons.jxpath.ri.EvalContext.hasNext(EvalContext.java:114)
at org.apache.commons.jxpath.ri.compiler.Expression$ValueIterator.hasNext(Expression.java:128)
at howto.JXPathWithOutletTest.test(JXPathWithOutletTest.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
Alguém ja passou por esse erro e poderia me ajudar, por favor?
Muito obrigado e um excelente dia!