## org.exist.xquery
Class AbstractInternalModule

    java.lang.Object
      org.exist.xquery.AbstractInternalModule

All Implemented Interfaces:
  InternalModule, Module

Direct Known Subclasses:
  ExistModule, ModuleImpl, RequestModule, ResponseModule, SessionModule, SystemModule, TextModule, TransformModule, UtilModule, ValidationModule, XMLDBModule

public abstract class AbstractInternalModule
extends java.lang.Object
implements InternalModule

Abstract base class for an `InternalModule`. Functions are defined in an array of `FunctionDef`, which is passed to the constructor. A single implementation class can be registered for more than one function signature, given that the signatures differ in name or the number of expected arguments. It is thus possible to implement similar XQuery functions in one single class.

Author:
  Wolfgang Meier (wolfgang@exist-db.org)

Field Summary

Fields inherited from interface org.exist.xquery.Module
`REQUEST_FUNCTION_NS, RESPONSE_FUNCTION_NS, SESSION_FUNCTION_NS, SYSTEM_FUNCTION_NS, TEXT_FUNCTION_NS, TRANSFORM_FUNCTION_NS, UTIL_FUNCTION_NS, XMLDB_FUNCTION_NS`

Constructor Summary
`AbstractInternalModule(FunctionDef[] functions)`

Method Summary
`Variable` `declareVariable(QName qname, java.lang.Object value)`
`Variable` `declareVariable(Variable var)`
`abstract java.lang.String` `getDefaultPrefix()` Returns an optional default prefix (used if no prefix is supplied with the "import module" directive).
`FunctionDef` `getFunctionDef(QName qname, int arity)` Returns the implementing class for the function identified by qname or null if it is not defined.
`java.util.List` `getFunctionsByName(QName qname)` Returns all functions defined in this module matching the specified qname.
`abstract java.lang.String` `getNamespaceURI()` Returns the namespace URI that uniquely identifies this module.
`java.util.Iterator` `getSignaturesForFunction(QName qname)` Try to find the signature of the function identified by its QName.
`boolean` `isInternalModule()` Is this an internal module?
`boolean` `isVarDeclared(QName qname)`
`FunctionSignature[]` `listFunctions()` Returns the signatures of all functions defined within this module.
`void` `reset()` Reset the module's internal state for being reused.
`Variable` `resolveVariable(QName qname)`

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

Methods inherited from interface org.exist.xquery.Module
`getDescription`

Constructor Detail

### AbstractInternalModule

    public AbstractInternalModule(FunctionDef[] functions)

Method Detail

### isInternalModule

    public boolean isInternalModule()

  Description copied from interface: `Module`
  Is this an internal module?

  Specified by:
    `isInternalModule` in interface `Module`
  Returns:
    True if is internal module.

### getNamespaceURI

    public abstract java.lang.String getNamespaceURI()

  Description copied from interface: `Module`
  Returns the namespace URI that uniquely identifies this module.

  Specified by:
    `getNamespaceURI` in interface `Module`
  Returns:
    namespace URI

### getDefaultPrefix

    public abstract java.lang.String getDefaultPrefix()

  Description copied from interface: `Module`
  Returns an optional default prefix (used if no prefix is supplied with the "import module" directive).

  Specified by:
    `getDefaultPrefix` in interface `Module`
  Returns:
    optional default prefix

### listFunctions

    public FunctionSignature[] listFunctions()

  Description copied from interface: `Module`
  Returns the signatures of all functions defined within this module.

  Specified by:
    `listFunctions` in interface `Module`
  Returns:
    signatures of all functions

### getSignaturesForFunction

    public java.util.Iterator getSignaturesForFunction(QName qname)

  Description copied from interface: `Module`
  Try to find the signature of the function identified by its QName.

  Specified by:
    `getSignaturesForFunction` in interface `Module`
  Parameters:
    `qname` -
  Returns:
    the function signature or null if the function is not defined.

### getFunctionDef

    public FunctionDef getFunctionDef(QName qname,
                                      int arity)

  Description copied from interface: `InternalModule`
  Returns the implementing class for the function identified by qname or null if it is not defined. Called by `FunctionFactory`.

  Specified by:
    `getFunctionDef` in interface `InternalModule`
  Parameters:
    `qname` -
  Returns:
    implementing class for the function

### getFunctionsByName

    public java.util.List getFunctionsByName(QName qname)

  Description copied from interface: `InternalModule`
  Returns all functions defined in this module matching the specified qname.

  Specified by:
    `getFunctionsByName` in interface `InternalModule`
  Parameters:
    `qname` -
  Returns:
    all functions defined in this module

### declareVariable

    public Variable declareVariable(QName qname,
                                    java.lang.Object value)
                             throws XPathException

  Specified by:
    `declareVariable` in interface `Module`
  Throws:
    `XPathException`

### declareVariable

    public Variable declareVariable(Variable var)

  Specified by:
    `declareVariable` in interface `Module`

### resolveVariable

    public Variable resolveVariable(QName qname)
                             throws XPathException

  Specified by:
    `resolveVariable` in interface `Module`
  Throws:
    `XPathException`

### isVarDeclared

    public boolean isVarDeclared(QName qname)

  Specified by:
    `isVarDeclared` in interface `Module`

### reset

    public void reset()

  Description copied from interface: `Module`
  Reset the module's internal state for being reused.

  Specified by:
    `reset` in interface `Module`

Copyright (C) Wolfgang Meier. All rights reserved.