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