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: DTMManager.java 468653 2006-10-28 07:07:05Z minchau $ 209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xml.dtm; 229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.res.XMLErrorResources; 249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.res.XMLMessages; 259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.utils.PrefixResolver; 269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.utils.XMLStringFactory; 279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/** 299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * A DTMManager instance can be used to create DTM and 309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * DTMIterator objects, and manage the DTM objects in the system. 319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>The system property that determines which Factory implementation 339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to create is named "org.apache.xml.utils.DTMFactory". This 349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * property names a concrete subclass of the DTMFactory abstract 359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * class. If the property is not defined, a platform default is be used.</p> 369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>An instance of this class <emph>must</emph> be safe to use across 389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * thread instances. It is expected that a client will create a single instance 399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * of a DTMManager to use across multiple threads. This will allow sharing 409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * of DTMs across multiple processes.</p> 419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>Note: this class is incomplete right now. It will be pretty much 439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * modeled after javax.xml.transform.TransformerFactory in terms of its 449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * factory support.</p> 459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>State: In progress!!</p> 479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic abstract class DTMManager 499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The default property name to load the manager. */ 529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private static final String defaultPropName = 539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson "org.apache.xml.dtm.DTMManager"; 549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The default class name to use as the manager. */ 569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private static String defaultClassName = 579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson "org.apache.xml.dtm.ref.DTMManagerDefault"; 589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Factory for creating XMLString objects. 619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * %TBD% Make this set by the caller. 629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected XMLStringFactory m_xsf = null; 649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Default constructor is protected on purpose. 679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected DTMManager(){} 699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get the XMLStringFactory used for the DTMs. 729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return a valid XMLStringFactory object, or null if it hasn't been set yet. 759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public XMLStringFactory getXMLStringFactory() 779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_xsf; 799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Set the XMLStringFactory used for the DTMs. 839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param xsf a valid XMLStringFactory object, should not be null. 869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setXMLStringFactory(XMLStringFactory xsf) 889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_xsf = xsf; 909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Obtain a new instance of a <code>DTMManager</code>. 949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This static method creates a new factory instance 959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This method uses the following ordered lookup procedure to determine 969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the <code>DTMManager</code> implementation class to 979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * load: 989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <ul> 999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <li> 1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Use the <code>org.apache.xml.dtm.DTMManager</code> system 1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * property. 1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * </li> 1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <li> 1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Use the JAVA_HOME(the parent directory where jdk is 1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * installed)/lib/xalan.properties for a property file that contains the 1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * name of the implementation class keyed on the same value as the 1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * system property defined above. 1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * </li> 1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <li> 1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Use the Services API (as detailed in the JAR specification), if 1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * available, to determine the classname. The Services API will look 1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * for a classname in the file 1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <code>META-INF/services/org.apache.xml.dtm.DTMManager</code> 1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * in jars available to the runtime. 1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * </li> 1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <li> 1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Use the default <code>DTMManager</code> classname, which is 1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <code>org.apache.xml.dtm.ref.DTMManagerDefault</code>. 1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * </li> 1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * </ul> 1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Once an application has obtained a reference to a <code> 1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * DTMManager</code> it can use the factory to configure 1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * and obtain parser instances. 1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return new DTMManager instance, never null. 1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws DTMConfigurationException 1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * if the implementation is not available or cannot be instantiated. 1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public static DTMManager newInstance(XMLStringFactory xsf) 1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws DTMConfigurationException 1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson DTMManager factoryImpl = null; 1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson factoryImpl = (DTMManager) ObjectFactory 1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson .createObject(defaultPropName, defaultClassName); 1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch (ObjectFactory.ConfigurationError e) 1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throw new DTMConfigurationException(XMLMessages.createXMLMessage( 1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson XMLErrorResources.ER_NO_DEFAULT_IMPL, null), e.getException()); 1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //"No default implementation found"); 1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (factoryImpl == null) 1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throw new DTMConfigurationException(XMLMessages.createXMLMessage( 1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson XMLErrorResources.ER_NO_DEFAULT_IMPL, null)); 1519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //"No default implementation found"); 1529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson factoryImpl.setXMLStringFactory(xsf); 1559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return factoryImpl; 1579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get an instance of a DTM, loaded with the content from the 1619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * specified source. If the unique flag is true, a new instance will 1629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * always be returned. Otherwise it is up to the DTMManager to return a 1639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * new instance or an instance that it already created and may be being used 1649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * by someone else. 1659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * (More parameters may eventually need to be added for error handling 1679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * and entity resolution, and to better control selection of implementations.) 1689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param source the specification of the source object, which may be null, 1709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * in which case it is assumed that node construction will take 1719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * by some other means. 1729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param unique true if the returned DTM must be unique, probably because it 1739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * is going to be mutated. 1749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param whiteSpaceFilter Enables filtering of whitespace nodes, and may 1759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * be null. 1769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param incremental true if the DTM should be built incrementally, if 1779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * possible. 1789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param doIndexing true if the caller considers it worth it to use 1799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * indexing schemes. 1809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return a non-null DTM reference. 1829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract DTM getDTM(javax.xml.transform.Source source, 1849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson boolean unique, DTMWSFilter whiteSpaceFilter, 1859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson boolean incremental, boolean doIndexing); 1869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get the instance of DTM that "owns" a node handle. 1899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param nodeHandle the nodeHandle. 1919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return a non-null DTM reference. 1939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract DTM getDTM(int nodeHandle); 1959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Given a W3C DOM node, try and return a DTM handle. 1989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Note: calling this may be non-optimal. 1999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param node Non-null reference to a DOM node. 2019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return a valid DTM handle. 2039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract int getDTMHandleFromNode(org.w3c.dom.Node node); 2059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Creates a DTM representing an empty <code>DocumentFragment</code> object. 2089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return a non-null DTM reference. 2099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract DTM createDocumentFragment(); 2119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Release a DTM either to a lru pool, or completely remove reference. 2149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * DTMs without system IDs are always hard deleted. 2159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * State: experimental. 2169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param dtm The DTM to be released. 2189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param shouldHardDelete True if the DTM should be removed no matter what. 2199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return true if the DTM was removed, false if it was put back in a lru pool. 2209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract boolean release(DTM dtm, boolean shouldHardDelete); 2229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Create a new <code>DTMIterator</code> based on an XPath 2259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <a href="http://www.w3.org/TR/xpath#NT-LocationPath>LocationPath</a> or 2269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * a <a href="http://www.w3.org/TR/xpath#NT-UnionExpr">UnionExpr</a>. 2279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param xpathCompiler ??? Somehow we need to pass in a subpart of the 2299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * expression. I hate to do this with strings, since the larger expression 2309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * has already been parsed. 2319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param pos The position in the expression. 2339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return The newly created <code>DTMIterator</code>. 2349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract DTMIterator createDTMIterator(Object xpathCompiler, 2369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int pos); 2379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Create a new <code>DTMIterator</code> based on an XPath 2409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <a href="http://www.w3.org/TR/xpath#NT-LocationPath>LocationPath</a> or 2419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * a <a href="http://www.w3.org/TR/xpath#NT-UnionExpr">UnionExpr</a>. 2429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param xpathString Must be a valid string expressing a 2449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <a href="http://www.w3.org/TR/xpath#NT-LocationPath>LocationPath</a> or 2459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * a <a href="http://www.w3.org/TR/xpath#NT-UnionExpr">UnionExpr</a>. 2469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param presolver An object that can resolve prefixes to namespace URLs. 2489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return The newly created <code>DTMIterator</code>. 2509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract DTMIterator createDTMIterator(String xpathString, 2529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson PrefixResolver presolver); 2539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Create a new <code>DTMIterator</code> based only on a whatToShow 2569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * and a DTMFilter. The traversal semantics are defined as the 2579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * descendant access. 2589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p> 2599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Note that DTMIterators may not be an exact match to DOM 2609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * NodeIterators. They are initialized and used in much the same way 2619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * as a NodeIterator, but their response to document mutation is not 2629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * currently defined. 2639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param whatToShow This flag specifies which node types may appear in 2659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the logical view of the tree presented by the iterator. See the 2669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * description of <code>NodeFilter</code> for the set of possible 2679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <code>SHOW_</code> values.These flags can be combined using 2689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <code>OR</code>. 2699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param filter The <code>NodeFilter</code> to be used with this 2709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <code>DTMFilter</code>, or <code>null</code> to indicate no filter. 2719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param entityReferenceExpansion The value of this flag determines 2729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * whether entity reference nodes are expanded. 2739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return The newly created <code>DTMIterator</code>. 2759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract DTMIterator createDTMIterator(int whatToShow, 2779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson DTMFilter filter, boolean entityReferenceExpansion); 2789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Create a new <code>DTMIterator</code> that holds exactly one node. 2819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param node The node handle that the DTMIterator will iterate to. 2839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return The newly created <code>DTMIterator</code>. 2859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract DTMIterator createDTMIterator(int node); 2879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* Flag indicating whether an incremental transform is desired */ 2899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean m_incremental = false; 2909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* 2929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Flag set by FEATURE_SOURCE_LOCATION. 2939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This feature specifies whether the transformation phase should 2949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * keep track of line and column numbers for the input source 2959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * document. 2969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean m_source_location = false; 2989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get a flag indicating whether an incremental transform is desired 3019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return incremental boolean. 3029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean getIncremental() 3059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_incremental; 3079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Set a flag indicating whether an incremental transform is desired 3119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This flag should have the same value as the FEATURE_INCREMENTAL feature 3129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * which is set by the TransformerFactory.setAttribut() method before a 3139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * DTMManager is created 3149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param incremental boolean to use to set m_incremental. 3159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setIncremental(boolean incremental) 3189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_incremental = incremental; 3209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get a flag indicating whether the transformation phase should 3249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * keep track of line and column numbers for the input source 3259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * document. 3269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return source location boolean 3279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean getSource_location() 3309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_source_location; 3329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Set a flag indicating whether the transformation phase should 3369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * keep track of line and column numbers for the input source 3379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * document. 3389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This flag should have the same value as the FEATURE_SOURCE_LOCATION feature 3399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * which is set by the TransformerFactory.setAttribut() method before a 3409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * DTMManager is created 3419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param sourceLocation boolean to use to set m_source_location 3429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setSource_location(boolean sourceLocation){ 3449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_source_location = sourceLocation; 3459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // -------------------- private methods -------------------- 3499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Temp debug code - this will be removed after we test everything 3529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private static boolean debug; 3549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson static 3569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 3589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson debug = System.getProperty("dtm.debug") != null; 3609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch (SecurityException ex){} 3629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** This value, set at compile time, controls how many bits of the 3659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * DTM node identifier numbers are used to identify a node within a 3669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * document, and thus sets the maximum number of nodes per 3679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * document. The remaining bits are used to identify the DTM 3689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * document which contains this node. 3699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * If you change IDENT_DTM_NODE_BITS, be sure to rebuild _ALL_ the 3719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * files which use it... including the IDKey testcases. 3729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * (FuncGenerateKey currently uses the node identifier directly and 3749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * thus is affected when this changes. The IDKEY results will still be 3759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * _correct_ (presuming no other breakage), but simple equality 3769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * comparison against the previous "golden" files will probably 3779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * complain.) 3789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * */ 3799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public static final int IDENT_DTM_NODE_BITS = 16; 3809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** When this bitmask is ANDed with a DTM node handle number, the result 3839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * is the low bits of the node's index number within that DTM. To obtain 3849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the high bits, add the DTM ID portion's offset as assigned in the DTM 3859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Manager. 3869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public static final int IDENT_NODE_DEFAULT = (1<<IDENT_DTM_NODE_BITS)-1; 3889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** When this bitmask is ANDed with a DTM node handle number, the result 3919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * is the DTM's document identity number. 3929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public static final int IDENT_DTM_DEFAULT = ~IDENT_NODE_DEFAULT; 3949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** This is the maximum number of DTMs available. The highest DTM is 3969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * one less than this. 3979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public static final int IDENT_MAX_DTMS = (IDENT_DTM_DEFAULT >>> IDENT_DTM_NODE_BITS) + 1; 3999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * %TBD% Doc 4039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 4049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * NEEDSDOC @param dtm 4059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 4069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * NEEDSDOC ($objectName$) @return 4079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public abstract int getDTMIdentity(DTM dtm); 4099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * %TBD% Doc 4129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 4139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * NEEDSDOC ($objectName$) @return 4149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public int getDTMIdentityMask() 4169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return IDENT_DTM_DEFAULT; 4189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * %TBD% Doc 4229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 4239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * NEEDSDOC ($objectName$) @return 4249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public int getNodeIdentityMask() 4269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return IDENT_NODE_DEFAULT; 4289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson} 431