Package org.apache.commons.jxpath
Class PackageFunctions
java.lang.Object
org.apache.commons.jxpath.PackageFunctions
- All Implemented Interfaces:
Functions
Extension functions provided by Java classes. The class prefix specified in the constructor is used when a constructor or a static method is called. Usually,
a class prefix is a package name (hence the name of this class).
Let's say, we declared a PackageFunction like this:
We can now use XPaths like:new PackageFunctions("java.util.", "util")
"util:Date.new()"
- Equivalent to
new java.util.Date()
"util:Collections.singleton('foo')"
- Equivalent to
java.util.Collections.singleton("foo")
"util:substring('foo', 1, 2)"
- Equivalent to
"foo".substring(1, 2)
. Note that in this case, the class prefix is not used. JXPath does not check that the first parameter of the function (the method target) is in fact a member of the package described by this PackageFunctions object.
If the first argument of a method or constructor is ExpressionContext
, the expression context in which the function is evaluated is passed to the
method.
There is one PackageFunctions object registered by default with each JXPathContext. It does not have a namespace and uses no class prefix. The existence of
this object allows us to use XPaths like: "java.util.Date.new()"
and "length('foo')"
without the explicit registration of any extension
functions.
-
Constructor Summary
ConstructorsConstructorDescriptionPackageFunctions
(String classPrefix, String namespace) Constructs a new PackageFunctions. -
Method Summary
Modifier and TypeMethodDescriptiongetFunction
(String namespace, String name, Object[] parameters) Returns aFunction
, if found, for the specified namespace, name and parameter types.Returns the namespace specified in the constructor
-
Constructor Details
-
PackageFunctions
Constructs a new PackageFunctions.- Parameters:
classPrefix
- class prefixnamespace
- namespace String
-
-
Method Details
-
getFunction
Returns aFunction
, if found, for the specified namespace, name and parameter types.- Specified by:
getFunction
in interfaceFunctions
- Parameters:
namespace
- - if it is not the same as specified in the construction, this method returns nullname
- - name of the method, which can one these forms:- methodname, if invoking a method on an object passed as the first parameter
- Classname.new, if looking for a constructor
- subpackage.subpackage.Classname.new, if looking for a constructor in a subpackage
- Classname.methodname, if looking for a static method
- subpackage.subpackage.Classname.methodname, if looking for a static method of a class in a subpackage
parameters
- Object[] of parameters- Returns:
- a MethodFunction, a ConstructorFunction or null if no function is found
-
getUsedNamespaces
Returns the namespace specified in the constructor- Specified by:
getUsedNamespaces
in interfaceFunctions
- Returns:
- (singleton) namespace Set
-