14c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson/* 24c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one 34c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * or more contributor license agreements. See the NOTICE file 44c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * distributed with this work for additional information 54c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * regarding copyright ownership. The ASF licenses this file 64c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * to you under the Apache License, Version 2.0 (the "License"); 74c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * you may not use this file except in compliance with the License. 84c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * You may obtain a copy of the License at 94c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 104c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 114c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 124c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Unless required by applicable law or agreed to in writing, software 134c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 144c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 154c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * See the License for the specific language governing permissions and 164c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * limitations under the License. 174c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 184c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson/* 194c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * $Id: DTMManager.java 468653 2006-10-28 07:07:05Z minchau $ 204c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 214c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonpackage org.apache.xml.dtm; 224c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 234c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonimport org.apache.xml.res.XMLErrorResources; 244c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonimport org.apache.xml.res.XMLMessages; 254c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonimport org.apache.xml.utils.PrefixResolver; 264c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonimport org.apache.xml.utils.XMLStringFactory; 274c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 284c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson/** 294c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * A DTMManager instance can be used to create DTM and 304c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * DTMIterator objects, and manage the DTM objects in the system. 314c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 324c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <p>The system property that determines which Factory implementation 334c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * to create is named "org.apache.xml.utils.DTMFactory". This 344c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * property names a concrete subclass of the DTMFactory abstract 354c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * class. If the property is not defined, a platform default is be used.</p> 364c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 374c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <p>An instance of this class <emph>must</emph> be safe to use across 384c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * thread instances. It is expected that a client will create a single instance 394c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * of a DTMManager to use across multiple threads. This will allow sharing 404c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * of DTMs across multiple processes.</p> 414c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 424c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <p>Note: this class is incomplete right now. It will be pretty much 434c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * modeled after javax.xml.transform.TransformerFactory in terms of its 444c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * factory support.</p> 454c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 464c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <p>State: In progress!!</p> 474c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 484c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonpublic abstract class DTMManager 494c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson{ 504c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 514c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** The default property name to load the manager. */ 524c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson private static final String defaultPropName = 534c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson "org.apache.xml.dtm.DTMManager"; 544c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 554c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** The default class name to use as the manager. */ 564c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson private static String defaultClassName = 574c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson "org.apache.xml.dtm.ref.DTMManagerDefault"; 584c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 594c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 604c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Factory for creating XMLString objects. 614c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * %TBD% Make this set by the caller. 624c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 634c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson protected XMLStringFactory m_xsf = null; 644c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 654c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 664c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Default constructor is protected on purpose. 674c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 684c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson protected DTMManager(){} 694c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 704c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 714c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Get the XMLStringFactory used for the DTMs. 724c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 734c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 744c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return a valid XMLStringFactory object, or null if it hasn't been set yet. 754c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 764c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public XMLStringFactory getXMLStringFactory() 774c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 784c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson return m_xsf; 794c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 804c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 814c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 824c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Set the XMLStringFactory used for the DTMs. 834c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 844c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 854c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param xsf a valid XMLStringFactory object, should not be null. 864c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 874c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public void setXMLStringFactory(XMLStringFactory xsf) 884c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 894c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson m_xsf = xsf; 904c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 914c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 924c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 934c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Obtain a new instance of a <code>DTMManager</code>. 944c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * This static method creates a new factory instance 954c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * This method uses the following ordered lookup procedure to determine 964c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * the <code>DTMManager</code> implementation class to 974c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * load: 984c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <ul> 994c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <li> 1004c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Use the <code>org.apache.xml.dtm.DTMManager</code> system 1014c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * property. 1024c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * </li> 1034c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <li> 1044c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Use the JAVA_HOME(the parent directory where jdk is 1054c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * installed)/lib/xalan.properties for a property file that contains the 1064c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * name of the implementation class keyed on the same value as the 1074c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * system property defined above. 1084c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * </li> 1094c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <li> 1104c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Use the Services API (as detailed in the JAR specification), if 1114c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * available, to determine the classname. The Services API will look 1124c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * for a classname in the file 1134c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <code>META-INF/services/org.apache.xml.dtm.DTMManager</code> 1144c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * in jars available to the runtime. 1154c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * </li> 1164c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <li> 1174c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Use the default <code>DTMManager</code> classname, which is 1184c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <code>org.apache.xml.dtm.ref.DTMManagerDefault</code>. 1194c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * </li> 1204c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * </ul> 1214c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 1224c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Once an application has obtained a reference to a <code> 1234c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * DTMManager</code> it can use the factory to configure 1244c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * and obtain parser instances. 1254c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 1264c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return new DTMManager instance, never null. 1274c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 1284c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @throws DTMConfigurationException 1294c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * if the implementation is not available or cannot be instantiated. 1304c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 1314c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public static DTMManager newInstance(XMLStringFactory xsf) 1324c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson throws DTMConfigurationException 1334c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 1344c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson DTMManager factoryImpl = null; 1354c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson try 1364c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 1374c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson factoryImpl = (DTMManager) ObjectFactory 1384c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson .createObject(defaultPropName, defaultClassName); 1394c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 1404c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson catch (ObjectFactory.ConfigurationError e) 1414c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 1424c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson throw new DTMConfigurationException(XMLMessages.createXMLMessage( 1434c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson XMLErrorResources.ER_NO_DEFAULT_IMPL, null), e.getException()); 1444c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson //"No default implementation found"); 1454c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 1464c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 1474c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson if (factoryImpl == null) 1484c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 1494c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson throw new DTMConfigurationException(XMLMessages.createXMLMessage( 1504c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson XMLErrorResources.ER_NO_DEFAULT_IMPL, null)); 1514c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson //"No default implementation found"); 1524c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 1534c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 1544c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson factoryImpl.setXMLStringFactory(xsf); 1554c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 1564c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson return factoryImpl; 1574c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 1584c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 1594c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 1604c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Get an instance of a DTM, loaded with the content from the 1614c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * specified source. If the unique flag is true, a new instance will 1624c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * always be returned. Otherwise it is up to the DTMManager to return a 1634c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * new instance or an instance that it already created and may be being used 1644c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * by someone else. 1654c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 1664c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * (More parameters may eventually need to be added for error handling 1674c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * and entity resolution, and to better control selection of implementations.) 1684c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 1694c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param source the specification of the source object, which may be null, 1704c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * in which case it is assumed that node construction will take 1714c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * by some other means. 1724c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param unique true if the returned DTM must be unique, probably because it 1734c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * is going to be mutated. 1744c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param whiteSpaceFilter Enables filtering of whitespace nodes, and may 1754c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * be null. 1764c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param incremental true if the DTM should be built incrementally, if 1774c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * possible. 1784c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param doIndexing true if the caller considers it worth it to use 1794c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * indexing schemes. 1804c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 1814c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return a non-null DTM reference. 1824c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 1834c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract DTM getDTM(javax.xml.transform.Source source, 1844c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson boolean unique, DTMWSFilter whiteSpaceFilter, 1854c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson boolean incremental, boolean doIndexing); 1864c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 1874c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 1884c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Get the instance of DTM that "owns" a node handle. 1894c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 1904c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param nodeHandle the nodeHandle. 1914c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 1924c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return a non-null DTM reference. 1934c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 1944c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract DTM getDTM(int nodeHandle); 1954c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 1964c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 1974c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Given a W3C DOM node, try and return a DTM handle. 1984c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Note: calling this may be non-optimal. 1994c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2004c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param node Non-null reference to a DOM node. 2014c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2024c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return a valid DTM handle. 2034c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 2044c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract int getDTMHandleFromNode(org.w3c.dom.Node node); 2054c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 2064c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 2074c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Creates a DTM representing an empty <code>DocumentFragment</code> object. 2084c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return a non-null DTM reference. 2094c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 2104c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract DTM createDocumentFragment(); 2114c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 2124c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 2134c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Release a DTM either to a lru pool, or completely remove reference. 2144c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * DTMs without system IDs are always hard deleted. 2154c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * State: experimental. 2164c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2174c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param dtm The DTM to be released. 2184c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param shouldHardDelete True if the DTM should be removed no matter what. 2194c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return true if the DTM was removed, false if it was put back in a lru pool. 2204c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 2214c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract boolean release(DTM dtm, boolean shouldHardDelete); 2224c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 2234c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 2244c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Create a new <code>DTMIterator</code> based on an XPath 2254c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <a href="http://www.w3.org/TR/xpath#NT-LocationPath>LocationPath</a> or 2264c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * a <a href="http://www.w3.org/TR/xpath#NT-UnionExpr">UnionExpr</a>. 2274c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2284c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param xpathCompiler ??? Somehow we need to pass in a subpart of the 2294c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * expression. I hate to do this with strings, since the larger expression 2304c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * has already been parsed. 2314c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2324c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param pos The position in the expression. 2334c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return The newly created <code>DTMIterator</code>. 2344c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 2354c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract DTMIterator createDTMIterator(Object xpathCompiler, 2364c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson int pos); 2374c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 2384c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 2394c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Create a new <code>DTMIterator</code> based on an XPath 2404c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <a href="http://www.w3.org/TR/xpath#NT-LocationPath>LocationPath</a> or 2414c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * a <a href="http://www.w3.org/TR/xpath#NT-UnionExpr">UnionExpr</a>. 2424c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2434c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param xpathString Must be a valid string expressing a 2444c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <a href="http://www.w3.org/TR/xpath#NT-LocationPath>LocationPath</a> or 2454c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * a <a href="http://www.w3.org/TR/xpath#NT-UnionExpr">UnionExpr</a>. 2464c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2474c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param presolver An object that can resolve prefixes to namespace URLs. 2484c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2494c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return The newly created <code>DTMIterator</code>. 2504c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 2514c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract DTMIterator createDTMIterator(String xpathString, 2524c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson PrefixResolver presolver); 2534c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 2544c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 2554c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Create a new <code>DTMIterator</code> based only on a whatToShow 2564c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * and a DTMFilter. The traversal semantics are defined as the 2574c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * descendant access. 2584c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <p> 2594c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Note that DTMIterators may not be an exact match to DOM 2604c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * NodeIterators. They are initialized and used in much the same way 2614c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * as a NodeIterator, but their response to document mutation is not 2624c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * currently defined. 2634c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2644c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param whatToShow This flag specifies which node types may appear in 2654c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * the logical view of the tree presented by the iterator. See the 2664c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * description of <code>NodeFilter</code> for the set of possible 2674c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <code>SHOW_</code> values.These flags can be combined using 2684c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <code>OR</code>. 2694c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param filter The <code>NodeFilter</code> to be used with this 2704c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <code>DTMFilter</code>, or <code>null</code> to indicate no filter. 2714c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param entityReferenceExpansion The value of this flag determines 2724c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * whether entity reference nodes are expanded. 2734c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2744c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return The newly created <code>DTMIterator</code>. 2754c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 2764c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract DTMIterator createDTMIterator(int whatToShow, 2774c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson DTMFilter filter, boolean entityReferenceExpansion); 2784c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 2794c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 2804c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Create a new <code>DTMIterator</code> that holds exactly one node. 2814c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2824c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param node The node handle that the DTMIterator will iterate to. 2834c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 2844c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return The newly created <code>DTMIterator</code>. 2854c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 2864c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract DTMIterator createDTMIterator(int node); 2874c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 2884c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /* Flag indicating whether an incremental transform is desired */ 2894c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public boolean m_incremental = false; 2904c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 2914c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /* 2924c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Flag set by FEATURE_SOURCE_LOCATION. 2934c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * This feature specifies whether the transformation phase should 2944c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * keep track of line and column numbers for the input source 2954c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * document. 2964c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 2974c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public boolean m_source_location = false; 2984c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 2994c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 3004c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Get a flag indicating whether an incremental transform is desired 3014c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return incremental boolean. 3024c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 3034c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 3044c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public boolean getIncremental() 3054c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 3064c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson return m_incremental; 3074c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 3084c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3094c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 3104c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Set a flag indicating whether an incremental transform is desired 3114c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * This flag should have the same value as the FEATURE_INCREMENTAL feature 3124c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * which is set by the TransformerFactory.setAttribut() method before a 3134c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * DTMManager is created 3144c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param incremental boolean to use to set m_incremental. 3154c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 3164c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 3174c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public void setIncremental(boolean incremental) 3184c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 3194c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson m_incremental = incremental; 3204c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 3214c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3224c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 3234c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Get a flag indicating whether the transformation phase should 3244c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * keep track of line and column numbers for the input source 3254c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * document. 3264c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @return source location boolean 3274c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 3284c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 3294c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public boolean getSource_location() 3304c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 3314c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson return m_source_location; 3324c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 3334c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3344c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 3354c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Set a flag indicating whether the transformation phase should 3364c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * keep track of line and column numbers for the input source 3374c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * document. 3384c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * This flag should have the same value as the FEATURE_SOURCE_LOCATION feature 3394c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * which is set by the TransformerFactory.setAttribut() method before a 3404c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * DTMManager is created 3414c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @param sourceLocation boolean to use to set m_source_location 3424c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 3434c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public void setSource_location(boolean sourceLocation){ 3444c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson m_source_location = sourceLocation; 3454c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 3464c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3474c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3484c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson // -------------------- private methods -------------------- 3494c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3504c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 3514c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Temp debug code - this will be removed after we test everything 3524c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 3534c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson private static boolean debug; 3544c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3554c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson static 3564c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 3574c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson try 3584c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 3594c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson debug = System.getProperty("dtm.debug") != null; 3604c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 3614c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson catch (SecurityException ex){} 3624c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 3634c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3644c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** This value, set at compile time, controls how many bits of the 3654c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * DTM node identifier numbers are used to identify a node within a 3664c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * document, and thus sets the maximum number of nodes per 3674c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * document. The remaining bits are used to identify the DTM 3684c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * document which contains this node. 3694c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 3704c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * If you change IDENT_DTM_NODE_BITS, be sure to rebuild _ALL_ the 3714c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * files which use it... including the IDKey testcases. 3724c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 3734c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * (FuncGenerateKey currently uses the node identifier directly and 3744c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * thus is affected when this changes. The IDKEY results will still be 3754c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * _correct_ (presuming no other breakage), but simple equality 3764c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * comparison against the previous "golden" files will probably 3774c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * complain.) 3784c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * */ 3794c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public static final int IDENT_DTM_NODE_BITS = 16; 3804c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3814c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3824c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** When this bitmask is ANDed with a DTM node handle number, the result 3834c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * is the low bits of the node's index number within that DTM. To obtain 3844c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * the high bits, add the DTM ID portion's offset as assigned in the DTM 3854c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Manager. 3864c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 3874c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public static final int IDENT_NODE_DEFAULT = (1<<IDENT_DTM_NODE_BITS)-1; 3884c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3894c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3904c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** When this bitmask is ANDed with a DTM node handle number, the result 3914c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * is the DTM's document identity number. 3924c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 3934c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public static final int IDENT_DTM_DEFAULT = ~IDENT_NODE_DEFAULT; 3944c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 3954c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** This is the maximum number of DTMs available. The highest DTM is 3964c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * one less than this. 3974c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 3984c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public static final int IDENT_MAX_DTMS = (IDENT_DTM_DEFAULT >>> IDENT_DTM_NODE_BITS) + 1; 3994c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 4004c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 4014c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 4024c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * %TBD% Doc 4034c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 4044c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * NEEDSDOC @param dtm 4054c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 4064c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * NEEDSDOC ($objectName$) @return 4074c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 4084c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public abstract int getDTMIdentity(DTM dtm); 4094c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 4104c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 4114c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * %TBD% Doc 4124c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 4134c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * NEEDSDOC ($objectName$) @return 4144c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 4154c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public int getDTMIdentityMask() 4164c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 4174c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson return IDENT_DTM_DEFAULT; 4184c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 4194c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 4204c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson /** 4214c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * %TBD% Doc 4224c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * 4234c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * NEEDSDOC ($objectName$) @return 4244c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */ 4254c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson public int getNodeIdentityMask() 4264c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson { 4274c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson return IDENT_NODE_DEFAULT; 4284c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson } 4294c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson 4304c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson} 431