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) $
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.StringclassPrefixprivate static java.lang.Object[]EMPTY_ARRAYprivate java.lang.Stringnamespace
-
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 FunctiongetFunction(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.SetgetUsedNamespaces()Returns the namespace specified in the constructor
-
-
-
Method Detail
-
getUsedNamespaces
public java.util.Set getUsedNamespaces()
Returns the namespace specified in the constructor- Specified by:
getUsedNamespacesin 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:
getFunctionin 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
-
-