Steve,
If I understand you correctly, Dmitri's suggestion should work perfectly for
you. The Variables interface contains a method called "getVariable"; in
your case you would implement it to fetch objects out of this map based on
their name. For instance, in response to a call to
<your variables impl>.getVariable("Var1")
You could simply return the value of Var1 (instead of a Map which the user
would have to further dereference).
Ed
> -----Original Message-----
> From: Steve Pannier [mailto:[EMAIL PROTECTED]
> Sent: Monday, February 24, 2003 11:55 AM
> To: Jakarta Commons Users List
> Subject: Re: [JXPath] Use of contexts/variables
>
>
>
> Dmitri,
>
> I'm not clear on how implementing the Variables interface
> can help us.
>
> I'm not sure I explained our situation well enough. The data
> map we keep for our variables has a top level element whose
> key is the variable name. For example, if the user's variable
> name is "Var1", then the top level element of that variable's
> data map is "Var1" also. Since we need to allow access to
> any number of the user's variables in a single xpath expression,
> we decided to define each of their variables as JXPath
> variables, and add them to a NULL root context. This is why
> the user must use $Var1/Var1/...." in their expression (the
> 1st "Var1" being the JXPath variable name, the 2nd one
> being the top level element of the map). We would like them
> to only have to enter "$Var1" (or "/Var1") in their expression
> to reference everything below the top level element of the
> variable's data map. That's why I was thinking we would
> need to pre-parse the expression itself and add in the "/Var1"
> for access to the top level element of the variable's map. We
> do need them to specify the "Var1" in the expression so we
> know which variable's map they are referring to (their
> variables may contain like-named sub elements so we
> need a way to avoid name collisions - for example, we need
> to be able to differentiate between "Var1/count" and
> "Var2/count").
>
> If necessary, we can modify the JXPath code itself to implement
> this, but I was hoping there would be another way. I've tried
> playing around with nested contexts, but with no luck so far.
>
> Anyway, I hope this is explains things better. Let me know
> if implementing the Variables interface is still the way to
> accomplish this.
>
> Regards.
>
>
> Steve Pannier
> Jacada, Inc.
> (763) 201-0002 Ext. 219
> [EMAIL PROTECTED]
> http://www.jacada.com
>
>
> > Steve,
> >
> > This is an easy one. In JXPath Variables is an interface - you are
> > free to provide your own implementation and install it on
> JXPathContext
> > by calling context.setVariables(). It is a very simple
> interface and
> > you won't have any trouble meeting your requirement.
> >
> > I hope this helps.
> >
> > - Dmitri
> >
> >
> > --- Steve Pannier <[EMAIL PROTECTED]> wrote:
> > > Dmitri,
> > >
> > > Here's a new question for you.
> > >
> > > Our product allows the user to include any number of
> > > "variables" in their xpath expression. These are not
> > > xpath variables, but rather variables they define in our
> > > design time framework. The user is free to define the
> > > type for each variable, and they can define structure
> > > types. Each variable's data is contained in a Map
> > > hidden in a subclass of the variable. Now, when they
> > > provide an xpath expression, we allow them to include
> > > any number of these variables they choose to. So, in
> > > order to allow us to evaluate these expressions without
> > > having to first parse the expression, we decided to create
> > > a root context of NULL, and then add each variable's
> > > data map to the context as an xpath variable. The result
> > > of this is, if the user has a variable named "Var1", they
> > > must reference it in their expression as "$Var1/Var1".
> > >
> > > We would rather the user not have to use this syntax in
> > > expressions for referencing variables. We are talking
> > > about allowing them to simply use "$Var1" in their
> > > expression. Then before evaluating the expression we
> > > would substitute the "$Var1" with "$Var1/Var1". This
> > > would require us to either write our own pre-parser, or
> > > somehow make use of JXPath code to do this. But, I'm
> > > curious if there's any other way to attack this. Maybe
> > > by defining the context differently. Any ideas?
> > >
> > > Let me know if the above explanation of what we're
> > > trying to do is not clear.
> > >
> > >
> > > Steve Pannier
> > > Jacada, Inc.
> > > (763) 201-0002 Ext. 219
> > > [EMAIL PROTECTED]
> > > http://www.jacada.com
> > >
> > >
> > >
> > >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> > > For additional commands, e-mail:
> [EMAIL PROTECTED]
> > >
> >
> >
> > __________________________________________________
> > Do you Yahoo!?
> > Yahoo! Tax Center - forms, calculators, tips, more
> > http://taxes.yahoo.com/
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail:
> [EMAIL PROTECTED]
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]