I'm having a heck of a time trying to get my Java extension functions to work
in XSLTC, and think I've finally narrowed down why.
It looks to me like Java extension functions, when called from XSLTC, cannot
have ExpressionContext as the first argument. The documentation for Xalan says
they can, and I can't find any information stating that this is not the case in
XSLTC, but from my testing, and looking at the XSLTC code, it looks like that
is the case.
>From org/apache/xalan/xsltc/compiler/FunctionCall.java
if (Modifier.isPublic(mods)
&& methods[i].getName().equals(methodName)
&& methods[i].getParameterTypes().length == nArgs)
{
...
}
It seems to only check that the methods have the same number of arguments, not
that they have the same OR one extra argument, when the first argument is an
ExpressionContext.
My question is this: Is it even possible for me to modify things such that the
behavior will be the same as in regular Xalan? I'd like to know if there's
some reason it's impossible (eg. maybe XSLTC doesn't use ExpressionContext at
all) before I attempt it.