<HTML>
<BODY BGCOLOR="white">
<PRE>
<FONT color="green">001</FONT>    /*<a name="line.1"></a>
<FONT color="green">002</FONT>     * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<FONT color="green">003</FONT>     * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<FONT color="green">004</FONT>     * distributed with this work for additional information<a name="line.4"></a>
<FONT color="green">005</FONT>     * regarding copyright ownership. The ASF licenses this file<a name="line.5"></a>
<FONT color="green">006</FONT>     * to you under the Apache License, Version 2.0 (the  "License");<a name="line.6"></a>
<FONT color="green">007</FONT>     * you may not use this file except in compliance with the License.<a name="line.7"></a>
<FONT color="green">008</FONT>     * You may obtain a copy of the License at<a name="line.8"></a>
<FONT color="green">009</FONT>     *<a name="line.9"></a>
<FONT color="green">010</FONT>     *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<FONT color="green">011</FONT>     *<a name="line.11"></a>
<FONT color="green">012</FONT>     * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
<FONT color="green">013</FONT>     * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
<FONT color="green">014</FONT>     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
<FONT color="green">015</FONT>     * See the License for the specific language governing permissions and<a name="line.15"></a>
<FONT color="green">016</FONT>     * limitations under the License.<a name="line.16"></a>
<FONT color="green">017</FONT>     */<a name="line.17"></a>
<FONT color="green">018</FONT>    /*<a name="line.18"></a>
<FONT color="green">019</FONT>     * $Id: XSLTCDTMManager.java 468651 2006-10-28 07:04:25Z minchau $<a name="line.19"></a>
<FONT color="green">020</FONT>     */<a name="line.20"></a>
<FONT color="green">021</FONT>    package org.apache.xalan.xsltc.dom;<a name="line.21"></a>
<FONT color="green">022</FONT>    <a name="line.22"></a>
<FONT color="green">023</FONT>    import javax.xml.transform.Source;<a name="line.23"></a>
<FONT color="green">024</FONT>    import javax.xml.transform.dom.DOMSource;<a name="line.24"></a>
<FONT color="green">025</FONT>    import javax.xml.transform.sax.SAXSource;<a name="line.25"></a>
<FONT color="green">026</FONT>    import javax.xml.transform.stream.StreamSource;<a name="line.26"></a>
<FONT color="green">027</FONT>    <a name="line.27"></a>
<FONT color="green">028</FONT>    import org.apache.xml.dtm.DTM;<a name="line.28"></a>
<FONT color="green">029</FONT>    import org.apache.xml.dtm.ref.DTMDefaultBase;<a name="line.29"></a>
<FONT color="green">030</FONT>    import org.apache.xml.dtm.DTMException;<a name="line.30"></a>
<FONT color="green">031</FONT>    import org.apache.xml.dtm.DTMWSFilter;<a name="line.31"></a>
<FONT color="green">032</FONT>    import org.apache.xml.dtm.ref.DTMManagerDefault;<a name="line.32"></a>
<FONT color="green">033</FONT>    import org.apache.xml.res.XMLErrorResources;<a name="line.33"></a>
<FONT color="green">034</FONT>    import org.apache.xml.res.XMLMessages;<a name="line.34"></a>
<FONT color="green">035</FONT>    import org.apache.xml.utils.SystemIDResolver;<a name="line.35"></a>
<FONT color="green">036</FONT>    import org.apache.xalan.xsltc.trax.DOM2SAX;<a name="line.36"></a>
<FONT color="green">037</FONT>    <a name="line.37"></a>
<FONT color="green">038</FONT>    import org.xml.sax.InputSource;<a name="line.38"></a>
<FONT color="green">039</FONT>    import org.xml.sax.SAXNotRecognizedException;<a name="line.39"></a>
<FONT color="green">040</FONT>    import org.xml.sax.SAXNotSupportedException;<a name="line.40"></a>
<FONT color="green">041</FONT>    import org.xml.sax.XMLReader;<a name="line.41"></a>
<FONT color="green">042</FONT>    <a name="line.42"></a>
<FONT color="green">043</FONT>    /**<a name="line.43"></a>
<FONT color="green">044</FONT>     * The default implementation for the DTMManager.<a name="line.44"></a>
<FONT color="green">045</FONT>     */<a name="line.45"></a>
<FONT color="green">046</FONT>    public class XSLTCDTMManager extends DTMManagerDefault<a name="line.46"></a>
<FONT color="green">047</FONT>    {<a name="line.47"></a>
<FONT color="green">048</FONT>            <a name="line.48"></a>
<FONT color="green">049</FONT>        /** The default class name to use as the manager. */<a name="line.49"></a>
<FONT color="green">050</FONT>        private static final String DEFAULT_CLASS_NAME =<a name="line.50"></a>
<FONT color="green">051</FONT>            "org.apache.xalan.xsltc.dom.XSLTCDTMManager";<a name="line.51"></a>
<FONT color="green">052</FONT>    <a name="line.52"></a>
<FONT color="green">053</FONT>        private static final String DEFAULT_PROP_NAME =<a name="line.53"></a>
<FONT color="green">054</FONT>            "org.apache.xalan.xsltc.dom.XSLTCDTMManager";<a name="line.54"></a>
<FONT color="green">055</FONT>    <a name="line.55"></a>
<FONT color="green">056</FONT>        /** Set this to true if you want a dump of the DTM after creation */<a name="line.56"></a>
<FONT color="green">057</FONT>        private static final boolean DUMPTREE = false;<a name="line.57"></a>
<FONT color="green">058</FONT>      <a name="line.58"></a>
<FONT color="green">059</FONT>        /** Set this to true if you want basic diagnostics */<a name="line.59"></a>
<FONT color="green">060</FONT>        private static final boolean DEBUG = false;<a name="line.60"></a>
<FONT color="green">061</FONT>    <a name="line.61"></a>
<FONT color="green">062</FONT>        /**<a name="line.62"></a>
<FONT color="green">063</FONT>         * Constructor DTMManagerDefault<a name="line.63"></a>
<FONT color="green">064</FONT>         *<a name="line.64"></a>
<FONT color="green">065</FONT>         */<a name="line.65"></a>
<FONT color="green">066</FONT>        public XSLTCDTMManager()<a name="line.66"></a>
<FONT color="green">067</FONT>        {<a name="line.67"></a>
<FONT color="green">068</FONT>            super();<a name="line.68"></a>
<FONT color="green">069</FONT>        } <a name="line.69"></a>
<FONT color="green">070</FONT>    <a name="line.70"></a>
<FONT color="green">071</FONT>        /**<a name="line.71"></a>
<FONT color="green">072</FONT>         * Obtain a new instance of a &lt;code&gt;DTMManager&lt;/code&gt;.<a name="line.72"></a>
<FONT color="green">073</FONT>         * This static method creates a new factory instance.<a name="line.73"></a>
<FONT color="green">074</FONT>         * The current implementation just returns a new XSLTCDTMManager instance.<a name="line.74"></a>
<FONT color="green">075</FONT>         */<a name="line.75"></a>
<FONT color="green">076</FONT>        public static XSLTCDTMManager newInstance()<a name="line.76"></a>
<FONT color="green">077</FONT>        {<a name="line.77"></a>
<FONT color="green">078</FONT>            return new XSLTCDTMManager();<a name="line.78"></a>
<FONT color="green">079</FONT>        } <a name="line.79"></a>
<FONT color="green">080</FONT>    <a name="line.80"></a>
<FONT color="green">081</FONT>        /**<a name="line.81"></a>
<FONT color="green">082</FONT>         * Look up the class that provides the XSLTC DTM Manager service.<a name="line.82"></a>
<FONT color="green">083</FONT>         * The following lookup procedure is used to find the service provider.<a name="line.83"></a>
<FONT color="green">084</FONT>         * &lt;ol&gt;<a name="line.84"></a>
<FONT color="green">085</FONT>         * &lt;li&gt;The value of the<a name="line.85"></a>
<FONT color="green">086</FONT>         * &lt;code&gt;org.apache.xalan.xsltc.dom.XSLTCDTMManager&lt;/code&gt; property, is<a name="line.86"></a>
<FONT color="green">087</FONT>         * checked.&lt;/li&gt;<a name="line.87"></a>
<FONT color="green">088</FONT>         * &lt;li&gt;The &lt;code&gt;xalan.propeties&lt;/code&gt; file is checked for a property<a name="line.88"></a>
<FONT color="green">089</FONT>         * of the same name.&lt;/li&gt;<a name="line.89"></a>
<FONT color="green">090</FONT>         * &lt;li&gt;The<a name="line.90"></a>
<FONT color="green">091</FONT>         * &lt;code&gt;META-INF/services/org.apache.xalan.xsltc.dom.XSLTCDTMManager&lt;/code&gt;<a name="line.91"></a>
<FONT color="green">092</FONT>         * file is checked.<a name="line.92"></a>
<FONT color="green">093</FONT>         * &lt;/ol&gt;<a name="line.93"></a>
<FONT color="green">094</FONT>         * The default is &lt;code&gt;org.apache.xalan.xsltc.dom.XSLTCDTMManager&lt;/code&gt;.<a name="line.94"></a>
<FONT color="green">095</FONT>         */<a name="line.95"></a>
<FONT color="green">096</FONT>        public static Class getDTMManagerClass() {<a name="line.96"></a>
<FONT color="green">097</FONT>            Class mgrClass = ObjectFactory.lookUpFactoryClass(DEFAULT_PROP_NAME,<a name="line.97"></a>
<FONT color="green">098</FONT>                                                              null,<a name="line.98"></a>
<FONT color="green">099</FONT>                                                              DEFAULT_CLASS_NAME);<a name="line.99"></a>
<FONT color="green">100</FONT>            // If no class found, default to this one.  (This should never happen -<a name="line.100"></a>
<FONT color="green">101</FONT>            // the ObjectFactory has already been told that the current class is<a name="line.101"></a>
<FONT color="green">102</FONT>            // the default).<a name="line.102"></a>
<FONT color="green">103</FONT>            return (mgrClass != null) ? mgrClass : XSLTCDTMManager.class;<a name="line.103"></a>
<FONT color="green">104</FONT>        }<a name="line.104"></a>
<FONT color="green">105</FONT>    <a name="line.105"></a>
<FONT color="green">106</FONT>        /**<a name="line.106"></a>
<FONT color="green">107</FONT>         * Get an instance of a DTM, loaded with the content from the<a name="line.107"></a>
<FONT color="green">108</FONT>         * specified source.  If the unique flag is true, a new instance will<a name="line.108"></a>
<FONT color="green">109</FONT>         * always be returned.  Otherwise it is up to the DTMManager to return a<a name="line.109"></a>
<FONT color="green">110</FONT>         * new instance or an instance that it already created and may be being used<a name="line.110"></a>
<FONT color="green">111</FONT>         * by someone else.<a name="line.111"></a>
<FONT color="green">112</FONT>         * (I think more parameters will need to be added for error handling, and<a name="line.112"></a>
<FONT color="green">113</FONT>         * entity resolution).<a name="line.113"></a>
<FONT color="green">114</FONT>         *<a name="line.114"></a>
<FONT color="green">115</FONT>         * @param source the specification of the source object.<a name="line.115"></a>
<FONT color="green">116</FONT>         * @param unique true if the returned DTM must be unique, probably because it<a name="line.116"></a>
<FONT color="green">117</FONT>         * is going to be mutated.<a name="line.117"></a>
<FONT color="green">118</FONT>         * @param whiteSpaceFilter Enables filtering of whitespace nodes, and may<a name="line.118"></a>
<FONT color="green">119</FONT>         *                         be null.<a name="line.119"></a>
<FONT color="green">120</FONT>         * @param incremental true if the DTM should be built incrementally, if<a name="line.120"></a>
<FONT color="green">121</FONT>         *                    possible.<a name="line.121"></a>
<FONT color="green">122</FONT>         * @param doIndexing true if the caller considers it worth it to use<a name="line.122"></a>
<FONT color="green">123</FONT>         *                   indexing schemes.<a name="line.123"></a>
<FONT color="green">124</FONT>         *<a name="line.124"></a>
<FONT color="green">125</FONT>         * @return a non-null DTM reference.<a name="line.125"></a>
<FONT color="green">126</FONT>         */<a name="line.126"></a>
<FONT color="green">127</FONT>        public DTM getDTM(Source source, boolean unique,<a name="line.127"></a>
<FONT color="green">128</FONT>                          DTMWSFilter whiteSpaceFilter, boolean incremental,<a name="line.128"></a>
<FONT color="green">129</FONT>                          boolean doIndexing)<a name="line.129"></a>
<FONT color="green">130</FONT>        {<a name="line.130"></a>
<FONT color="green">131</FONT>            return getDTM(source, unique, whiteSpaceFilter, incremental,<a name="line.131"></a>
<FONT color="green">132</FONT>                          doIndexing, false, 0, true, false);<a name="line.132"></a>
<FONT color="green">133</FONT>        }<a name="line.133"></a>
<FONT color="green">134</FONT>    <a name="line.134"></a>
<FONT color="green">135</FONT>        /**<a name="line.135"></a>
<FONT color="green">136</FONT>         * Get an instance of a DTM, loaded with the content from the<a name="line.136"></a>
<FONT color="green">137</FONT>         * specified source.  If the unique flag is true, a new instance will<a name="line.137"></a>
<FONT color="green">138</FONT>         * always be returned.  Otherwise it is up to the DTMManager to return a<a name="line.138"></a>
<FONT color="green">139</FONT>         * new instance or an instance that it already created and may be being used<a name="line.139"></a>
<FONT color="green">140</FONT>         * by someone else.<a name="line.140"></a>
<FONT color="green">141</FONT>         * (I think more parameters will need to be added for error handling, and<a name="line.141"></a>
<FONT color="green">142</FONT>         * entity resolution).<a name="line.142"></a>
<FONT color="green">143</FONT>         *<a name="line.143"></a>
<FONT color="green">144</FONT>         * @param source the specification of the source object.<a name="line.144"></a>
<FONT color="green">145</FONT>         * @param unique true if the returned DTM must be unique, probably because it<a name="line.145"></a>
<FONT color="green">146</FONT>         * is going to be mutated.<a name="line.146"></a>
<FONT color="green">147</FONT>         * @param whiteSpaceFilter Enables filtering of whitespace nodes, and may<a name="line.147"></a>
<FONT color="green">148</FONT>         *                         be null.<a name="line.148"></a>
<FONT color="green">149</FONT>         * @param incremental true if the DTM should be built incrementally, if<a name="line.149"></a>
<FONT color="green">150</FONT>         *                    possible.<a name="line.150"></a>
<FONT color="green">151</FONT>         * @param doIndexing true if the caller considers it worth it to use<a name="line.151"></a>
<FONT color="green">152</FONT>         *                   indexing schemes.<a name="line.152"></a>
<FONT color="green">153</FONT>         * @param buildIdIndex true if the id index table should be built.<a name="line.153"></a>
<FONT color="green">154</FONT>         * <a name="line.154"></a>
<FONT color="green">155</FONT>         * @return a non-null DTM reference.<a name="line.155"></a>
<FONT color="green">156</FONT>         */<a name="line.156"></a>
<FONT color="green">157</FONT>        public DTM getDTM(Source source, boolean unique,<a name="line.157"></a>
<FONT color="green">158</FONT>                          DTMWSFilter whiteSpaceFilter, boolean incremental,<a name="line.158"></a>
<FONT color="green">159</FONT>                          boolean doIndexing, boolean buildIdIndex)<a name="line.159"></a>
<FONT color="green">160</FONT>        {<a name="line.160"></a>
<FONT color="green">161</FONT>            return getDTM(source, unique, whiteSpaceFilter, incremental,<a name="line.161"></a>
<FONT color="green">162</FONT>                          doIndexing, false, 0, buildIdIndex, false);<a name="line.162"></a>
<FONT color="green">163</FONT>        }<a name="line.163"></a>
<FONT color="green">164</FONT>      <a name="line.164"></a>
<FONT color="green">165</FONT>        /**<a name="line.165"></a>
<FONT color="green">166</FONT>         * Get an instance of a DTM, loaded with the content from the<a name="line.166"></a>
<FONT color="green">167</FONT>         * specified source.  If the unique flag is true, a new instance will<a name="line.167"></a>
<FONT color="green">168</FONT>         * always be returned.  Otherwise it is up to the DTMManager to return a<a name="line.168"></a>
<FONT color="green">169</FONT>         * new instance or an instance that it already created and may be being used<a name="line.169"></a>
<FONT color="green">170</FONT>         * by someone else.<a name="line.170"></a>
<FONT color="green">171</FONT>         * (I think more parameters will need to be added for error handling, and<a name="line.171"></a>
<FONT color="green">172</FONT>         * entity resolution).<a name="line.172"></a>
<FONT color="green">173</FONT>         *<a name="line.173"></a>
<FONT color="green">174</FONT>         * @param source the specification of the source object.<a name="line.174"></a>
<FONT color="green">175</FONT>         * @param unique true if the returned DTM must be unique, probably because it<a name="line.175"></a>
<FONT color="green">176</FONT>         * is going to be mutated.<a name="line.176"></a>
<FONT color="green">177</FONT>         * @param whiteSpaceFilter Enables filtering of whitespace nodes, and may<a name="line.177"></a>
<FONT color="green">178</FONT>         *                         be null.<a name="line.178"></a>
<FONT color="green">179</FONT>         * @param incremental true if the DTM should be built incrementally, if<a name="line.179"></a>
<FONT color="green">180</FONT>         *                    possible.<a name="line.180"></a>
<FONT color="green">181</FONT>         * @param doIndexing true if the caller considers it worth it to use<a name="line.181"></a>
<FONT color="green">182</FONT>         *                   indexing schemes.<a name="line.182"></a>
<FONT color="green">183</FONT>         * @param buildIdIndex true if the id index table should be built.<a name="line.183"></a>
<FONT color="green">184</FONT>         * @param newNameTable true if we want to use a separate ExpandedNameTable<a name="line.184"></a>
<FONT color="green">185</FONT>         *                     for this DTM.<a name="line.185"></a>
<FONT color="green">186</FONT>         * <a name="line.186"></a>
<FONT color="green">187</FONT>         * @return a non-null DTM reference.<a name="line.187"></a>
<FONT color="green">188</FONT>         */<a name="line.188"></a>
<FONT color="green">189</FONT>      public DTM getDTM(Source source, boolean unique,<a name="line.189"></a>
<FONT color="green">190</FONT>                        DTMWSFilter whiteSpaceFilter, boolean incremental,<a name="line.190"></a>
<FONT color="green">191</FONT>                        boolean doIndexing, boolean buildIdIndex,<a name="line.191"></a>
<FONT color="green">192</FONT>                        boolean newNameTable)<a name="line.192"></a>
<FONT color="green">193</FONT>      {<a name="line.193"></a>
<FONT color="green">194</FONT>        return getDTM(source, unique, whiteSpaceFilter, incremental,<a name="line.194"></a>
<FONT color="green">195</FONT>                      doIndexing, false, 0, buildIdIndex, newNameTable);<a name="line.195"></a>
<FONT color="green">196</FONT>      }<a name="line.196"></a>
<FONT color="green">197</FONT>      <a name="line.197"></a>
<FONT color="green">198</FONT>      /**<a name="line.198"></a>
<FONT color="green">199</FONT>         * Get an instance of a DTM, loaded with the content from the<a name="line.199"></a>
<FONT color="green">200</FONT>         * specified source.  If the unique flag is true, a new instance will<a name="line.200"></a>
<FONT color="green">201</FONT>         * always be returned.  Otherwise it is up to the DTMManager to return a<a name="line.201"></a>
<FONT color="green">202</FONT>         * new instance or an instance that it already created and may be being used<a name="line.202"></a>
<FONT color="green">203</FONT>         * by someone else.<a name="line.203"></a>
<FONT color="green">204</FONT>         * (I think more parameters will need to be added for error handling, and<a name="line.204"></a>
<FONT color="green">205</FONT>         * entity resolution).<a name="line.205"></a>
<FONT color="green">206</FONT>         *<a name="line.206"></a>
<FONT color="green">207</FONT>         * @param source the specification of the source object.<a name="line.207"></a>
<FONT color="green">208</FONT>         * @param unique true if the returned DTM must be unique, probably because it<a name="line.208"></a>
<FONT color="green">209</FONT>         * is going to be mutated.<a name="line.209"></a>
<FONT color="green">210</FONT>         * @param whiteSpaceFilter Enables filtering of whitespace nodes, and may<a name="line.210"></a>
<FONT color="green">211</FONT>         *                         be null.<a name="line.211"></a>
<FONT color="green">212</FONT>         * @param incremental true if the DTM should be built incrementally, if<a name="line.212"></a>
<FONT color="green">213</FONT>         *                    possible.<a name="line.213"></a>
<FONT color="green">214</FONT>         * @param doIndexing true if the caller considers it worth it to use<a name="line.214"></a>
<FONT color="green">215</FONT>         *                   indexing schemes.<a name="line.215"></a>
<FONT color="green">216</FONT>         * @param hasUserReader true if &lt;code&gt;source&lt;/code&gt; is a<a name="line.216"></a>
<FONT color="green">217</FONT>         *                      &lt;code&gt;SAXSource&lt;/code&gt; object that has an<a name="line.217"></a>
<FONT color="green">218</FONT>         *                      &lt;code&gt;XMLReader&lt;/code&gt;, that was specified by the<a name="line.218"></a>
<FONT color="green">219</FONT>         *                      user.<a name="line.219"></a>
<FONT color="green">220</FONT>         * @param size  Specifies initial size of tables that represent the DTM<a name="line.220"></a>
<FONT color="green">221</FONT>         * @param buildIdIndex true if the id index table should be built.<a name="line.221"></a>
<FONT color="green">222</FONT>         *<a name="line.222"></a>
<FONT color="green">223</FONT>         * @return a non-null DTM reference.<a name="line.223"></a>
<FONT color="green">224</FONT>         */<a name="line.224"></a>
<FONT color="green">225</FONT>        public DTM getDTM(Source source, boolean unique,<a name="line.225"></a>
<FONT color="green">226</FONT>                          DTMWSFilter whiteSpaceFilter, boolean incremental,<a name="line.226"></a>
<FONT color="green">227</FONT>                          boolean doIndexing, boolean hasUserReader, int size,<a name="line.227"></a>
<FONT color="green">228</FONT>                          boolean buildIdIndex)<a name="line.228"></a>
<FONT color="green">229</FONT>        {<a name="line.229"></a>
<FONT color="green">230</FONT>          return getDTM(source, unique, whiteSpaceFilter, incremental,<a name="line.230"></a>
<FONT color="green">231</FONT>                        doIndexing, hasUserReader, size,<a name="line.231"></a>
<FONT color="green">232</FONT>                        buildIdIndex, false);<a name="line.232"></a>
<FONT color="green">233</FONT>      }<a name="line.233"></a>
<FONT color="green">234</FONT>      <a name="line.234"></a>
<FONT color="green">235</FONT>      /**<a name="line.235"></a>
<FONT color="green">236</FONT>         * Get an instance of a DTM, loaded with the content from the<a name="line.236"></a>
<FONT color="green">237</FONT>         * specified source.  If the unique flag is true, a new instance will<a name="line.237"></a>
<FONT color="green">238</FONT>         * always be returned.  Otherwise it is up to the DTMManager to return a<a name="line.238"></a>
<FONT color="green">239</FONT>         * new instance or an instance that it already created and may be being used<a name="line.239"></a>
<FONT color="green">240</FONT>         * by someone else.<a name="line.240"></a>
<FONT color="green">241</FONT>         * (I think more parameters will need to be added for error handling, and<a name="line.241"></a>
<FONT color="green">242</FONT>         * entity resolution).<a name="line.242"></a>
<FONT color="green">243</FONT>         *<a name="line.243"></a>
<FONT color="green">244</FONT>         * @param source the specification of the source object.<a name="line.244"></a>
<FONT color="green">245</FONT>         * @param unique true if the returned DTM must be unique, probably because it<a name="line.245"></a>
<FONT color="green">246</FONT>         * is going to be mutated.<a name="line.246"></a>
<FONT color="green">247</FONT>         * @param whiteSpaceFilter Enables filtering of whitespace nodes, and may<a name="line.247"></a>
<FONT color="green">248</FONT>         *                         be null.<a name="line.248"></a>
<FONT color="green">249</FONT>         * @param incremental true if the DTM should be built incrementally, if<a name="line.249"></a>
<FONT color="green">250</FONT>         *                    possible.<a name="line.250"></a>
<FONT color="green">251</FONT>         * @param doIndexing true if the caller considers it worth it to use<a name="line.251"></a>
<FONT color="green">252</FONT>         *                   indexing schemes.<a name="line.252"></a>
<FONT color="green">253</FONT>         * @param hasUserReader true if &lt;code&gt;source&lt;/code&gt; is a<a name="line.253"></a>
<FONT color="green">254</FONT>         *                      &lt;code&gt;SAXSource&lt;/code&gt; object that has an<a name="line.254"></a>
<FONT color="green">255</FONT>         *                      &lt;code&gt;XMLReader&lt;/code&gt;, that was specified by the<a name="line.255"></a>
<FONT color="green">256</FONT>         *                      user.<a name="line.256"></a>
<FONT color="green">257</FONT>         * @param size  Specifies initial size of tables that represent the DTM<a name="line.257"></a>
<FONT color="green">258</FONT>         * @param buildIdIndex true if the id index table should be built.<a name="line.258"></a>
<FONT color="green">259</FONT>         * @param newNameTable true if we want to use a separate ExpandedNameTable<a name="line.259"></a>
<FONT color="green">260</FONT>         *                     for this DTM.<a name="line.260"></a>
<FONT color="green">261</FONT>         *<a name="line.261"></a>
<FONT color="green">262</FONT>         * @return a non-null DTM reference.<a name="line.262"></a>
<FONT color="green">263</FONT>         */<a name="line.263"></a>
<FONT color="green">264</FONT>      public DTM getDTM(Source source, boolean unique,<a name="line.264"></a>
<FONT color="green">265</FONT>                        DTMWSFilter whiteSpaceFilter, boolean incremental,<a name="line.265"></a>
<FONT color="green">266</FONT>                        boolean doIndexing, boolean hasUserReader, int size,<a name="line.266"></a>
<FONT color="green">267</FONT>                        boolean buildIdIndex, boolean newNameTable)<a name="line.267"></a>
<FONT color="green">268</FONT>      {<a name="line.268"></a>
<FONT color="green">269</FONT>            if(DEBUG &amp;&amp; null != source) {<a name="line.269"></a>
<FONT color="green">270</FONT>                System.out.println("Starting "+<a name="line.270"></a>
<FONT color="green">271</FONT>                             (unique ? "UNIQUE" : "shared")+<a name="line.271"></a>
<FONT color="green">272</FONT>                             " source: "+source.getSystemId());<a name="line.272"></a>
<FONT color="green">273</FONT>            }<a name="line.273"></a>
<FONT color="green">274</FONT>    <a name="line.274"></a>
<FONT color="green">275</FONT>            int dtmPos = getFirstFreeDTMID();<a name="line.275"></a>
<FONT color="green">276</FONT>            int documentID = dtmPos &lt;&lt; IDENT_DTM_NODE_BITS;<a name="line.276"></a>
<FONT color="green">277</FONT>    <a name="line.277"></a>
<FONT color="green">278</FONT>            if ((null != source) &amp;&amp; source instanceof DOMSource)<a name="line.278"></a>
<FONT color="green">279</FONT>            {<a name="line.279"></a>
<FONT color="green">280</FONT>                final DOMSource domsrc = (DOMSource) source;<a name="line.280"></a>
<FONT color="green">281</FONT>                final org.w3c.dom.Node node = domsrc.getNode();<a name="line.281"></a>
<FONT color="green">282</FONT>                final DOM2SAX dom2sax = new DOM2SAX(node);<a name="line.282"></a>
<FONT color="green">283</FONT>          <a name="line.283"></a>
<FONT color="green">284</FONT>                SAXImpl dtm;<a name="line.284"></a>
<FONT color="green">285</FONT>    <a name="line.285"></a>
<FONT color="green">286</FONT>                if (size &lt;= 0) {<a name="line.286"></a>
<FONT color="green">287</FONT>                    dtm = new SAXImpl(this, source, documentID,<a name="line.287"></a>
<FONT color="green">288</FONT>                                      whiteSpaceFilter, null, doIndexing, <a name="line.288"></a>
<FONT color="green">289</FONT>                                      DTMDefaultBase.DEFAULT_BLOCKSIZE,<a name="line.289"></a>
<FONT color="green">290</FONT>                                      buildIdIndex, newNameTable);<a name="line.290"></a>
<FONT color="green">291</FONT>                } else {<a name="line.291"></a>
<FONT color="green">292</FONT>                    dtm = new SAXImpl(this, source, documentID,<a name="line.292"></a>
<FONT color="green">293</FONT>                                      whiteSpaceFilter, null, doIndexing, <a name="line.293"></a>
<FONT color="green">294</FONT>                                      size, buildIdIndex, newNameTable);<a name="line.294"></a>
<FONT color="green">295</FONT>                }<a name="line.295"></a>
<FONT color="green">296</FONT>          <a name="line.296"></a>
<FONT color="green">297</FONT>                dtm.setDocumentURI(source.getSystemId());<a name="line.297"></a>
<FONT color="green">298</FONT>    <a name="line.298"></a>
<FONT color="green">299</FONT>                addDTM(dtm, dtmPos, 0);<a name="line.299"></a>
<FONT color="green">300</FONT>          <a name="line.300"></a>
<FONT color="green">301</FONT>                dom2sax.setContentHandler(dtm);<a name="line.301"></a>
<FONT color="green">302</FONT>          <a name="line.302"></a>
<FONT color="green">303</FONT>                try {<a name="line.303"></a>
<FONT color="green">304</FONT>                    dom2sax.parse();<a name="line.304"></a>
<FONT color="green">305</FONT>                }<a name="line.305"></a>
<FONT color="green">306</FONT>                catch (RuntimeException re) {<a name="line.306"></a>
<FONT color="green">307</FONT>                    throw re;<a name="line.307"></a>
<FONT color="green">308</FONT>                }<a name="line.308"></a>
<FONT color="green">309</FONT>                catch (Exception e) {<a name="line.309"></a>
<FONT color="green">310</FONT>                    throw new org.apache.xml.utils.WrappedRuntimeException(e);<a name="line.310"></a>
<FONT color="green">311</FONT>                }<a name="line.311"></a>
<FONT color="green">312</FONT>          <a name="line.312"></a>
<FONT color="green">313</FONT>                return dtm;<a name="line.313"></a>
<FONT color="green">314</FONT>            }<a name="line.314"></a>
<FONT color="green">315</FONT>            else<a name="line.315"></a>
<FONT color="green">316</FONT>            {<a name="line.316"></a>
<FONT color="green">317</FONT>                boolean isSAXSource = (null != source)<a name="line.317"></a>
<FONT color="green">318</FONT>                                      ? (source instanceof SAXSource) : true;<a name="line.318"></a>
<FONT color="green">319</FONT>                boolean isStreamSource = (null != source)<a name="line.319"></a>
<FONT color="green">320</FONT>                                      ? (source instanceof StreamSource) : false;<a name="line.320"></a>
<FONT color="green">321</FONT>    <a name="line.321"></a>
<FONT color="green">322</FONT>                if (isSAXSource || isStreamSource) {<a name="line.322"></a>
<FONT color="green">323</FONT>                    XMLReader reader;<a name="line.323"></a>
<FONT color="green">324</FONT>                    InputSource xmlSource;<a name="line.324"></a>
<FONT color="green">325</FONT>    <a name="line.325"></a>
<FONT color="green">326</FONT>                    if (null == source) {<a name="line.326"></a>
<FONT color="green">327</FONT>                        xmlSource = null;<a name="line.327"></a>
<FONT color="green">328</FONT>                        reader = null;<a name="line.328"></a>
<FONT color="green">329</FONT>                        hasUserReader = false;  // Make sure the user didn't lie<a name="line.329"></a>
<FONT color="green">330</FONT>                    }<a name="line.330"></a>
<FONT color="green">331</FONT>                    else {<a name="line.331"></a>
<FONT color="green">332</FONT>                        reader = getXMLReader(source);<a name="line.332"></a>
<FONT color="green">333</FONT>                        xmlSource = SAXSource.sourceToInputSource(source);<a name="line.333"></a>
<FONT color="green">334</FONT>    <a name="line.334"></a>
<FONT color="green">335</FONT>                        String urlOfSource = xmlSource.getSystemId();<a name="line.335"></a>
<FONT color="green">336</FONT>    <a name="line.336"></a>
<FONT color="green">337</FONT>                        if (null != urlOfSource) {<a name="line.337"></a>
<FONT color="green">338</FONT>                            try {<a name="line.338"></a>
<FONT color="green">339</FONT>                                urlOfSource = SystemIDResolver.getAbsoluteURI(urlOfSource);<a name="line.339"></a>
<FONT color="green">340</FONT>                            }<a name="line.340"></a>
<FONT color="green">341</FONT>                            catch (Exception e) {<a name="line.341"></a>
<FONT color="green">342</FONT>                                // %REVIEW% Is there a better way to send a warning?<a name="line.342"></a>
<FONT color="green">343</FONT>                                System.err.println("Can not absolutize URL: " + urlOfSource);<a name="line.343"></a>
<FONT color="green">344</FONT>                            }<a name="line.344"></a>
<FONT color="green">345</FONT>    <a name="line.345"></a>
<FONT color="green">346</FONT>                            xmlSource.setSystemId(urlOfSource);<a name="line.346"></a>
<FONT color="green">347</FONT>                        }<a name="line.347"></a>
<FONT color="green">348</FONT>                    }<a name="line.348"></a>
<FONT color="green">349</FONT>    <a name="line.349"></a>
<FONT color="green">350</FONT>                    // Create the basic SAX2DTM.<a name="line.350"></a>
<FONT color="green">351</FONT>                    SAXImpl dtm;<a name="line.351"></a>
<FONT color="green">352</FONT>                    if (size &lt;= 0) {<a name="line.352"></a>
<FONT color="green">353</FONT>                        dtm = new SAXImpl(this, source, documentID, whiteSpaceFilter,<a name="line.353"></a>
<FONT color="green">354</FONT>                                          null, doIndexing, <a name="line.354"></a>
<FONT color="green">355</FONT>                                          DTMDefaultBase.DEFAULT_BLOCKSIZE,<a name="line.355"></a>
<FONT color="green">356</FONT>                                          buildIdIndex, newNameTable);<a name="line.356"></a>
<FONT color="green">357</FONT>                    } else {<a name="line.357"></a>
<FONT color="green">358</FONT>                        dtm = new SAXImpl(this, source, documentID, whiteSpaceFilter,<a name="line.358"></a>
<FONT color="green">359</FONT>                                null, doIndexing, size, buildIdIndex, newNameTable);<a name="line.359"></a>
<FONT color="green">360</FONT>                    }<a name="line.360"></a>
<FONT color="green">361</FONT>    <a name="line.361"></a>
<FONT color="green">362</FONT>                    // Go ahead and add the DTM to the lookup table.  This needs to be<a name="line.362"></a>
<FONT color="green">363</FONT>                    // done before any parsing occurs. Note offset 0, since we've just<a name="line.363"></a>
<FONT color="green">364</FONT>                    // created a new DTM.<a name="line.364"></a>
<FONT color="green">365</FONT>                    addDTM(dtm, dtmPos, 0);<a name="line.365"></a>
<FONT color="green">366</FONT>    <a name="line.366"></a>
<FONT color="green">367</FONT>                    if (null == reader) {<a name="line.367"></a>
<FONT color="green">368</FONT>                        // Then the user will construct it themselves.<a name="line.368"></a>
<FONT color="green">369</FONT>                        return dtm;<a name="line.369"></a>
<FONT color="green">370</FONT>                    }<a name="line.370"></a>
<FONT color="green">371</FONT>    <a name="line.371"></a>
<FONT color="green">372</FONT>                    reader.setContentHandler(dtm.getBuilder());<a name="line.372"></a>
<FONT color="green">373</FONT>                    <a name="line.373"></a>
<FONT color="green">374</FONT>                    if (!hasUserReader || null == reader.getDTDHandler()) {<a name="line.374"></a>
<FONT color="green">375</FONT>                        reader.setDTDHandler(dtm);<a name="line.375"></a>
<FONT color="green">376</FONT>                    }<a name="line.376"></a>
<FONT color="green">377</FONT>                    <a name="line.377"></a>
<FONT color="green">378</FONT>                    if(!hasUserReader || null == reader.getErrorHandler()) {<a name="line.378"></a>
<FONT color="green">379</FONT>                        reader.setErrorHandler(dtm);<a name="line.379"></a>
<FONT color="green">380</FONT>                    }<a name="line.380"></a>
<FONT color="green">381</FONT>    <a name="line.381"></a>
<FONT color="green">382</FONT>                    try {<a name="line.382"></a>
<FONT color="green">383</FONT>                        reader.setProperty("http://xml.org/sax/properties/lexical-handler", dtm);<a name="line.383"></a>
<FONT color="green">384</FONT>                    }<a name="line.384"></a>
<FONT color="green">385</FONT>                    catch (SAXNotRecognizedException e){}<a name="line.385"></a>
<FONT color="green">386</FONT>                    catch (SAXNotSupportedException e){}<a name="line.386"></a>
<FONT color="green">387</FONT>    <a name="line.387"></a>
<FONT color="green">388</FONT>                    try {<a name="line.388"></a>
<FONT color="green">389</FONT>                        reader.parse(xmlSource);<a name="line.389"></a>
<FONT color="green">390</FONT>                    }<a name="line.390"></a>
<FONT color="green">391</FONT>                    catch (RuntimeException re) {<a name="line.391"></a>
<FONT color="green">392</FONT>                        throw re;<a name="line.392"></a>
<FONT color="green">393</FONT>                    }<a name="line.393"></a>
<FONT color="green">394</FONT>                    catch (Exception e) {<a name="line.394"></a>
<FONT color="green">395</FONT>                        throw new org.apache.xml.utils.WrappedRuntimeException(e);<a name="line.395"></a>
<FONT color="green">396</FONT>                    } finally {<a name="line.396"></a>
<FONT color="green">397</FONT>                        if (!hasUserReader) {<a name="line.397"></a>
<FONT color="green">398</FONT>                            releaseXMLReader(reader);<a name="line.398"></a>
<FONT color="green">399</FONT>                        }<a name="line.399"></a>
<FONT color="green">400</FONT>                    }<a name="line.400"></a>
<FONT color="green">401</FONT>    <a name="line.401"></a>
<FONT color="green">402</FONT>                    if (DUMPTREE) {<a name="line.402"></a>
<FONT color="green">403</FONT>                        System.out.println("Dumping SAX2DOM");<a name="line.403"></a>
<FONT color="green">404</FONT>                        dtm.dumpDTM(System.err);<a name="line.404"></a>
<FONT color="green">405</FONT>                    }<a name="line.405"></a>
<FONT color="green">406</FONT>    <a name="line.406"></a>
<FONT color="green">407</FONT>                    return dtm;<a name="line.407"></a>
<FONT color="green">408</FONT>                }<a name="line.408"></a>
<FONT color="green">409</FONT>                else {<a name="line.409"></a>
<FONT color="green">410</FONT>                    // It should have been handled by a derived class or the caller<a name="line.410"></a>
<FONT color="green">411</FONT>                    // made a mistake.<a name="line.411"></a>
<FONT color="green">412</FONT>                    throw new DTMException(XMLMessages.createXMLMessage(XMLErrorResources.ER_NOT_SUPPORTED, new Object[]{source}));<a name="line.412"></a>
<FONT color="green">413</FONT>                }<a name="line.413"></a>
<FONT color="green">414</FONT>            }<a name="line.414"></a>
<FONT color="green">415</FONT>        }<a name="line.415"></a>
<FONT color="green">416</FONT>    }<a name="line.416"></a>




























































</PRE>
</BODY>
</HTML>
