Andrew, I've been meaning to look into this but haven't yet. If you have any ready-to-run code you can send to the list, that wouldn't hurt...
-Matt --- On Mon, 2/23/09, Andrew Hughes <ahhug...@gmail.com> wrote: > From: Andrew Hughes <ahhug...@gmail.com> > Subject: Re: JXPath over Generic Collection<?>, How? > To: "Commons Users List" <user@commons.apache.org> > Date: Monday, February 23, 2009, 5:42 AM > OK, email #19 to the list. I'm both > incredibly patient and skeptical that > this will ever work. I might try and run this in a debugger > and track down > "how" JXPath traverses the DynaBean.... but given the > reflection involved > that might be a painful task. > --AH > > > On Tue, Feb 17, 2009 at 1:11 PM, Andrew Hughes <ahhug...@gmail.com> > wrote: > > > Ping... if anyone can help with this JXPath & > DynaBeans problem I'd be > > REALLY THANKFUL :) > > > > > > On Fri, Feb 13, 2009 at 1:55 PM, Andrew Hughes <ahhug...@gmail.com> > wrote: > > > >> Howdy, > >> I've taken Matt's suggestion onboard and I have > investigated DynaBeans. > >> These look pretty good for all intestive purposes > and there's a code > >> examples below how to build the data structure: > >> > >> + root [...@name="ROOT"] > >> + animal [...@name="ANIMAL"] > >> + dog > [...@name="DOG"] > >> > + boxer [...@name="BOXER"] > >> > + labrador [...@name="LABRADOR"] > >> + cat > [...@name="CAT"] > >> > + tiger [...@name="TIGER-ONE"] > >> > + tiger [...@name="TIGER-TWO"] > >> > + tiger [...@name="TIGER-THREE"] > >> > + lion [...@name="LION"] > >> > >> > >> And the code looks like... > >> > >> LazyDynaBean lazyDynaBean = new > LazyDynaBean(); //the transparent root. > >> LazyDynaBean root = new LazyDynaBean(); > >> LazyDynaBean animal = new LazyDynaBean(); > >> LazyDynaBean dog = new LazyDynaBean(); > >> LazyDynaBean cat = new LazyDynaBean(); > >> LazyDynaBean boxer = new LazyDynaBean(); > >> LazyDynaBean labrador = new LazyDynaBean(); > >> LazyDynaBean tiger1 = new LazyDynaBean(); > >> LazyDynaBean tiger2 = new LazyDynaBean(); > >> LazyDynaBean tiger3 = new LazyDynaBean(); > >> LazyDynaBean lion = new LazyDynaBean(); > >> //set the @name property of each bean, user > UPPER to make them distinct > >> for examples. > >> root.set("name","ROOT"); > >> animal.set("name","ANIMAL"); > >> dog.set("name","DOG"); > >> cat.set("name","CAT"); > >> boxer.set("name","BOXER"); > >> labrador.set("name","LABRADOR"); > >> tiger1.set("name","TIGER-ONE"); > >> tiger2.set("name","TIGER-TWO"); > >> tiger3.set("name","TIGER-THREE"); > >> lion.set("name","LION"); > >> //build the bean hierarchy. > >> lazyDynaBean.set("root",0, root); > >> root.set("animal",0, animal); > >> animal.set("dog",0,dog); > >> animal.set("cat",0,cat); > >> dog.set("labrador",0,labrador); > >> dog.set("boxer",0, boxer); > >> cat.set("tiger",0,tiger1);//duplicate > >> cat.set("tiger",1,tiger2);//duplicate > >> cat.set("tiger",1,tiger3);//duplicate > >> cat.set("lion",0,lion); > >> > JXPathContext context = > JXPathContext.newContext(lazyDynaBean); > >> String query > = "/root/animal/cat/tiger"; > >> Object value > = context.getValue(query); > >> > >> > >> But there's a problem with JXPath querying this > also. Absolute Paths like > >> '/root/animal/cat/tiger' or > '/root/animal/cat/tiger'[2]' work perfectly. > >> But I don't have anyluck doing "deep" searches. > For examples the following > >> just won't work. > >> '//cat' > >> //*...@name='LION'] > >> /root/animal/cat/tig...@name='TIGER-TWO'] > >> > >> Things are looking up, but is this behavior to be > expected? > >> > >> Cheers, > >> --AH > >> > >> > >> On Thu, Feb 12, 2009 at 6:43 AM, Matt Benson > <gudnabr...@yahoo.com>wrote: > >> > >>> > >>> > >>> > >>> > >>> --- On Wed, 2/11/09, Andrew Hughes <ahhug...@gmail.com> > wrote: > >>> > >>> > From: Andrew Hughes <ahhug...@gmail.com> > >>> > Subject: Re: JXPath over Generic > Collection<?>, How? > >>> > To: "Commons Users List" <user@commons.apache.org> > >>> > Date: Wednesday, February 11, 2009, 4:19 > AM > >>> > Still No Luck, I have removed recursive > generic collections > >>> > and have tried > >>> > the following code... this is becoming a > marathon effort > >>> > :'( > >>> > > >>> > public class Thing { > >>> > > >>> > public > Thing(String name) { > >>> > > this.name = name; > >>> > } > >>> > private String > name = ""; > >>> > > >>> > public String > getName() { > >>> > > return name; > >>> > } > >>> > private > ArrayList<Thing> children = new > >>> > ArrayList<Thing>(); > >>> > > >>> > public > ArrayList<Thing> getChildren() { > >>> > > return children; > >>> > } > >>> > > >>> > } > >>> > > >>> > > >>> > public static > void main(String[] args) { > >>> > > //get some same data > >>> > > Thing animal = new Thing("Animal"); > >>> > > //Animal.Dog.* > >>> > > Thing dog = new Thing("Dog"); > >>> > > dog.getChildren().add(new > >>> > Thing("Labrador")); > >>> > > dog.getChildren().add(new > >>> > Thing("Boxer")); > >>> > > animal.getChildren().add(dog); > >>> > > //Animal.Cat.* > >>> > > Thing cat = new Thing("Cat"); > >>> > > cat.getChildren().add(new Thing("Lion")); > >>> > > cat.getChildren().add(new > >>> > Thing("Tiger")); > >>> > > animal.getChildren().add(cat); > >>> > > >>> > > //run a query on it > >>> > > JXPathContext context = > >>> > JXPathContext.newContext(animal); > >>> > > String query = "/Animal"; > >>> > > Thing result = (Thing) > context.getValue(query); > >>> > > String path = > context.getPointer(query).asPath(); > >>> > > System.out.println("Ran '" + query + > >>> > "' and got '" + > >>> > result.getName() + "' on path '" + path > + > >>> > "'."); > >>> > } > >>> > > >>> > >>> What would you be trying to select? If > you want to know how to look for > >>> a given Thing in this graph, I can probably > help. If you want to know what > >>> graph will allow you to use a preconceived > notion of the xpath you want to > >>> use, that will be harder. You might use > [beanutils] dynabeans in > >>> conjunction with [jxpath] to try and achieve > the latter. > >>> > >>> -Matt > >>> > >>> > > >>> > > >>> > > >>> > On Wed, Feb 11, 2009 at 3:08 PM, Andrew > Hughes > >>> > <ahhug...@gmail.com> > wrote: > >>> > > >>> > > Yeah, that makes sense. The part > that was confusing me > >>> > is that if I > >>> > > have... > >>> > > > >>> > > public class Thing { > >>> > > > >>> > > private > List<Thing> children; > >>> > > > >>> > > } > >>> > > > >>> > > I was assuming I would need to > prefix all of my > >>> > expressions "steps" with > >>> > > '/children'. From what you said > earlier this > >>> > is not the case as collections > >>> > > are "auto traversed/loaded". > >>> > > > >>> > > Thanks again matt! I won't get to > test this out > >>> > til later tonight be look > >>> > > foward to seeing it working!!! > >>> > > > >>> > > Andrew > >>> > > > >>> > > > >>> > > On Wed, Feb 11, 2009 at 2:57 PM, > Matt Benson > >>> > <gudnabr...@yahoo.com> > wrote: > >>> > > > >>> > >> > >>> > >> It should be as simple as Thing > _containing_ a > >>> > List<Thing> rather than > >>> > >> _being_ a > List<Thing>. Composition over > >>> > inheritance, do you see? > >>> > >> > >>> > >> HTH, > >>> > >> Matt > >>> > >> > >>> > >> > >>> > >> --- On Tue, 2/10/09, Andrew > Hughes > >>> > <ahhug...@gmail.com> > wrote: > >>> > >> > >>> > >> > From: Andrew Hughes > >>> > <ahhug...@gmail.com> > >>> > >> > Subject: Re: JXPath over > Generic > >>> > Collection<?>, How? > >>> > >> > To: "Commons Users List" > >>> > <user@commons.apache.org>, > >>> > >> gudnabr...@yahoo.com > >>> > >> > Date: Tuesday, February 10, > 2009, 7:06 PM > >>> > >> > Matt, Thank You. > >>> > >> > > >>> > >> > Is there any other data > structure I can use > >>> > that would work > >>> > >> > with JXPath? My > >>> > >> > requirement is that... a > "Thing" > >>> > can have contain > >>> > >> > multiple child "Thing(s)" > >>> > >> > (and the children are > allowed to be > >>> > non-unique). > >>> > >> > This is equivalent to an > XML element as it > >>> > can contain > >>> > >> > multiple child > >>> > >> > elements, how do these > guy's handle it I > >>> > wonder? > >>> > >> > > >>> > >> > --Andrew > >>> > >> > > >>> > >> > > >>> > >> > On Wed, Feb 11, 2009 at > 9:09 AM, Matt Benson > >>> > >> > <gudnabr...@yahoo.com> > wrote: > >>> > >> > > >>> > >> > > > >>> > >> > > I admit I hadn't > looked at this with > >>> > a highly > >>> > >> > critical eye, but this > >>> > >> > > business of Thing > extending > >>> > ArrayList<Thing> > >>> > >> > seems quite strange to me. > >>> > >> > > JXPath basically > functions by > >>> > "opening up" > >>> > >> > collections automatically, > so > >>> > >> > > the very fact that > Thing is itself a > >>> > Collection > >>> > >> > implies that a Thing will > be > >>> > >> > > opened up, and its > children will be > >>> > searched... but in > >>> > >> > this example, either > >>> > >> > > there are no children, > at the leaves, or > >>> > the children > >>> > >> > themselves are > >>> > >> > > (possibly empty) > collections. It looks > >>> > as though > >>> > >> > you're trying to represent > >>> > >> > > a tree > structure. This may be a good > >>> > example of a > >>> > >> > reason for the idea of > >>> > >> > > composition over > inheritance. I > >>> > don't think > >>> > >> > you're going to get any > >>> > >> > > traction using JXPath > with this object > >>> > model. > >>> > >> > > > >>> > >> > > Sorry for the bad > news, > >>> > >> > > Matt > >>> > >> > > > >>> > >> > > > >>> > >> > > --- On Tue, 2/10/09, > Andrew Hughes > >>> > >> > <ahhug...@gmail.com> > wrote: > >>> > >> > > > >>> > >> > > > From: Andrew > Hughes > >>> > <ahhug...@gmail.com> > >>> > >> > > > Subject: Re: > JXPath over Generic > >>> > >> > Collection<?>, How? > >>> > >> > > > To: "Commons > Users List" > >>> > >> > <user@commons.apache.org> > >>> > >> > > > Date: Tuesday, > February 10, 2009, > >>> > 7:16 AM > >>> > >> > > > Still busted. > Example is now > >>> > simplified. As soon > >>> > >> > as a > >>> > >> > > > generic > Collection > >>> > >> > > > becomes involved > BOOM! > >>> > >> > > > > >>> > >> > > > The Main Method > to exec: > >>> > >> > > > public class App > { > >>> > >> > > > > public static void main( > >>> > String[] args ){ > >>> > >> > > > > JXPathContext context = > >>> > >> > > > > JXPathContext.newContext(new > >>> > ThingRoot()); > >>> > >> > > > > >>> > >> > > > > >>> > >> > > >>> > > System.out.println(((Thing)context.getValue("/root")).getName()); > >>> > >> > > > > } > >>> > >> > > > } > >>> > >> > > > > >>> > >> > > > The (populated) > context root I am > >>> > using, where > >>> > >> > root is a > >>> > >> > > > single object > >>> > >> > > > holding a List of > Thing's. > >>> > >> > > > package > jxpathresearch; > >>> > >> > > > > >>> > >> > > > import > java.util.ArrayList; > >>> > >> > > > import > java.util.List; > >>> > >> > > > > >>> > >> > > > public class > ThingRoot { > >>> > >> > > > > private List<Thing> root > >>> > new > >>> > >> > ArrayList(); //this > >>> > >> > > > will serve as the > root. > >>> > >> > > > > public ThingRoot() { > >>> > >> > > > > Thing animal = new > >>> > >> > Thing("Animal"); > >>> > >> > > > > root.add(animal);//Animal > >>> > >> > > > > Thing dog = new > >>> > Thing("Dog"); > >>> > >> > > > > >>> > animal.add(dog);//Animal.Dog > >>> > >> > > > > dog.add(new > >>> > >> > > > > >>> > >> > > >>> > Thing("Labrador"));//Animal.Dog.Labrador > >>> > >> > > > > dog.add(new > >>> > >> > > > > >>> > Thing("Boxer"));//Animal.Dog.Boxer > >>> > >> > > > > } > >>> > >> > > > > public List<Thing> > >>> > getRoot() { return > >>> > >> > root; } > >>> > >> > > > } > >>> > >> > > > > >>> > >> > > > Finally here's a > very simple > >>> > 'Thing' > >>> > >> > that > >>> > >> > > > contains a List > of Thing(s): > >>> > >> > > > public class > Thing extends > >>> > ArrayList<Thing> > >>> > >> > { > >>> > >> > > > > public Thing(String > >>> > name){this.name = name;} > >>> > >> > > > > private String name = > >>> > ""; > >>> > >> > > > > public String getName() {return > >>> > name;} > >>> > >> > > > } > >>> > >> > > > > >>> > >> > > > I can't query > anything beyond > >>> > /root, it > >>> > >> > doesn't > >>> > >> > > > seem to ever get > traversed. > >>> > >> > > > I would expect > results for //Thing > >>> > and > >>> > >> > > > > //thi...@name='Labrador'] > >>> > etc but I > >>> > >> > > > get no results > only exceptions. > >>> > >> > > > > >>> > >> > > > > >>> > >> > > > My brain is > hurting. > >>> > >> > > > > >>> > >> > > > > >>> > >> > > > > >>> > >> > > > On Tue, Feb 10, > 2009 at 12:22 AM, > >>> > Andrew Hughes > >>> > >> > > > <ahhug...@gmail.com> > wrote: > >>> > >> > > > > >>> > >> > > > > I've noew > tested a whole > >>> > heap of > >>> > >> > expressions even > >>> > >> > > > //name='Tiger' > nothing > >>> > >> > > > > works. > >>> > >> > > > > > >>> > >> > > > > On Tue, Feb > 10, 2009 at 12:01 > >>> > AM, Andrew > >>> > >> > Hughes > >>> > >> > > > <ahhug...@gmail.com>wrote: > >>> > >> > > > > > >>> > >> > > > >> I got > cracking on testing > >>> > this out... no > >>> > >> > luck > >>> > >> > > > (yet). Here's my > testing > >>> > >> > > > >> code if > some kind person > >>> > could please > >>> > >> > take a > >>> > >> > > > look.... > >>> > >> > > > >> First my > generic > >>> > collection hierarchy > >>> > >> > (which only > >>> > >> > > > contains a name > and > >>> > >> > > > >> > children)... > >>> > >> > > > >> > >>> > >> > > > >> package > jxpathresearch; > >>> > >> > > > >> > >>> > >> > > > >> import > >>> > java.util.ArrayList; > >>> > >> > > > >> > >>> > >> > > > >> public > class HierarchyPojo > >>> > extends > >>> > >> > > > > ArrayList<HierarchyPojo> { > >>> > >> > > > >> > >>> > >> > > > >> > public > >>> > HierarchyPojo(String name){ > >>> > >> > > > >> > >>> > this.setName(name); > >>> > >> > > > >> > } > >>> > >> > > > >> > private String name = > >>> > ""; > >>> > >> > > > >> > >>> > >> > > > >> > public String > >>> > getName() { > >>> > >> > > > >> > return name; > >>> > >> > > > >> > } > >>> > >> > > > >> > public void > >>> > setName(String name) { > >>> > >> > > > >> > this.name = name; > >>> > >> > > > >> > } > >>> > >> > > > >> > >>> > >> > > > >> } > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> Next, > the wrapper for the > >>> > root context > >>> > >> > (as Matt > >>> > >> > > > suggested) and > populated > >>> > >> > > > >> with > animals... > >>> > >> > > > >> > >>> > >> > > > >> package > jxpathresearch; > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> public > class > >>> > CollectionRoot { > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> > private HierarchyPojo > >>> > hierarchyPojo; > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> > public > >>> > CollectionRoot(){ > >>> > >> > > > >> > >>> > >> > > > >> > //Animal > >>> > >> > > > >> > >>> > >> > > > >> > hierarchyPojo = > >>> > new > >>> > >> > > > > HierarchyPojo("Animal"); > >>> > >> > > > >> > >>> > >> > > > >> > //Animal.Dog > >>> > >> > > > >> > >>> > >> > > > >> > HierarchyPojo dog > >>> > = new > >>> > >> > > > > HierarchyPojo("Dog"); > >>> > >> > > > >> > >>> > >> > > > >> > >>> > //Animal.Dog.Labrador > >>> > >> > > > >> > >>> > >> > > > >> > dog.add(new > >>> > >> > > > > >>> > HierarchyPojo("Labrador")); > >>> > >> > > > >> > >>> > >> > > > >> > //Animal.Dog.Boxer > >>> > >> > > > >> > >>> > >> > > > >> > dog.add(new > >>> > >> > > > > HierarchyPojo("Boxer")); > >>> > >> > > > >> > >>> > >> > > > >> > >>> > //Animal.Dog.Mastiff > >>> > >> > > > >> > >>> > >> > > > >> > dog.add(new > >>> > >> > > > > >>> > HierarchyPojo("Mastiff")); > >>> > >> > > > >> > >>> > >> > > > >> > //Animal.Cat > >>> > >> > > > >> > >>> > >> > > > >> > HierarchyPojo cat > >>> > = new > >>> > >> > > > > HierarchyPojo("Cat"); > >>> > >> > > > >> > >>> > >> > > > >> > //Animal.Cat.Tiger > >>> > >> > > > >> > >>> > >> > > > >> > cat.add(new > >>> > >> > > > > HierarchyPojo("Tiger")); > >>> > >> > > > >> > >>> > >> > > > >> > >>> > //Animal.Cat.Cougar > >>> > >> > > > >> > >>> > >> > > > >> > cat.add(new > >>> > >> > > > > HierarchyPojo("Cougar")); > >>> > >> > > > >> > >>> > >> > > > >> > >>> > //Animal.Cat.Leopard > >>> > >> > > > >> > >>> > >> > > > >> > cat.add(new > >>> > >> > > > > >>> > HierarchyPojo("Leopard")); > >>> > >> > > > >> > >>> > >> > > > >> > //Add Animal.Dog > >>> > & > >>> > >> > Animal.Cat > >>> > >> > > > >> > >>> > >> > > > >> > >>> > hierarchyPojo.add(dog); > >>> > >> > > > >> > >>> > >> > > > >> > >>> > hierarchyPojo.add(cat); > >>> > >> > > > >> > >>> > >> > > > >> > } > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> > public HierarchyPojo > >>> > >> > getHierarchyPojo() > >>> > >> > > > {return > hierarchyPojo;} > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> > public void > >>> > >> > > setHierarchyPojo(HierarchyPojo > >>> > >> > > > hierarchyPojo) > >>> > >> > > > >> > {this.hierarchyPojo = > >>> > hierarchyPojo;} > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> } > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> Finally > invoke and test... > >>> > >> > > > >> > >>> > >> > > > >> public > class App > >>> > >> > > > >> > >>> > >> > > > >> { > >>> > >> > > > >> > >>> > >> > > > >> > public static void > >>> > main( String[] > >>> > >> > args ) > >>> > >> > > > >> > >>> > >> > > > >> > { > >>> > >> > > > >> > >>> > >> > > > >> > JXPathContext > >>> > context = > >>> > >> > > > > JXPathContext.newContext(new > >>> > >> > > > >> > CollectionRoot()); > >>> > >> > > > >> > >>> > >> > > > >> > String query = > >>> > >> > > > > >>> > >> > > >>> > "//hierarchypo...@name='Tiger']"; > >>> > >> > > > >> > >>> > >> > > > >> > String fName = > >>> > >> > > > > context.getValue(query).toString(); > >>> > >> > > > >> > >>> > >> > > > >> > >>> > System.out.println("Ran > >>> > >> > > > '"+query+"' and > >>> > got > >>> > >> > > > > >>> > '"+fName+"'"); > >>> > >> > > > >> > >>> > >> > > > >> > } > >>> > >> > > > >> > >>> > >> > > > >> } > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> Above, > should find one > >>> > entry for > >>> > >> > > > 'name=Tiger' but > it does > >>> > not, I get an > >>> > >> > > > >> > exception. This still > >>> > doesn't seem > >>> > >> > to traverse > >>> > >> > > > the Collection > correctly. Any > >>> > >> > > > >> help > would be most > >>> > welcome. > >>> > >> > > > >> > Exception in thread > >>> > "main" > >>> > >> > > > >> > >>> > >> > > >>> > > org.apache.commons.jxpath.JXPathNotFoundException: > >>> > >> > > > No value for > xpath: > >>> > >> > > > >> > >>> > //hierarchypo...@name='Tiger'] > >>> > >> > > > >> > >>> > >> > > > >> Thanks > for reading, > >>> > >> > > > >> Andrew > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> > >>> > >> > > > >> On Mon, > Feb 9, 2009 at > >>> > 10:24 PM, Andrew > >>> > >> > Hughes > >>> > >> > > > <ahhug...@gmail.com>wrote: > >>> > >> > > > >> > >>> > >> > > > >>> > Thanks Matt - I will > >>> > test this out > >>> > >> > tomorrow > >>> > >> > > > when I am back in > the > >>> > >> > > > >>> > office... > >>> > >> > > > >>> > >>> > >> > > > >>> > Being constructive... > >>> > >> > > > >>> > Surely this should at > >>> > least be a > >>> > >> > precondition > >>> > >> > > > check and throw a > specific > >>> > >> > > > >>> > exception if it's > >>> > not supported? > >>> > >> > > > >>> > Thank You > >>> > >> > > > >>> > --Andrew > >>> > >> > > > >>> > >>> > >> > > > >>> > >>> > >> > > > >>> On > Mon, Feb 9, 2009 at > >>> > 2:27 PM, Matt > >>> > >> > Benson > >>> > >> > > > <gudnabr...@yahoo.com>wrote: > >>> > >> > > > >>> > >>> > >> > > > >>>> > >>> > >> > > > >>>> > Most likely your > >>> > problem is not > >>> > >> > with > >>> > >> > > > generics, but > simply with the fact > >>> > >> > > > >>>> > that JXPath has a > >>> > hard time > >>> > >> > using a > >>> > >> > > > collection as its > root. The > >>> > easiest > >>> > >> > > > >>>> > workaround is to > >>> > use some parent > >>> > >> > object to > >>> > >> > > > hold a reference > to your > >>> > >> > > > >>>> > container. > >>> > >> > > > >>>> > >>> > >> > > > >>>> > HTH, > >>> > >> > > > >>>> > Matt > >>> > >> > > > >>>> > >>> > >> > > > >>>> > >>> > >> > > > >>>> > --- On Sun, > >>> > 2/8/09, Andrew > >>> > >> > Hughes > >>> > >> > > > <ahhug...@gmail.com> > wrote: > >>> > >> > > > >>>> > >>> > >> > > > >>>> > > From: Andrew > >>> > Hughes > >>> > >> > > > <ahhug...@gmail.com> > >>> > >> > > > >>>> > > Subject: > >>> > JXPath over > >>> > >> > Generic > >>> > >> > > > > Collection<?>, How? > >>> > >> > > > >>>> > > To: > >>> > "Commons Users > >>> > >> > List" > >>> > >> > > > <user@commons.apache.org> > >>> > >> > > > >>>> > > Date: Sunday, > >>> > February 8, > >>> > >> > 2009, 5:09 > >>> > >> > > > PM > >>> > >> > > > >>>> > > Hi All, > >>> > >> > > > >>>> > > Hopefully the > >>> > solution is > >>> > >> > as easy as > >>> > >> > > > the question. I > would > >>> > >> > > > >>>> > > like to > >>> > perform > >>> > >> > > > >>>> > > evaluation on > >>> > a (very > >>> > >> > simple) generic > >>> > >> > > > collection... as > you > >>> > >> > > > >>>> > > can see below > >>> > >> > > > >>>> > > > >>> > (HeirarchyPojo). I should > >>> > >> > be able to > >>> > >> > > > ask for a > >>> > >> > > > >>>> > > > >>> > HeirarchyPojo's with > >>> > >> > > > >>>> > > > >>> > name='Bill' or the > >>> > >> > 3rd > >>> > >> > > > Child... The > problem is that > >>> > >> > > > >>>> > > nothing ever > >>> > evaluate on > >>> > >> > > > >>>> > > this data > >>> > structure. > >>> > >> > What's the > >>> > >> > > > deal with > Generic > >>> > >> > > > >>>> > > Collections > >>> > and JXPath? > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > p.s this is > >>> > not in the > >>> > >> > userguide and > >>> > >> > > > would be a most > >>> > >> > > > >>>> > > welcomed > >>> > addition (if > >>> > >> > > > >>>> > > we can nut > >>> > this out with > >>> > >> > your help). > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > Cheers. > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > package > >>> > xpath.and.generics; > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > import > >>> > java.util.ArrayList; > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > public class > >>> > HeirarchyPojo > >>> > >> > extends > >>> > >> > > > >>>> > > > >>> > >> > > ArrayList<HeirarchyPojo>{ > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > public > >>> > >> > HeirarchyPojo(){} > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > private > >>> > String id; > >>> > >> > > > >>>> > > private > >>> > String name; > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > public > >>> > String getId() { > >>> > >> > > > >>>> > > > >>> > return id; > >>> > >> > > > >>>> > > } > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > public > >>> > void > >>> > >> > setId(String id) { > >>> > >> > > > >>>> > > > >>> > this.id = id; > >>> > >> > > > >>>> > > } > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > public > >>> > String getName() > >>> > >> > { > >>> > >> > > > >>>> > > > >>> > return name; > >>> > >> > > > >>>> > > } > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > public > >>> > void > >>> > >> > setName(String name) > >>> > >> > > > { > >>> > >> > > > >>>> > > > >>> > this.name = name; > >>> > >> > > > >>>> > > } > >>> > >> > > > >>>> > > > >>> > >> > > > >>>> > > } > >>> > >> > > > >>>> > >>> > >> > > > >>>> > >>> > >> > > > >>>> > >>> > >> > > > >>>> > >>> > >> > > > >>>> > >>> > >> > > > > >>> > >> > > >>> > > --------------------------------------------------------------------- > >>> > >> > > > >>>> > To unsubscribe, > >>> > e-mail: > >>> > >> > > > user-unsubscr...@commons.apache.org > >>> > >> > > > >>>> > For additional > >>> > commands, e-mail: > >>> > >> > > > user-h...@commons.apache.org > >>> > >> > > > >>>> > >>> > >> > > > >>>> > >>> > >> > > > >>> > >>> > >> > > > >> > >>> > >> > > > > > >>> > >> > > > >>> > >> > > > >>> > >> > > > >>> > >> > > > >>> > >> > > > >>> > >> > > >>> > > --------------------------------------------------------------------- > >>> > >> > > To unsubscribe, > e-mail: > >>> > >> > user-unsubscr...@commons.apache.org > >>> > >> > > For additional > commands, e-mail: > >>> > >> > user-h...@commons.apache.org > >>> > >> > > > >>> > >> > > > >>> > >> > >>> > >> > >>> > >> > >>> > >> > >>> > >> > >>> > > --------------------------------------------------------------------- > >>> > >> To unsubscribe, e-mail: > >>> > user-unsubscr...@commons.apache.org > >>> > >> For additional commands, > e-mail: > >>> > user-h...@commons.apache.org > >>> > >> > >>> > >> > >>> > > > >>> > >>> > >>> > >>> > >>> > --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > >>> For additional commands, e-mail: user-h...@commons.apache.org > >>> > >>> > >> > > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org