org.apache.xalan.extensions
Class ExtensionHandler

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

public abstract class ExtensionHandler
extends 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.

Author:
Sanjiva Weerawarana (sanjiva@watson.ibm.com)

Field Summary
private static Method getCCL
          the Method object for getContextClassLoader
protected  String m_namespaceUri
          uri of the extension namespace
protected  String m_scriptLang
          scripting language of implementation
private static Object[] NO_OBJS
          a zero length Object array used in getClassForName()
 
Constructor Summary
protected ExtensionHandler(String namespaceUri, String scriptLang)
          Construct a new extension namespace handler given all the information needed.
 
Method Summary
abstract  Object callFunction(String funcName, Vector args, Object methodKey, ExpressionContext exprContext)
          Process a call to a function.
static Class getClassForName(String className)
          Replacement for Class.forName.
abstract  boolean isElementAvailable(String element)
          Tests whether a certain element name is known within this namespace.
abstract  boolean isFunctionAvailable(String function)
          Tests whether a certain function name is known within this namespace.
abstract  void processElement(String localPart, ElemTemplateElement element, TransformerImpl transformer, Stylesheet stylesheetTree, 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 String m_namespaceUri
uri of the extension namespace


m_scriptLang

protected String m_scriptLang
scripting language of implementation


NO_OBJS

private static final Object[] NO_OBJS
a zero length Object array used in getClassForName()


getCCL

private static Method getCCL
the Method object for getContextClassLoader

Constructor Detail

ExtensionHandler

protected ExtensionHandler(String namespaceUri,
                           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

public static Class getClassForName(String className)
                             throws ClassNotFoundException
Replacement for Class.forName. This method loads a class using the context class loader if we're running under Java2 or higher. If we're running under Java1, this method just uses Class.forName to load the class.

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

isFunctionAvailable

public abstract boolean isFunctionAvailable(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(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 Object callFunction(String funcName,
                                    Vector args,
                                    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

processElement

public abstract void processElement(String localPart,
                                    ElemTemplateElement element,
                                    TransformerImpl transformer,
                                    Stylesheet stylesheetTree,
                                    Object methodKey)
                             throws javax.xml.transform.TransformerException,
                                    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
IOException - if loading trouble
javax.xml.transform.TransformerException - if parsing trouble