org.apache.xalan.extensions
Class ExtensionHandlerGeneral

java.lang.Object
  extended by org.apache.xalan.extensions.ExtensionHandler
      extended by org.apache.xalan.extensions.ExtensionHandlerGeneral

public class ExtensionHandlerGeneral
extends ExtensionHandler

Class handling an extension namespace for XPath. Provides functions to test a function's existence and call a function


Field Summary
private static java.lang.String BSF_MANAGER
          BSFManager package name
private static java.lang.String DEFAULT_BSF_MANAGER
          Default BSFManager name
private  java.util.Hashtable m_elements
          elements of namespace
private  java.lang.Object m_engine
          BSF manager used to run scripts
private  java.lang.reflect.Method m_engineCall
          Engine call to invoke scripts
private  java.util.Hashtable m_functions
          functions of namespace
private  java.lang.String m_scriptSrc
          script source to run (if any)
private  java.lang.String m_scriptSrcURL
          URL of source of script (if any)
private static java.lang.String propName
          Property name to load the BSFManager class
private static java.lang.Integer ZEROINT
          Integer Zero
 
Fields inherited from class org.apache.xalan.extensions.ExtensionHandler
m_namespaceUri, m_scriptLang
 
Constructor Summary
ExtensionHandlerGeneral(java.lang.String namespaceUri, StringVector elemNames, StringVector funcNames, java.lang.String scriptLang, java.lang.String scriptSrcURL, java.lang.String scriptSrc, java.lang.String systemId)
          Construct a new extension namespace handler given all the information needed.
 
Method Summary
 java.lang.Object callFunction(FuncExtFunction extFunction, java.util.Vector args, ExpressionContext exprContext)
          Process a call to an XPath extension function
 java.lang.Object callFunction(java.lang.String funcName, java.util.Vector args, java.lang.Object methodKey, ExpressionContext exprContext)
          Process a call to a function.
 boolean isElementAvailable(java.lang.String element)
          Tests whether a certain element name is known within this namespace.
 boolean isFunctionAvailable(java.lang.String function)
          Tests whether a certain function name is known within this namespace.
 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 org.apache.xalan.extensions.ExtensionHandler
getClassForName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_scriptSrc

private java.lang.String m_scriptSrc
script source to run (if any)


m_scriptSrcURL

private java.lang.String m_scriptSrcURL
URL of source of script (if any)


m_functions

private java.util.Hashtable m_functions
functions of namespace


m_elements

private java.util.Hashtable m_elements
elements of namespace


m_engine

private java.lang.Object m_engine
BSF manager used to run scripts


m_engineCall

private java.lang.reflect.Method m_engineCall
Engine call to invoke scripts


BSF_MANAGER

private static java.lang.String BSF_MANAGER
BSFManager package name


DEFAULT_BSF_MANAGER

private static final java.lang.String DEFAULT_BSF_MANAGER
Default BSFManager name

See Also:
Constant Field Values

propName

private static final java.lang.String propName
Property name to load the BSFManager class

See Also:
Constant Field Values

ZEROINT

private static final java.lang.Integer ZEROINT
Integer Zero

Constructor Detail

ExtensionHandlerGeneral

public ExtensionHandlerGeneral(java.lang.String namespaceUri,
                               StringVector elemNames,
                               StringVector funcNames,
                               java.lang.String scriptLang,
                               java.lang.String scriptSrcURL,
                               java.lang.String scriptSrc,
                               java.lang.String systemId)
                        throws javax.xml.transform.TransformerException
Construct a new extension namespace handler given all the information needed.

Parameters:
namespaceUri - the extension namespace URI that I'm implementing
elemNames - Vector of element names
funcNames - string containing list of functions of extension NS
scriptLang - Scripting language of implementation
scriptSrcURL - URL of source script
scriptSrc - the actual script code (if any)
systemId -
Throws:
javax.xml.transform.TransformerException
Method Detail

isFunctionAvailable

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

Specified by:
isFunctionAvailable in class ExtensionHandler
Parameters:
function - name of the function being tested
Returns:
true if its known, false if not.

isElementAvailable

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

Specified by:
isElementAvailable in class ExtensionHandler
Parameters:
element - name of the element being tested
Returns:
true if its known, false if not.

callFunction

public 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.

Specified by:
callFunction in class ExtensionHandler
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 java.lang.Object callFunction(FuncExtFunction extFunction,
                                     java.util.Vector args,
                                     ExpressionContext exprContext)
                              throws javax.xml.transform.TransformerException
Process a call to an XPath extension function

Specified by:
callFunction in class ExtensionHandler
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

processElement

public 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.

Specified by:
processElement in class ExtensionHandler
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