19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/* 29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one 39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or more contributor license agreements. See the NOTICE file 49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed with this work for additional information 59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * regarding copyright ownership. The ASF licenses this file 69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to you under the Apache License, Version 2.0 (the "License"); 79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * you may not use this file except in compliance with the License. 89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * You may obtain a copy of the License at 99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Unless required by applicable law or agreed to in writing, software 139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * See the License for the specific language governing permissions and 169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * limitations under the License. 179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/* 199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * $Id: ExtensionNamespacesManager.java 469672 2006-10-31 21:56:19Z minchau $ 209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xalan.extensions; 229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.util.Vector; 249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.Constants; 269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/** 289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Used during assembly of a stylesheet to collect the information for each 299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * extension namespace that is required during the transformation process 309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to generate an {@link ExtensionHandler}. 319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic class ExtensionNamespacesManager 349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Vector of ExtensionNamespaceSupport objects to be used to generate ExtensionHandlers. 379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private Vector m_extensions = new Vector(); 399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Vector of ExtensionNamespaceSupport objects for predefined ExtensionNamespaces. Elements 419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * from this vector are added to the m_extensions vector when encountered in the stylesheet. 429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private Vector m_predefExtensions = new Vector(7); 449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Vector of extension namespaces for which sufficient information is not yet available to 469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * complete the registration process. 479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private Vector m_unregisteredExtensions = new Vector(); 499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * An ExtensionNamespacesManager is instantiated the first time an extension function or 529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * element is found in the stylesheet. During initialization, a vector of ExtensionNamespaceSupport 539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * objects is created, one for each predefined extension namespace. 549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public ExtensionNamespacesManager() 569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson setPredefinedNamespaces(); 589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * If necessary, register the extension namespace found compiling a function or 629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * creating an extension element. 639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * If it is a predefined namespace, create a 659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * support object to simplify the instantiate of an appropriate ExtensionHandler 669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * during transformation runtime. Otherwise, add the namespace, if necessary, 679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to a vector of undefined extension namespaces, to be defined later. 689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void registerExtension(String namespace) 719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (namespaceIndex(namespace, m_extensions) == -1) 739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int predef = namespaceIndex(namespace, m_predefExtensions); 759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (predef !=-1) 769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_extensions.add(m_predefExtensions.get(predef)); 779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else if (!(m_unregisteredExtensions.contains(namespace))) 789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_unregisteredExtensions.add(namespace); 799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Register the extension namespace for an ElemExtensionDecl or ElemFunction, 849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * and prepare a support object to launch the appropriate ExtensionHandler at 859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * transformation runtime. 869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void registerExtension(ExtensionNamespaceSupport extNsSpt) 889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String namespace = extNsSpt.getNamespace(); 909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (namespaceIndex(namespace, m_extensions) == -1) 919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_extensions.add(extNsSpt); 939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_unregisteredExtensions.contains(namespace)) 949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_unregisteredExtensions.remove(namespace); 959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get the index for a namespace entry in the extension namespace Vector, -1 if 1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * no such entry yet exists. 1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public int namespaceIndex(String namespace, Vector extensions) 1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson for (int i = 0; i < extensions.size(); i++) 1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (((ExtensionNamespaceSupport)extensions.get(i)).getNamespace().equals(namespace)) 1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return i; 1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return -1; 1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get the vector of extension namespaces. Used to provide 1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the extensions table access to a list of extension 1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * namespaces encountered during composition of a stylesheet. 1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public Vector getExtensions() 1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_extensions; 1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Attempt to register any unregistered extension namespaces. 1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void registerUnregisteredNamespaces() 1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson for (int i = 0; i < m_unregisteredExtensions.size(); i++) 1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String ns = (String)m_unregisteredExtensions.get(i); 1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ExtensionNamespaceSupport extNsSpt = defineJavaNamespace(ns); 1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (extNsSpt != null) 1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_extensions.add(extNsSpt); 1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * For any extension namespace that is not either predefined or defined 1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * by a "component" declaration or exslt function declaration, attempt 1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to create an ExtensionNamespaceSuport object for the appropriate 1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Java class or Java package Extension Handler. 1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Called by StylesheetRoot.recompose(), after all ElemTemplate compose() 1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * operations have taken place, in order to set up handlers for 1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the remaining extension namespaces. 1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param ns The extension namespace URI. 1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return An ExtensionNamespaceSupport object for this namespace 1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * (which defines the ExtensionHandler to be used), or null if such 1519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an object cannot be created. 1529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws javax.xml.transform.TransformerException 1549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public ExtensionNamespaceSupport defineJavaNamespace(String ns) 1569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return defineJavaNamespace(ns, ns); 1589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public ExtensionNamespaceSupport defineJavaNamespace(String ns, String classOrPackage) 1609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null == ns || ns.trim().length() == 0) // defensive. I don't think it's needed. -sb 1629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return null; 1639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Prepare the name of the actual class or package, stripping 1659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // out any leading "class:". Next, see if there is a /. If so, 1669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // only look at the text to the right of the rightmost /. 1679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String className = classOrPackage; 1689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (className.startsWith("class:")) 1699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson className = className.substring(6); 1709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int lastSlash = className.lastIndexOf("/"); 1729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (-1 != lastSlash) 1739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson className = className.substring(lastSlash + 1); 1749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // The className can be null here, and can cause an error in getClassForName 1769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // in JDK 1.8. 1779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null == className || className.trim().length() == 0) 1789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return null; 1799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 1819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ExtensionHandler.getClassForName(className); 1839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return new ExtensionNamespaceSupport( 1849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ns, 1859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson "org.apache.xalan.extensions.ExtensionHandlerJavaClass", 1869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{ns, "javaclass", className}); 1879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch (ClassNotFoundException e) 1899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return new ExtensionNamespaceSupport( 1919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ns, 1929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson "org.apache.xalan.extensions.ExtensionHandlerJavaPackage", 1939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{ns, "javapackage", className + "."}); 1949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/* 1989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public ExtensionNamespaceSupport getSupport(int index, Vector extensions) 1999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return (ExtensionNamespaceSupport)extensions.elementAt(index); 2019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson*/ 2039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Set up a Vector for predefined extension namespaces. 2079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private void setPredefinedNamespaces() 2099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String uri = Constants.S_EXTENSIONS_JAVA_URL; 2119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String handlerClassName = "org.apache.xalan.extensions.ExtensionHandlerJavaPackage"; 2129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String lang = "javapackage"; 2139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String lib = ""; 2149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXTENSIONS_OLD_JAVA_URL; 2189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXTENSIONS_LOTUSXSL_JAVA_URL; 2229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_BUILTIN_EXTENSIONS_URL; 2269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson handlerClassName = "org.apache.xalan.extensions.ExtensionHandlerJavaClass"; 2279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lang = "javaclass"; // for remaining predefined extension namespaces. 2289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.Extensions"; 2299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_BUILTIN_OLD_EXTENSIONS_URL; 2339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Xalan extension namespaces (redirect, pipe and SQL). 2379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXTENSIONS_REDIRECT_URL; 2389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.Redirect"; 2399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXTENSIONS_PIPE_URL; 2439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.PipeDocument"; 2449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXTENSIONS_SQL_URL; 2489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.sql.XConnection"; 2499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //EXSLT namespaces (not including EXSLT function namespaces which are 2549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // registered by the associated ElemFunction. 2559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXSLT_COMMON_URL; 2569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.ExsltCommon"; 2579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXSLT_MATH_URL; 2619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.ExsltMath"; 2629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXSLT_SETS_URL; 2669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.ExsltSets"; 2679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXSLT_DATETIME_URL; 2719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.ExsltDatetime"; 2729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXSLT_DYNAMIC_URL; 2769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.ExsltDynamic"; 2779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson uri = Constants.S_EXSLT_STRINGS_URL; 2819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson lib = "org.apache.xalan.lib.ExsltStrings"; 2829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_predefExtensions.add(new ExtensionNamespaceSupport(uri, handlerClassName, 2839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson new Object[]{uri, lang, lib})); 2849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson} 287