I ran into the same problem when handling a geometry literal. How is a developer supposed to know that the call to accept needs to include an extraData parameter of Geometry.class in this case?
Farber, Saul (ENV) wrote: > Rob, > > Yeah, cory's right. The 'extraData' object in the FilterVisitor interface is > a 'utility' object. Often when passing things around a filter visitor, you > want to pass along something else. An output stream to write output to, some > 'class context', or a stateful tracker of some sort. > > In the specific case of the FilterToSQL class, in *most* cases the extraData > object is null. However, in the very specific case of resolving a Literal, > the parent operator (the one that's 'doing the comparison' as it were) needs > to tell the Literal exactly how it's going to be interpreted. > > For example: > > <PropertyIsEqualTo> > <PropertyName>NAME</PropertyName> > <Literal>123</Literal> > </PropertyIsEqualTo> > > Should the comparison function treat 123 as a number or as a string? Well, > what are we comparing it to? > > The FilterToSQL class, when encountering this bit of filter, first visit the > PropertyIsEqualTo node, notes that one or the other of the children is a > Literal, and then decides that it must tell the code that's encoding the > literal how the literal will be expected to behave (as a number or string). > So it figures the class of the referenced property (NAME in this case) by > doing some FeatureType manipulation, and then passes that class to the > visit() method which goes to visit the literal. > > > Sorry if that explanation was overkill. > > You asked "is there some general documentation about the extradata parameter > in the FilterVisitor interface?" > > The reason there's isn't much that's useful is that it's a pretty general > mechanism, that's meant to be abused by whichever particular algorithm > decides to implement FilterVisitor. > > --saul > > > -----Original Message----- > From: [EMAIL PROTECTED] on behalf of Cory Horner > Sent: Thu 4/5/2007 11:20 AM > To: geotools list > Cc: Rob Atkinson > Subject: Re: [Geotools-devel] Implementing GeoAPI FilterVisitor (FilterToSQL) > > Rob Atkinson wrote: > >> in FilterToSQL >> >> public Object visit(Literal expression, Object context) throws >> Class target = (Class)context; >> > > If I remember correctly, the context (extraData) parameter is optional > and is basically whatever you want it to be. A null/instanceof check > should do the trick, unless the visitor really should blow chunks if it > doesn't have a context. > > Cory. > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Geotools-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/geotools-devel > > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Geotools-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/geotools-devel > ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Geotools-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geotools-devel
