[digester] Pass a static value to a CallParam rule?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[digester] Pass a static value to a CallParam rule?

Christopher Schultz-2
All,

I'd like to invoke a method on the current top-of-the-stack object and
pass a static string value to it, like this:


digester.push(new MyBean());
digester.addCallMethod("/Foo/Bar", "setAttribute", 2, new Class<?>[] {
String.class });
digester.addCallParam("/Foo/Bar", 0, "MyStaticString");
digester.addCallParam("/Foo/Bar", 1, "attrName");
digester.parse(...);

When encountering /Foo/Bar, I'd like this to be called:

myBean.setAttribute("MyStaticString", [value of attribute "attrName"])

Is that kind of thing possible?

I thought I might pull a fast one and push the value "MyStaicString"
onto the stack and call:

digester.addCallParam("/Foo/Bar", 0, true);

But I it seems I can't push a value onto the stack when a specific path
is seen: only statically at some specific point (like before parsing
begins).

Thanks,
-chris

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [digester] Pass a static value to a CallParam rule?

Christopher Schultz-2
All,

On 2/16/21 15:31, Christopher Schultz wrote:

> All,
>
> I'd like to invoke a method on the current top-of-the-stack object and
> pass a static string value to it, like this:
>
>
> digester.push(new MyBean());
> digester.addCallMethod("/Foo/Bar", "setAttribute", 2, new Class<?>[] {
> String.class });
> digester.addCallParam("/Foo/Bar", 0, "MyStaticString");
> digester.addCallParam("/Foo/Bar", 1, "attrName");
> digester.parse(...);
>
> When encountering /Foo/Bar, I'd like this to be called:
>
> myBean.setAttribute("MyStaticString", [value of attribute "attrName"])
>
> Is that kind of thing possible?
>
> I thought I might pull a fast one and push the value "MyStaicString"
> onto the stack and call:
>
> digester.addCallParam("/Foo/Bar", 0, true);
>
> But I it seems I can't push a value onto the stack when a specific path
> is seen: only statically at some specific point (like before parsing
> begins).

Konstanin Kolinko in the Tomcat-user list pointed me toward:

digester.addObjectParam("/Foo/Bar", 0, "MyStaticString");
digester.addCallParam("/Foo/Bar", 1, "attrName");

This will accomplish what I'm trying to do.

Thanks!
-chris

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]