org.apache.xalan.extensions
Class ExtensionHandler

java.lang.Object
  extended by org.apache.xalan.extensions.ExtensionHandler
Direct Known Subclasses:
ExtensionHandlerExsltFunction, ExtensionHandlerGeneral, ExtensionHandlerJava

public abstract class ExtensionHandler
extends java.lang.Object

Abstract base class for handling an extension namespace for XPath. Provides functions to test a function's existence and call a function. Also provides functions for calling an element and testing for an element's existence.


Field Summary
protected  java.lang.String m_namespaceUri
          uri of the extension namespace
protected  java.lang.String m_scriptLang
          scripting language of implementation
 
Constructor Summary
protected ExtensionHandler(java.lang.String namespaceUri, java.lang.String scriptLang)
          Construct a new extension namespace handler given all the information needed.
 
Method Summary
abstract  java.lang.Object callFunction(FuncExtFunction extFunction, java.util.Vector args, ExpressionContext exprContext)
          Process a call to a function.
abstract  java.lang.Object callFunction(java.lang.String funcName, java.util.Vector args, java.lang.Object methodKey, ExpressionContext exprContext)
          Process a call to a function.
(package private) static java.lang.Class getClassForName(java.lang.String className)
          This method loads a class using the context class loader if we're running under Java2 or higher.
abstract  boolean isElementAvailable(java.lang.String element)
          Tests whether a certain element name is known within this namespace.
abstract  boolean isFunctionAvailable(java.lang.String function)
          Tests whether a certain function name is known within this namespace.
abstract  void processElement(java.lang.String localPart, ElemTemplateElement element, TransformerImpl transformer, Stylesheet stylesheetTree, java.lang.Object methodKey)
          Process a call to this extension namespace via an element.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_namespaceUri

protected java.lang.String m_namespaceUri
uri of the extension namespace


m_scriptLang

protected java.lang.String m_scriptLang
scripting language of implementation

Constructor Detail

ExtensionHandler

protected ExtensionHandler(java.lang.String namespaceUri,
                           java.lang.String scriptLang)
Construct a new extension namespace handler given all the information needed.

Parameters:
namespaceUri - the extension namespace URI that I'm implementing
scriptLang - language of code implementing the extension
Method Detail

getClassForName

static java.lang.Class getClassForName(java.lang.String className)
                                throws java.lang.ClassNotFoundException
This method loads a class using the context class loader if we're running under Java2 or higher.

Parameters:
className - Name of the class to load
Throws:
java.lang.ClassNotFoundException

isFunctionAvailable

public abstract boolean isFunctionAvailable(java.lang.String function)
Tests whether a certain function name is known within this namespace.

Parameters:
function - name of the function being tested
Returns:
true if its known, false if not.

isElementAvailable

public abstract boolean isElementAvailable(java.lang.String element)
Tests whether a certain element name is known within this namespace.

Parameters:
element - Name of element to check
Returns:
true if its known, false if not.

callFunction

public abstract java.lang.Object callFunction(java.lang.String funcName,
                                              java.util.Vector args,
                                              java.lang.Object methodKey,
                                              ExpressionContext exprContext)
                                       throws javax.xml.transform.TransformerException
Process a call to a function.

Parameters:
funcName - Function name.
args - The arguments of the function call.
methodKey - A key that uniquely identifies this class and method call.
exprContext - The context in which this expression is being executed.
Returns:
the return value of the function evaluation.
Throws:
javax.xml.transform.TransformerException - if parsing trouble

callFunction

public abstract java.lang.Object callFunction(FuncExtFunction extFunction,
                                              java.util.Vector args,
                                              ExpressionContext exprContext)
                                       throws javax.xml.transform.TransformerException
Process a call to a function.

Parameters:
extFunction - The XPath extension function.
args - The arguments of the function call.
exprContext - The context in which this expression is being executed.
Returns:
the return value of the function evaluation.
Throws:
javax.xml.transform.TransformerException - if parsing trouble

processElement

public abstract void processElement(java.lang.String localPart,
                                    ElemTemplateElement element,
                                    TransformerImpl transformer,
                                    Stylesheet stylesheetTree,
                                    java.lang.Object methodKey)
                             throws javax.xml.transform.TransformerException,
                                    java.io.IOException
Process a call to this extension namespace via an element. As a side effect, the results are sent to the TransformerImpl's result tree.

Parameters:
localPart - Element name's local part.
element - The extension element being processed.
transformer - Handle to TransformerImpl.
stylesheetTree - The compiled stylesheet tree.
methodKey - A key that uniquely identifies this class and method call.
Throws:
XSLProcessorException - thrown if something goes wrong while running the extension handler.
MalformedURLException - if loading trouble
FileNotFoundException - if loading trouble
java.io.IOException - if loading trouble
javax.xml.transform.TransformerException - if parsing trouble