Package org.apache.commons.jxpath
Class PackageFunctions
- java.lang.Object
-
- org.apache.commons.jxpath.PackageFunctions
-
- All Implemented Interfaces:
Functions
public class PackageFunctions extends java.lang.Object implements 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.- Version:
- $Revision: 670727 $ $Date: 2008-06-23 15:10:38 -0500 (Mon, 23 Jun 2008) $
- Author:
- Dmitri Plotnikov
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
classPrefix
private static java.lang.Object[]
EMPTY_ARRAY
private java.lang.String
namespace
-
Constructor Summary
Constructors Constructor Description PackageFunctions(java.lang.String classPrefix, java.lang.String namespace)
Create a new PackageFunctions.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Function
getFunction(java.lang.String namespace, java.lang.String name, java.lang.Object[] parameters)
Returns aFunction
, if found, for the specified namespace, name and parameter types.java.util.Set
getUsedNamespaces()
Returns the namespace specified in the constructor
-
-
-
Method Detail
-
getUsedNamespaces
public java.util.Set getUsedNamespaces()
Returns the namespace specified in the constructor- Specified by:
getUsedNamespaces
in interfaceFunctions
- Returns:
- (singleton) namespace Set
-
getFunction
public Function getFunction(java.lang.String namespace, java.lang.String name, java.lang.Object[] parameters)
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
-
-