Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.commons.jxpath
Class PackageFunctions

    java.lang.Object
      org.apache.commons.jxpath.PackageFunctions

All Implemented Interfaces:
  Functions

    public class PackageFunctions

extends 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:

>          new PackageFunctions("java.util.", "util")

We can now use XPaths like:

`"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

Constructor Summary
`PackageFunctions(String classPrefix, String namespace)` Create a new PackageFunctions.

Method Summary
`Function` | `getFunction(String namespace, String name, Object[] parameters)` Returns a `Function`, if found, for the specified namespace, name and parameter types.
`Set` | `getUsedNamespaces()` Returns the namespace specified in the constructor

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### PackageFunctions

    public PackageFunctions(String classPrefix,
                            String namespace)

  Create a new PackageFunctions.

  Parameters:
    `classPrefix` - class prefix
    `namespace` - namespace String

Method Detail

### getUsedNamespaces

    public Set getUsedNamespaces()

  Returns the namespace specified in the constructor

  Specified by:
    `getUsedNamespaces` in interface `Functions`
  Returns:
    (singleton) namespace Set

### getFunction

    public Function getFunction(String namespace,
                                String name,
                                Object[] parameters)

  Returns a `Function`, if found, for the specified namespace, name and parameter types.

  Specified by:
    `getFunction` in interface `Functions`
  Parameters:
    `namespace` - - if it is not the same as specified in the construction, this method returns null
    `name` - - 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

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001-2008 The Apache Software Foundation. All Rights Reserved.