extensionnamespacesupport.java

来自「java jdk 1.4的源码」· Java 代码 · 共 85 行

JAVA
85
字号
package org.apache.xalan.extensions;import java.lang.reflect.Constructor;import javax.xml.transform.TransformerException;/** * During styleseet composition, an ExtensionNamespaceSupport object is created for each extension  * namespace the stylesheet uses. At the beginning of a transformation, TransformerImpl generates * an ExtensionHandler for each of these objects and adds an entry to the ExtensionsTable hashtable. */public class ExtensionNamespaceSupport{  // Namespace, ExtensionHandler class name, constructor signature   // and arguments.  String m_namespace = null;  String m_handlerClass = null;  Class [] m_sig = null;    Object [] m_args = null;   public ExtensionNamespaceSupport(String namespace,                                    String handlerClass,                                    Object[] constructorArgs)  {    m_namespace = namespace;    m_handlerClass = handlerClass;    m_args = constructorArgs;    // Create the constructor signature.    m_sig = new Class[m_args.length];    for (int i = 0; i < m_args.length; i++)    {      if (m_args[i] != null)        m_sig[i] = m_args[i].getClass();//System.out.println("arg class " + i + " " +m_sig[i]);      else // If an arguments is null, pick the constructor later.      {        m_sig = null;        break;      }    }  }    public String getNamespace()  {    return m_namespace;  }    /**   * Launch the ExtensionHandler that this ExtensionNamespaceSupport object defines.   */  public ExtensionHandler launch()    throws TransformerException  {    ExtensionHandler handler = null;    try    {      Class cl = ExtensionHandler.getClassForName(m_handlerClass);      Constructor con = null;      //System.out.println("class " + cl + " " + m_args + " " + m_args.length + " " + m_sig);      if (m_sig != null)        con = cl.getConstructor(m_sig);      else // Pick the constructor based on number of args.      {        Constructor[] cons = cl.getConstructors();        for (int i = 0; i < cons.length; i ++)        {          if (cons[i].getParameterTypes().length == m_args.length)          {            con = cons[i];            break;          }        }      }      // System.out.println("constructor " + con);      if (con != null)        handler = (ExtensionHandler)con.newInstance(m_args);      else        throw new TransformerException("ExtensionHandler constructor not found");    }    catch (Exception e)    {      throw new TransformerException(e);    }    return handler;  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?