Hi,

my knowledge about extension functions for jxpath is somewhat limited. As far as I understand the topic you have to register a class with the functions at the JXPathContext object. Is this correct?

If this is true, you can easily extend XPathExpressionEngine to register your extension functions: Just derive your own engine class from XPathExpressionEngine and override the createContext() method. Here you can call the super method and obtain the context object. Then you can perform additional initializations, e.g. registering functions.

Is this what you are after?
Oliver

MASTRELLA STEFANO wrote:
Hi all,

I'm using commons-configuration with the XPathExpressionEngine installed
on a CompositeConfiguration based on an XMLConfiguration and a
PropertiesConfiguration.
I'd like to use some user defined xpath function, via implementation of
org.apache.commons.jxpath.Functions and
org.apache.commons.jxpath.Function, but doing this I need to wrap most
of the feature the Configuration implementation give to me.
I try to explain with an example.

This is the xml part of the configuration file

**********
config.xml
**********
<conf>
   <big-integer>
     <direct-link value="99887766"/>
     <indirect-link
value="resolver-ns:resolve-value(/conf/[EMAIL PROTECTED]'big-integer-link']/va
lue/@val)"/>
     <interpolated-indirect-link
value="resolver-ns:resolve-value(/conf/[EMAIL PROTECTED]'big-integer-link']/in
terpolated/@value)"/>
     <double-indirect-link
value="resolver-ns:resolve-value(/conf/[EMAIL PROTECTED]'big-integer-link']/in
direct-link/@value)"/>
     <interpolate-link value="${big-integer.value}"/>
   </big-integer>

   <link name="big-integer-link">
     <interpolated value="${big-integer.value}"/>
     <value val="1122334455"/>
     <indirect-link
value="resolver-ns:resolve-value(/conf/[EMAIL PROTECTED]'big-integer-do
uble-link']/value/@val)"/>
   </link>
</conf>

And this is the part for the properties file

*****************
config.properties
*****************

big-integer.value=9021784365

both of them are loaded within a CompositeConfiguration configured as

*****************
composite.xml
*****************

<configuration>
  <properties fileName="config.properties"/>
  <xml fileName="config.xml"/>
</configuration>

As you can see in the xml file there's a user defined xpath function
resolve-value, which is able to resolve an xpath expression and return
the value addressed.
To do this I need to extrapolate a JXPathContext from the Document of
the XMLConfiguration, but this mean to browse it without some feature
such as variable interpolation.
As a consequence I need to reimplement those sort of feature.

So the question is, is it possible to install user defined functions in
addition to an XPathExpressionEngine?

---------------------------------------------------------------------
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]

Reply via email to