org.apache.xalan.extensions
Class ExtensionHandlerGeneral

java.lang.Object
  extended byorg.apache.xalan.extensions.ExtensionHandler
      extended byorg.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

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

Field Summary
private static String BSF_ENGINE
          BSFEngine package name
private static String BSF_MANAGER
          BSFManager package name
private static Method engineCall
          Engine call to invoke scripts
private static Method engineExec
          Engine call to "compile" scripts
private  Hashtable m_elements
          elements of namespace
private  Object m_engine
          BSF manager used to run scripts
private  Hashtable m_functions
          functions of namespace
private  Object m_mgr
          Instance of Manager class
private  String m_scriptSrc
          script source to run (if any)
private  String m_scriptSrcURL
          URL of source of script (if any)
private static Class managerClass
          Manager class
private static Method mgrLoadScriptingEngine
          Manager load scripting engine
private static Integer NEG1INT
          Negative one integer
 
Fields inherited from class org.apache.xalan.extensions.ExtensionHandler
m_namespaceUri, m_scriptLang
 
Constructor Summary
ExtensionHandlerGeneral(String namespaceUri, StringVector elemNames, StringVector funcNames, String scriptLang, String scriptSrcURL, String scriptSrc, String systemId)
          Construct a new extension namespace handler given all the information needed.
 
Method Summary
 Object callFunction(String funcName, Vector args, Object methodKey, ExpressionContext exprContext)
          Process a call to a function.
 boolean isElementAvailable(String element)
          Tests whether a certain element name is known within this namespace.
 boolean isFunctionAvailable(String function)
          Tests whether a certain function name is known within this namespace.
 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 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 String m_scriptSrc
script source to run (if any)


m_scriptSrcURL

private String m_scriptSrcURL
URL of source of script (if any)


m_functions

private Hashtable m_functions
functions of namespace


m_elements

private Hashtable m_elements
elements of namespace


m_mgr

private Object m_mgr
Instance of Manager class


m_engine

private Object m_engine
BSF manager used to run scripts


BSF_MANAGER

private static final String BSF_MANAGER
BSFManager package name

See Also:
Constant Field Values

managerClass

private static Class managerClass
Manager class


mgrLoadScriptingEngine

private static Method mgrLoadScriptingEngine
Manager load scripting engine


BSF_ENGINE

private static final String BSF_ENGINE
BSFEngine package name

See Also:
Constant Field Values

engineExec

private static Method engineExec
Engine call to "compile" scripts


engineCall

private static Method engineCall
Engine call to invoke scripts


NEG1INT

private static final Integer NEG1INT
Negative one integer

Constructor Detail

ExtensionHandlerGeneral

public ExtensionHandlerGeneral(String namespaceUri,
                               StringVector elemNames,
                               StringVector funcNames,
                               String scriptLang,
                               String scriptSrcURL,
                               String scriptSrc,
                               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)
Throws:
javax.xml.transform.TransformerException
Method Detail

isFunctionAvailable

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

processElement

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

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
IOException - if loading trouble
javax.xml.transform.TransformerException - if parsing trouble