org.apache.xalan.extensions
Class  ExtensionHandlerJavaPackage
java.lang.Object
  |
  +--org.apache.xalan.extensions.ExtensionHandler
        |
        +--org.apache.xalan.extensions.ExtensionHandlerJava
              |
              +--org.apache.xalan.extensions.ExtensionHandlerJavaPackage
- public class ExtensionHandlerJavaPackage
- extends ExtensionHandlerJava
  
**For internal use only** 
 Represents an extension namespace for XPath that handles java packages
 that may be fully or partially specified.
 It is recommended that the class URI be of one of the following forms:
 
   xalan://partial.class.name
   xalan://
   http://xml.apache.org/xslt/java (which is the same as xalan://)
 
 However, we do not enforce this.  If the class name contains a
 a /, we only use the part to the right of the rightmost slash.
 In addition, we ignore any "class:" prefix.
 Provides functions to test a function's existence and call a function.
 Also provides functions to test an element's existence and call an
 element.
| 
Constructor Summary | 
ExtensionHandlerJavaPackage(java.lang.String namespaceUri,
                            java.lang.String scriptLang,
                            java.lang.String className)
 
          Construct a new extension namespace handler given all the information
 needed. | 
 
| 
Method Summary | 
 java.lang.Object | 
callFunction(java.lang.String funcName,
             java.util.Vector args,
             java.lang.Object methodKey,
             ExpressionContext exprContext)
 
          Process a call to a function in the package java namespace. | 
 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,
               Element element,
               TransformerImpl transformer,
               Stylesheet stylesheetTree,
               Node sourceTree,
               Node sourceNode,
               QName mode,
               java.lang.Object methodKey)
 
          Process a call to this extension namespace via an element. | 
 
 
| Methods inherited from class java.lang.Object | 
equals, 
getClass, 
hashCode, 
notify, 
notifyAll, 
toString, 
wait, 
wait, 
wait | 
 
ExtensionHandlerJavaPackage
public ExtensionHandlerJavaPackage(java.lang.String namespaceUri,
                                   java.lang.String scriptLang,
                                   java.lang.String className)
- Construct a new extension namespace handler given all the information
 needed.
- Parameters:
 namespaceUri - the extension namespace URI that I'm implementingscriptLang - language of code implementing the extensionclassName - the beginning of the class name of the class.  This
                     should be followed by a dot (.)
 
 
isFunctionAvailable
public boolean isFunctionAvailable(java.lang.String function)
- Tests whether a certain function name is known within this namespace.
 Since this is for a package, we concatenate the package name used when
 this handler was created and the function name specified in the argument.
 There is
 no information regarding the arguments to the function call or
 whether the method implementing the function is a static method or
 an instance method.
- Parameters:
 function - name of the function being tested- Returns:
 - true if its known, false if not.
 - Overrides:
 - isFunctionAvailable in class ExtensionHandler
 
 
 
isElementAvailable
public boolean isElementAvailable(java.lang.String element)
- Tests whether a certain element name is known within this namespace.
 Looks for a method with the appropriate name and signature.
 This method examines both static and instance methods.
- Parameters:
 function - name of the function being tested- Returns:
 - true if its known, false if not.
 - Overrides:
 - isElementAvailable in class ExtensionHandler
 
 
 
callFunction
public java.lang.Object callFunction(java.lang.String funcName,
                                     java.util.Vector args,
                                     java.lang.Object methodKey,
                                     ExpressionContext exprContext)
                              throws TransformerException
- Process a call to a function in the package java namespace.
 There are three possible types of calls:
 
   Constructor:
     packagens:class.name.new(arg1, arg2, ...)
   Static method:
     packagens:class.name.method(arg1, arg2, ...)
   Instance method:
     packagens:method(obj, arg1, arg2, ...)
 
 We use the following rules to determine the type of call made:
 
 - If the function name ends with a ".new", call the best constructor for
     class whose name is formed by concatenating the value specified on
     the namespace with the value specified in the function invocation
     before ".new".
 
 - If the function name contains a period, call the best static method "method"
     in the class whose name is formed by concatenating the value specified on
     the namespace with the value specified in the function invocation.
 
 - Otherwise, call the best instance method "method"
     in the class whose name is formed by concatenating the value specified on
     the namespace with the value specified in the function invocation.
     Note that a static method of the same
     name will not be called in the current implementation.  This
     module does not verify that the obj argument is a member of the
     package namespace.
 
 
- Parameters:
 funcName - Function name.args - The arguments of the function call.- Returns:
 - the return value of the function evaluation.
 - Throws:
 - TransformerException - if parsing trouble
 - Overrides:
 - callFunction in class ExtensionHandler
 
 
 
processElement
public void processElement(java.lang.String localPart,
                           Element element,
                           TransformerImpl transformer,
                           Stylesheet stylesheetTree,
                           Node sourceTree,
                           Node sourceNode,
                           QName mode,
                           java.lang.Object methodKey)
                    throws 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.
 For this namespace, only static element methods are currently supported.
 If instance methods are needed, please let us know your requirements.
- Parameters:
 localPart - Element name's local part.element - The extension element being processed.transformer - Handle to TransformerImpl.stylesheetTree - The compiled stylesheet tree.mode - The current mode.sourceTree - The root of the source tree (but don't assume
                       it's a Document).sourceNode - The current context node.mode - The current mode.methodKey - A key that uniquely identifies this element call.- Throws:
 - java.io.IOException - if loading trouble
- TransformerException - if parsing trouble
  - Overrides:
 - processElement in class ExtensionHandler
 
 
 
Copyright © 2000 Apache XML Project. All Rights Reserved.