You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by di...@apache.org on 2002/04/01 07:46:03 UTC

cvs commit: jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml XMLPreprocessor.html ValidationReflectionHandler.html ValidationHandler.html SuiteHandler.html SessionHandler.html RequestHeaderHandler.html RequestHandler.html ParameterHandler.html LatkaVariableEntityResolver.html LatkaHandler.html FindVariablesHandler.html

dion        02/03/31 21:46:03

  Added:       docs/latka/xref/java/org/apache/commons/latka/xml
                        XMLPreprocessor.html
                        ValidationReflectionHandler.html
                        ValidationHandler.html SuiteHandler.html
                        SessionHandler.html RequestHeaderHandler.html
                        RequestHandler.html ParameterHandler.html
                        LatkaVariableEntityResolver.html LatkaHandler.html
                        FindVariablesHandler.html
  Log:
  New Maven generated site
  
  Revision  Changes    Path
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/XMLPreprocessor.html
  
  Index: XMLPreprocessor.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/XMLPreprocessor.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>   
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> java.io.BufferedReader;
  <a name="63" href="#63">63</a>  <b>import</b> java.io.InputStreamReader;
  <a name="64" href="#64">64</a>  <b>import</b> java.io.IOException;
  <a name="65" href="#65">65</a>  <b>import</b> java.io.Reader;
  <a name="66" href="#66">66</a>  <b>import</b> java.io.StringReader;
  <a name="67" href="#67">67</a>  <b>import</b> java.io.StringWriter;
  <a name="68" href="#68">68</a>  
  <a name="69" href="#69">69</a>  <b>import</b> java.net.URL;
  <a name="70" href="#70">70</a>  
  <a name="71" href="#71">71</a>  <b>import</b> java.util.Properties;
  <a name="72" href="#72">72</a>  <b>import</b> java.util.Set;
  <a name="73" href="#73">73</a>  <b>import</b> java.util.TreeSet;
  <a name="74" href="#74">74</a>  
  <a name="75" href="#75">75</a>  <b>import</b> javax.xml.parsers.ParserConfigurationException;
  <a name="76" href="#76">76</a>  <b>import</b> javax.xml.parsers.SAXParser;
  <a name="77" href="#77">77</a>  <b>import</b> javax.xml.parsers.SAXParserFactory;
  <a name="78" href="#78">78</a>  
  <a name="79" href="#79">79</a>  <b>import</b> javax.xml.transform.Transformer;
  <a name="80" href="#80">80</a>  <b>import</b> javax.xml.transform.TransformerException;
  <a name="81" href="#81">81</a>  <b>import</b> javax.xml.transform.TransformerFactory;
  <a name="82" href="#82">82</a>  <b>import</b> javax.xml.transform.stream.StreamResult; 
  <a name="83" href="#83">83</a>  <b>import</b> javax.xml.transform.stream.StreamSource; 
  <a name="84" href="#84">84</a>  
  <a name="85" href="#85">85</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/index.html">org.apache.commons.latka</a>.<a href="../../../../../org/apache/commons/latka/LatkaProperties.html">LatkaProperties</a>;
  <a name="86" href="#86">86</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/index.html">org.apache.commons.latka</a>.<a href="../../../../../org/apache/commons/latka/Suite.html">Suite</a>;
  <a name="87" href="#87">87</a>  
  <a name="88" href="#88">88</a>  <b>import</b> org.apache.log4j.Category;
  <a name="89" href="#89">89</a>  
  <a name="90" href="#90">90</a>  <b>import</b> org.apache.regexp.RE;
  <a name="91" href="#91">91</a>  <b>import</b> org.apache.regexp.RESyntaxException;
  <a name="92" href="#92">92</a>  
  <a name="93" href="#93">93</a>  <b>import</b> org.xml.sax.InputSource;
  <a name="94" href="#94">94</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="95" href="#95">95</a>  
  <a name="96" href="#96">96</a>  <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="97" href="#97">97</a>  <font color="#AA0000"><i> * Methods for massaging the Latka XML.  Includes methods</font></i>
  <a name="98" href="#98">98</a>  <font color="#AA0000"><i> * for finding and substituting variables in the XML</font></i>
  <a name="99" href="#99">99</a>  <font color="#AA0000"><i> * stream with Latka variables.</font></i>
  <a name="100" href="#100">100</a> <font color="#AA0000"><i> * </font></i>
  <a name="101" href="#101">101</a> <font color="#AA0000"><i> * @author Morgan Delagrange</font></i>
  <a name="102" href="#102">102</a> <font color="#AA0000"><i> * @author dIon Gillard</font></i>
  <a name="103" href="#103">103</a> <font color="#AA0000"><i> * @see org.apache.commons.latka.LatkaProperties</font></i>
  <a name="104" href="#104">104</a> <font color="#AA0000"><i> * @version $Id: XMLPreprocessor.html,v 1.1 2002/04/01 05:46:02 dion Exp $</font></i>
  <a name="105" href="#105">105</a> <font color="#AA0000"><i> */</font></i>
  <a name="106" href="#106">106</a> <b>public</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/XMLPreprocessor.html">XMLPreprocessor</a> {
  <a name="107" href="#107">107</a>     <font color="#329900"><i>// FIXME: format here should be all caps?</font></i>
  <a name="108" href="#108">108</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>* Regular expression for variable name */</font></i></font></i>
  <a name="109" href="#109">109</a>     <b>protected</b> <b>static</b> <b>final</b> String _variableExpr = <font color="#000099">"&#47;&#47;$&#47;&#47;{(.*?)&#47;&#47;}"</font>;
  <a name="110" href="#110">110</a> 
  <a name="111" href="#111">111</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>* log4j Category for output to be logged to */</font></i></font></i>
  <a name="112" href="#112">112</a>     <b>protected</b> <b>static</b> Category _log = 
  <a name="113" href="#113">113</a>         Category.getInstance(XMLPreprocessor.<b>class</b>);
  <a name="114" href="#114">114</a> 
  <a name="115" href="#115">115</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>* singleton used to preprocess */</font></i></font></i>
  <a name="116" href="#116">116</a>     <b>protected</b> <b>static</b> <a href="../../../../../org/apache/commons/latka/xml/XMLPreprocessor.html">XMLPreprocessor</a> _processor = <b>new</b> <a href="../../../../../org/apache/commons/latka/xml/XMLPreprocessor.html">XMLPreprocessor</a>();
  <a name="117" href="#117">117</a>   
  <a name="118" href="#118">118</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="119" href="#119">119</a> <font color="#AA0000"><i>     * Private constructor to stop auto generation of public one</font></i>
  <a name="120" href="#120">120</a> <font color="#AA0000"><i>     */</font></i>
  <a name="121" href="#121">121</a>     <b>private</b> <a href="../../../../../org/apache/commons/latka/xml/XMLPreprocessor.html">XMLPreprocessor</a>() {
  <a name="122" href="#122">122</a>     }
  <a name="123" href="#123">123</a> 
  <a name="124" href="#124">124</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="125" href="#125">125</a> <font color="#AA0000"><i>     * Get an instance of this singleton class</font></i>
  <a name="126" href="#126">126</a> <font color="#AA0000"><i>     * </font></i>
  <a name="127" href="#127">127</a> <font color="#AA0000"><i>     * @return an XML preprocessor object</font></i>
  <a name="128" href="#128">128</a> <font color="#AA0000"><i>     */</font></i>
  <a name="129" href="#129">129</a>     <b>public</b> <b>static</b> <a href="../../../../../org/apache/commons/latka/xml/XMLPreprocessor.html">XMLPreprocessor</a> instance() {
  <a name="130" href="#130">130</a>         <b>return</b> _processor;
  <a name="131" href="#131">131</a>     }
  <a name="132" href="#132">132</a> 
  <a name="133" href="#133">133</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="134" href="#134">134</a> <font color="#AA0000"><i>     * Processes a Suite, preparing it for the final XML </font></i>
  <a name="135" href="#135">135</a> <font color="#AA0000"><i>     * processing.  In essence, this consists of finding</font></i>
  <a name="136" href="#136">136</a> <font color="#AA0000"><i>     * variables in the base XML document, looking for corresponding Latka</font></i>
  <a name="137" href="#137">137</a> <font color="#AA0000"><i>     * properties, and performing the substitutions.</font></i>
  <a name="138" href="#138">138</a> <font color="#AA0000"><i>     * This will only preprocess the base XML document;</font></i>
  <a name="139" href="#139">139</a> <font color="#AA0000"><i>     * the entities will be processed during the SAX parse</font></i>
  <a name="140" href="#140">140</a> <font color="#AA0000"><i>     * itself.  After running this method, it is guaranteed</font></i>
  <a name="141" href="#141">141</a> <font color="#AA0000"><i>     * that the preprocessed document will be stored in</font></i>
  <a name="142" href="#142">142</a> <font color="#AA0000"><i>     * Suite.getReader().</font></i>
  <a name="143" href="#143">143</a> <font color="#AA0000"><i>     * </font></i>
  <a name="144" href="#144">144</a> <font color="#AA0000"><i>     * @param suite Latka suite to preprocess</font></i>
  <a name="145" href="#145">145</a> <font color="#AA0000"><i>     * @throws IOException thrown if the stream could not be read,</font></i>
  <a name="146" href="#146">146</a> <font color="#AA0000"><i>     *                   or if variables could not be substituted</font></i>
  <a name="147" href="#147">147</a> <font color="#AA0000"><i>     *</font></i>
  <a name="148" href="#148">148</a> <font color="#AA0000"><i>     * @see LatkaVariableEntityResolver#resolveEntity(String,String)</font></i>
  <a name="149" href="#149">149</a> <font color="#AA0000"><i>     * @see org.apache.commons.latka.Latka#runTests(Suite,LatkaEventInfo) </font></i>
  <a name="150" href="#150">150</a> <font color="#AA0000"><i>     *      Latka.runTests(Suite,LatkaEventInfo)</font></i>
  <a name="151" href="#151">151</a> <font color="#AA0000"><i>     */</font></i>
  <a name="152" href="#152">152</a>     <b>public</b> <b>void</b> preprocessXml(<a href="../../../../../org/apache/commons/latka/Suite.html">Suite</a> suite) throws IOException {
  <a name="153" href="#153">153</a> 
  <a name="154" href="#154">154</a>         <font color="#329900"><i>// process the base document</font></i>
  <a name="155" href="#155">155</a>         String processedString = <b>null</b>;
  <a name="156" href="#156">156</a>         <b>if</b> (suite.getReader() != <b>null</b>) {
  <a name="157" href="#157">157</a>             processedString = resolveVariables(
  <a name="158" href="#158">158</a>                 stringFromReader(suite.getReader()));
  <a name="159" href="#159">159</a>         } <b>else</b> {
  <a name="160" href="#160">160</a>             processedString = resolveVariables(suite.getURL());
  <a name="161" href="#161">161</a>         }
  <a name="162" href="#162">162</a>         suite.setReader(<b>new</b> StringReader(processedString));
  <a name="163" href="#163">163</a> 
  <a name="164" href="#164">164</a>         <font color="#329900"><i>// entities will be processed during the SAX parse</font></i>
  <a name="165" href="#165">165</a>     }  
  <a name="166" href="#166">166</a> 
  <a name="167" href="#167">167</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="168" href="#168">168</a> <font color="#AA0000"><i>     * Given an XML suite, find the names </font></i>
  <a name="169" href="#169">169</a> <font color="#AA0000"><i>     * of all variables that must be set in the LatkaProperties.</font></i>
  <a name="170" href="#170">170</a> <font color="#AA0000"><i>     * Will use SAX to recurse through external entities.</font></i>
  <a name="171" href="#171">171</a> <font color="#AA0000"><i>     * </font></i>
  <a name="172" href="#172">172</a> <font color="#AA0000"><i>     * @param suite A Latka suite</font></i>
  <a name="173" href="#173">173</a> <font color="#AA0000"><i>     * @throws IOException when variables can't be resolved or resources</font></i>
  <a name="174" href="#174">174</a> <font color="#AA0000"><i>     *         aren't accessible</font></i>
  <a name="175" href="#175">175</a> <font color="#AA0000"><i>     * @return Array of variables that must be set.  If no variables</font></i>
  <a name="176" href="#176">176</a> <font color="#AA0000"><i>     *         are present in the suite, a zero-length Set is</font></i>
  <a name="177" href="#177">177</a> <font color="#AA0000"><i>     *         returned.</font></i>
  <a name="178" href="#178">178</a> <font color="#AA0000"><i>     * @see org.apache.commons.latka.LatkaProperties</font></i>
  <a name="179" href="#179">179</a> <font color="#AA0000"><i>     */</font></i>
  <a name="180" href="#180">180</a>     <b>public</b> Set findVariables(<a href="../../../../../org/apache/commons/latka/Suite.html">Suite</a> suite) throws IOException {
  <a name="181" href="#181">181</a> 
  <a name="182" href="#182">182</a>         <font color="#329900"><i>// first, get variables for the base document</font></i>
  <a name="183" href="#183">183</a>         String xml = <b>null</b>;
  <a name="184" href="#184">184</a>         <b>if</b> (suite.getReader() != <b>null</b>) {
  <a name="185" href="#185">185</a>             xml = stringFromReader(suite.getReader()).trim();
  <a name="186" href="#186">186</a>         } <b>else</b> {
  <a name="187" href="#187">187</a>             Reader reader = <b>new</b> InputStreamReader(suite
  <a name="188" href="#188">188</a>                                                   .getURL()
  <a name="189" href="#189">189</a>                                                   .openConnection()
  <a name="190" href="#190">190</a>                                                   .getInputStream());
  <a name="191" href="#191">191</a>             xml = stringFromReader(reader).trim();
  <a name="192" href="#192">192</a>         }
  <a name="193" href="#193">193</a>         <font color="#329900"><i>// accumulate the sets from the Reader and all</font></i>
  <a name="194" href="#194">194</a>         <font color="#329900"><i>// external entities here</font></i>
  <a name="195" href="#195">195</a>         Set set = getLocalVariables(xml);
  <a name="196" href="#196">196</a> 
  <a name="197" href="#197">197</a>         <font color="#329900"><i>// now that we have variables from the initial document,</font></i>
  <a name="198" href="#198">198</a>         <font color="#329900"><i>// perform a SAX parse to find additional variables</font></i>
  <a name="199" href="#199">199</a>         <font color="#329900"><i>// in external entities</font></i>
  <a name="200" href="#200">200</a>         InputSource source = <b>new</b> InputSource(<b>new</b> StringReader(xml));
  <a name="201" href="#201">201</a>         <b>if</b> (suite.getURL() != <b>null</b>) {
  <a name="202" href="#202">202</a>             source.setSystemId(suite.getURL().toString());
  <a name="203" href="#203">203</a>         }
  <a name="204" href="#204">204</a>         set.addAll(getVariablesFromEntities(source));
  <a name="205" href="#205">205</a> 
  <a name="206" href="#206">206</a>         <b>return</b> set;
  <a name="207" href="#207">207</a> 
  <a name="208" href="#208">208</a>     }
  <a name="209" href="#209">209</a> 
  <a name="210" href="#210">210</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="211" href="#211">211</a> <font color="#AA0000"><i>     * @param inputSource source of xml to use for resolution</font></i>
  <a name="212" href="#212">212</a> <font color="#AA0000"><i>     * @throws IOException when variables can't be resolved</font></i>
  <a name="213" href="#213">213</a> <font color="#AA0000"><i>     * @return a set of Latka variables</font></i>
  <a name="214" href="#214">214</a> <font color="#AA0000"><i>     * @deprecated Spelling -- use {@link #getVariablesFromEntities} instead.</font></i>
  <a name="215" href="#215">215</a> <font color="#AA0000"><i>     */</font></i>
  <a name="216" href="#216">216</a>     <b>protected</b> Set getVariablesFromEntites(InputSource inputSource) 
  <a name="217" href="#217">217</a>         throws IOException {
  <a name="218" href="#218">218</a>         <b>return</b> getVariablesFromEntities(inputSource);
  <a name="219" href="#219">219</a>     }
  <a name="220" href="#220">220</a> 
  <a name="221" href="#221">221</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="222" href="#222">222</a> <font color="#AA0000"><i>     * This method uses a special SAX handler to recurse</font></i>
  <a name="223" href="#223">223</a> <font color="#AA0000"><i>     * through the entities of a Latka Suite, finding all</font></i>
  <a name="224" href="#224">224</a> <font color="#AA0000"><i>     * the variables that are referenced.</font></i>
  <a name="225" href="#225">225</a> <font color="#AA0000"><i>     * </font></i>
  <a name="226" href="#226">226</a> <font color="#AA0000"><i>     * @param inputSource SAX InputSource containing the Latka Suite</font></i>
  <a name="227" href="#227">227</a> <font color="#AA0000"><i>     * @return Set of unique Latka variables references in the entities</font></i>
  <a name="228" href="#228">228</a> <font color="#AA0000"><i>     * @throws IOException if any errors occur during the XML processing</font></i>
  <a name="229" href="#229">229</a> <font color="#AA0000"><i>     */</font></i>
  <a name="230" href="#230">230</a>     <b>protected</b> Set getVariablesFromEntities(InputSource inputSource) 
  <a name="231" href="#231">231</a>         throws IOException {
  <a name="232" href="#232">232</a>         SAXParserFactory factory = SAXParserFactory.newInstance();
  <a name="233" href="#233">233</a>         factory.setNamespaceAware(<b>true</b>);
  <a name="234" href="#234">234</a> 
  <a name="235" href="#235">235</a>         <a href="../../../../../org/apache/commons/latka/xml/FindVariablesHandler.html">FindVariablesHandler</a> handler = <b>new</b> <a href="../../../../../org/apache/commons/latka/xml/FindVariablesHandler.html">FindVariablesHandler</a>();
  <a name="236" href="#236">236</a>     
  <a name="237" href="#237">237</a>         <b>try</b> {
  <a name="238" href="#238">238</a>             SAXParser parser = factory.newSAXParser();
  <a name="239" href="#239">239</a>       
  <a name="240" href="#240">240</a>             parser.parse(inputSource, handler);
  <a name="241" href="#241">241</a>         } <b>catch</b> (ParserConfigurationException e) {
  <a name="242" href="#242">242</a>             <b>throw</b> <b>new</b> IOException(e.toString());
  <a name="243" href="#243">243</a>         } <b>catch</b> (SAXException e) {
  <a name="244" href="#244">244</a>             <b>throw</b> <b>new</b> IOException(e.toString());
  <a name="245" href="#245">245</a>         }
  <a name="246" href="#246">246</a> 
  <a name="247" href="#247">247</a>         <b>return</b> handler.getVariables();
  <a name="248" href="#248">248</a>     }
  <a name="249" href="#249">249</a>   
  <a name="250" href="#250">250</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="251" href="#251">251</a> <font color="#AA0000"><i>     * </font></i>
  <a name="252" href="#252">252</a> <font color="#AA0000"><i>     * @see #getLocalVariables(String)</font></i>
  <a name="253" href="#253">253</a> <font color="#AA0000"><i>     */</font></i>
  <a name="254" href="#254">254</a>     <b>protected</b> Set getLocalVariables(Reader reader) throws IOException {
  <a name="255" href="#255">255</a>         String xmlString = stringFromReader(reader).trim();
  <a name="256" href="#256">256</a>         <b>return</b> getLocalVariables(xmlString);
  <a name="257" href="#257">257</a>     }
  <a name="258" href="#258">258</a> 
  <a name="259" href="#259">259</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="260" href="#260">260</a> <font color="#AA0000"><i>     * Read the text and find the names of all variables </font></i>
  <a name="261" href="#261">261</a> <font color="#AA0000"><i>     * that must be set in the LatkaProperties.  This method does not</font></i>
  <a name="262" href="#262">262</a> <font color="#AA0000"><i>     * recurse through entities like findVariables.</font></i>
  <a name="263" href="#263">263</a> <font color="#AA0000"><i>     * </font></i>
  <a name="264" href="#264">264</a> <font color="#AA0000"><i>     * @param xmlString a Latka suite fragment</font></i>
  <a name="265" href="#265">265</a> <font color="#AA0000"><i>     * @return Set of variables used in this fragment.  If no variables</font></i>
  <a name="266" href="#266">266</a> <font color="#AA0000"><i>     *         are present in the suite, a zero-length Set is</font></i>
  <a name="267" href="#267">267</a> <font color="#AA0000"><i>     *         returned.</font></i>
  <a name="268" href="#268">268</a> <font color="#AA0000"><i>     * @see org.apache.commons.latka.LatkaProperties</font></i>
  <a name="269" href="#269">269</a> <font color="#AA0000"><i>     */</font></i>
  <a name="270" href="#270">270</a>     <b>protected</b> Set getLocalVariables(String xmlString) {
  <a name="271" href="#271">271</a>     
  <a name="272" href="#272">272</a>         xmlString = stripXmlComments(xmlString);
  <a name="273" href="#273">273</a> 
  <a name="274" href="#274">274</a>         Set set = <b>new</b> TreeSet();
  <a name="275" href="#275">275</a> 
  <a name="276" href="#276">276</a>         <b>try</b> {
  <a name="277" href="#277">277</a>             RE r = <b>new</b> RE(_variableExpr);  <font color="#329900"><i>// Compile expression</font></i>
  <a name="278" href="#278">278</a> 
  <a name="279" href="#279">279</a>             <font color="#329900"><i>//scan the input string match by match</font></i>
  <a name="280" href="#280">280</a>             <b>int</b> bufIndex = 0;
  <a name="281" href="#281">281</a> 
  <a name="282" href="#282">282</a>             <b>while</b> (r.match(xmlString, bufIndex)) {
  <a name="283" href="#283">283</a>                 set.add(r.getParen(1));
  <a name="284" href="#284">284</a>                 bufIndex = r.getParenEnd(0);
  <a name="285" href="#285">285</a>             }
  <a name="286" href="#286">286</a>         } <b>catch</b> (RESyntaxException e) {
  <a name="287" href="#287">287</a>             <font color="#329900"><i>// FIXME: should this really be swallowed?</font></i>
  <a name="288" href="#288">288</a>             e.printStackTrace();
  <a name="289" href="#289">289</a>         }
  <a name="290" href="#290">290</a> 
  <a name="291" href="#291">291</a>         <b>return</b> set;
  <a name="292" href="#292">292</a> 
  <a name="293" href="#293">293</a>     }
  <a name="294" href="#294">294</a> 
  <a name="295" href="#295">295</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="296" href="#296">296</a> <font color="#AA0000"><i>     * @see #resolveVariables(String) </font></i>
  <a name="297" href="#297">297</a> <font color="#AA0000"><i>     */</font></i>
  <a name="298" href="#298">298</a>     <b>protected</b> String resolveVariables(URL url) throws IOException {
  <a name="299" href="#299">299</a>         Reader reader = <b>new</b> InputStreamReader(url.openConnection()
  <a name="300" href="#300">300</a>                                              .getInputStream());
  <a name="301" href="#301">301</a>         <b>return</b> resolveVariables(stringFromReader(reader));
  <a name="302" href="#302">302</a>     }
  <a name="303" href="#303">303</a> 
  <a name="304" href="#304">304</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="305" href="#305">305</a> <font color="#AA0000"><i>     * Given an XML suite, find the corresponding values</font></i>
  <a name="306" href="#306">306</a> <font color="#AA0000"><i>     * of all variables and write them into the stream.</font></i>
  <a name="307" href="#307">307</a> <font color="#AA0000"><i>     * </font></i>
  <a name="308" href="#308">308</a> <font color="#AA0000"><i>     * @param xmlString XML String representing a Latka suite</font></i>
  <a name="309" href="#309">309</a> <font color="#AA0000"><i>     * @return XML String with all variables resolved</font></i>
  <a name="310" href="#310">310</a> <font color="#AA0000"><i>     * @throws IOException if a Latka variable could not be resolved</font></i>
  <a name="311" href="#311">311</a> <font color="#AA0000"><i>     */</font></i>
  <a name="312" href="#312">312</a>     <b>protected</b> String resolveVariables(String xmlString) throws IOException {
  <a name="313" href="#313">313</a> 
  <a name="314" href="#314">314</a>         StringBuffer output = <b>new</b> StringBuffer();
  <a name="315" href="#315">315</a> 
  <a name="316" href="#316">316</a>         Properties props = LatkaProperties.getProperties();
  <a name="317" href="#317">317</a> 
  <a name="318" href="#318">318</a>         <b>try</b> {
  <a name="319" href="#319">319</a>       
  <a name="320" href="#320">320</a>             xmlString = stripXmlComments(xmlString);
  <a name="321" href="#321">321</a> 
  <a name="322" href="#322">322</a>             <font color="#329900"><i>// now, replace the remaining variables</font></i>
  <a name="323" href="#323">323</a>             RE r = <b>new</b> RE(_variableExpr);  <font color="#329900"><i>// Compile expression</font></i>
  <a name="324" href="#324">324</a> 
  <a name="325" href="#325">325</a>             <font color="#329900"><i>//scan the input string match by match, writing to the buffer</font></i>
  <a name="326" href="#326">326</a>             <b>int</b> bufIndex = 0;
  <a name="327" href="#327">327</a> 
  <a name="328" href="#328">328</a>             <b>while</b> (r.match(xmlString, bufIndex)) {
  <a name="329" href="#329">329</a>                 <font color="#329900"><i>// append everything to the beginning of the match</font></i>
  <a name="330" href="#330">330</a>                 output.append(xmlString.substring(bufIndex,
  <a name="331" href="#331">331</a>                                                   r.getParenStart(0)));
  <a name="332" href="#332">332</a>                 <font color="#329900"><i>// move marker to the end of the match</font></i>
  <a name="333" href="#333">333</a>                 bufIndex = r.getParenEnd(0);
  <a name="334" href="#334">334</a> 
  <a name="335" href="#335">335</a>                 String prop = props.getProperty(r.getParen(1));
  <a name="336" href="#336">336</a>                 <b>if</b> (prop == <b>null</b>) {
  <a name="337" href="#337">337</a>                     <b>throw</b> <b>new</b> IOException(<font color="#000099">"Property "</font> + 
  <a name="338" href="#338">338</a>                                           r.getParen(1) + 
  <a name="339" href="#339">339</a>                                           <font color="#000099">" was not defined."</font>);
  <a name="340" href="#340">340</a>                 }
  <a name="341" href="#341">341</a>                 <font color="#329900"><i>// append the substituted value to the end of the output</font></i>
  <a name="342" href="#342">342</a>                 output.append(prop);
  <a name="343" href="#343">343</a>             }
  <a name="344" href="#344">344</a> 
  <a name="345" href="#345">345</a>             <font color="#329900"><i>// grab anything remaining that did not match</font></i>
  <a name="346" href="#346">346</a>             output.append(xmlString.substring(bufIndex, xmlString.length()));
  <a name="347" href="#347">347</a>         } <b>catch</b> (RESyntaxException e) {
  <a name="348" href="#348">348</a>             <font color="#329900"><i>// FIXME: Should this really be swallowed?</font></i>
  <a name="349" href="#349">349</a>             e.printStackTrace();
  <a name="350" href="#350">350</a>         }
  <a name="351" href="#351">351</a> 
  <a name="352" href="#352">352</a>         String outputString = output.toString();
  <a name="353" href="#353">353</a> 
  <a name="354" href="#354">354</a>         <b>return</b> outputString;
  <a name="355" href="#355">355</a> 
  <a name="356" href="#356">356</a>     }
  <a name="357" href="#357">357</a> 
  <a name="358" href="#358">358</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="359" href="#359">359</a> <font color="#AA0000"><i>     * Given a Latka suite, resolve all the entites</font></i>
  <a name="360" href="#360">360</a> <font color="#AA0000"><i>     * (but _not_ the Latka variables), and return one flattened</font></i>
  <a name="361" href="#361">361</a> <font color="#AA0000"><i>     * XML document.  This utility method is useful for</font></i>
  <a name="362" href="#362">362</a> <font color="#AA0000"><i>     * viewing an XML suite as a single document.</font></i>
  <a name="363" href="#363">363</a> <font color="#AA0000"><i>     * </font></i>
  <a name="364" href="#364">364</a> <font color="#AA0000"><i>     * @param suite  a Latka suite</font></i>
  <a name="365" href="#365">365</a> <font color="#AA0000"><i>     * @return flattened XML</font></i>
  <a name="366" href="#366">366</a> <font color="#AA0000"><i>     * @throws IOException if the Latka suite could not be transformed</font></i>
  <a name="367" href="#367">367</a> <font color="#AA0000"><i>     */</font></i>
  <a name="368" href="#368">368</a>     <b>public</b> String identityTransform(<a href="../../../../../org/apache/commons/latka/Suite.html">Suite</a> suite) throws IOException {
  <a name="369" href="#369">369</a> 
  <a name="370" href="#370">370</a>         _log.debug(<font color="#000099">"Setting up transform streams"</font>);
  <a name="371" href="#371">371</a> 
  <a name="372" href="#372">372</a>         StreamSource source = <b>new</b> StreamSource();
  <a name="373" href="#373">373</a>         <b>if</b> (suite.getReader() != <b>null</b>) {
  <a name="374" href="#374">374</a>             _log.debug(<font color="#000099">"Setting input reader"</font>);
  <a name="375" href="#375">375</a>             source.setReader(suite.getReader());
  <a name="376" href="#376">376</a>         }
  <a name="377" href="#377">377</a>         <b>if</b> (suite.getURL() != <b>null</b>) {
  <a name="378" href="#378">378</a>             _log.debug(<font color="#000099">"Setting input URL"</font>);
  <a name="379" href="#379">379</a>             source.setSystemId(suite.getURL().toString());
  <a name="380" href="#380">380</a>         }
  <a name="381" href="#381">381</a> 
  <a name="382" href="#382">382</a>         StringWriter output = <b>new</b> StringWriter();
  <a name="383" href="#383">383</a>         StreamResult result = <b>new</b> StreamResult(output);
  <a name="384" href="#384">384</a> 
  <a name="385" href="#385">385</a>         _log.debug(<font color="#000099">"Performing transformation"</font>);
  <a name="386" href="#386">386</a> 
  <a name="387" href="#387">387</a>         <b>try</b> {
  <a name="388" href="#388">388</a>             <font color="#329900"><i>// we should be able to do identity transforms via </font></i>
  <a name="389" href="#389">389</a>             <font color="#329900"><i>// TransformerFactory.newTransformer(), but this seems broken in </font></i>
  <a name="390" href="#390">390</a>             <font color="#329900"><i>// Xalan 2.1.0, so...</font></i>
  <a name="391" href="#391">391</a>             ClassLoader loader = Thread.currentThread().getContextClassLoader();
  <a name="392" href="#392">392</a>             StreamSource xslSource = <b>new</b> StreamSource(
  <a name="393" href="#393">393</a>                         loader.getResourceAsStream(
  <a name="394" href="#394">394</a>                             <font color="#000099">"org.apache.commons.latka.identityTransform.xsl"</font>));
  <a name="395" href="#395">395</a>       
  <a name="396" href="#396">396</a>             Transformer transformer = TransformerFactory.newInstance()
  <a name="397" href="#397">397</a>                                         .newTransformer(xslSource);
  <a name="398" href="#398">398</a>             transformer.transform(source, result);
  <a name="399" href="#399">399</a>         } <b>catch</b> (TransformerException e) {
  <a name="400" href="#400">400</a>             _log.error(e);
  <a name="401" href="#401">401</a>             <b>throw</b> <b>new</b> IOException(e.toString());
  <a name="402" href="#402">402</a>         }
  <a name="403" href="#403">403</a> 
  <a name="404" href="#404">404</a>         <b>if</b> (_log.isDebugEnabled()) {
  <a name="405" href="#405">405</a>             _log.debug(<font color="#000099">"Transformation output: \n"</font> + output.toString());
  <a name="406" href="#406">406</a>         }
  <a name="407" href="#407">407</a> 
  <a name="408" href="#408">408</a>         <b>return</b> output.toString();
  <a name="409" href="#409">409</a> 
  <a name="410" href="#410">410</a>     }
  <a name="411" href="#411">411</a> 
  <a name="412" href="#412">412</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="413" href="#413">413</a> <font color="#AA0000"><i>     * Remove any comments from the XmlString</font></i>
  <a name="414" href="#414">414</a> <font color="#AA0000"><i>     * </font></i>
  <a name="415" href="#415">415</a> <font color="#AA0000"><i>     * @param xmlString String with XML comments</font></i>
  <a name="416" href="#416">416</a> <font color="#AA0000"><i>     * @return String with no XML comments</font></i>
  <a name="417" href="#417">417</a> <font color="#AA0000"><i>     */</font></i>
  <a name="418" href="#418">418</a>     <b>protected</b> String stripXmlComments(String xmlString) {
  <a name="419" href="#419">419</a>         <b>try</b> {
  <a name="420" href="#420">420</a>             <font color="#329900"><i>//remove anything commented out</font></i>
  <a name="421" href="#421">421</a>             RE removeComments = <b>new</b> RE(<font color="#000099">"&lt;!--.*?--&gt;"</font>, RE.MATCH_SINGLELINE);
  <a name="422" href="#422">422</a>             xmlString = removeComments.subst(xmlString, <font color="#000099">""</font>);
  <a name="423" href="#423">423</a>         } <b>catch</b> (RESyntaxException e) {
  <a name="424" href="#424">424</a>             <font color="#329900"><i>// FIXME: Should this really be swallowed?</font></i>
  <a name="425" href="#425">425</a>             e.printStackTrace();
  <a name="426" href="#426">426</a>         }
  <a name="427" href="#427">427</a> 
  <a name="428" href="#428">428</a>         <b>return</b> xmlString;
  <a name="429" href="#429">429</a>     }
  <a name="430" href="#430">430</a> 
  <a name="431" href="#431">431</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="432" href="#432">432</a> <font color="#AA0000"><i>     * Place the contents of a Reader into a String.</font></i>
  <a name="433" href="#433">433</a> <font color="#AA0000"><i>     * </font></i>
  <a name="434" href="#434">434</a> <font color="#AA0000"><i>     * @param reader text in a Reader</font></i>
  <a name="435" href="#435">435</a> <font color="#AA0000"><i>     * @return text stored as a String</font></i>
  <a name="436" href="#436">436</a> <font color="#AA0000"><i>     * @exception IOException if the Reader could not be accessed</font></i>
  <a name="437" href="#437">437</a> <font color="#AA0000"><i>     */</font></i>
  <a name="438" href="#438">438</a>     <b>protected</b> String stringFromReader(Reader reader) throws IOException {
  <a name="439" href="#439">439</a> 
  <a name="440" href="#440">440</a>         BufferedReader buffReader = <b>new</b> BufferedReader(reader);
  <a name="441" href="#441">441</a> 
  <a name="442" href="#442">442</a>         StringBuffer buff = <b>new</b> StringBuffer();
  <a name="443" href="#443">443</a> 
  <a name="444" href="#444">444</a>         <font color="#329900"><i>// FIXME: Is this really the most efficient way to do it, per line?</font></i>
  <a name="445" href="#445">445</a>         String line = buffReader.readLine();
  <a name="446" href="#446">446</a>         <b>while</b> (line != <b>null</b>) {
  <a name="447" href="#447">447</a>             buff.append(line);
  <a name="448" href="#448">448</a>             buff.append(<font color="#000099">"\n"</font>);
  <a name="449" href="#449">449</a>             line = buffReader.readLine();
  <a name="450" href="#450">450</a>         }
  <a name="451" href="#451">451</a> 
  <a name="452" href="#452">452</a>         reader.close();
  <a name="453" href="#453">453</a> 
  <a name="454" href="#454">454</a>         <b>return</b> buff.toString();
  <a name="455" href="#455">455</a>     }
  <a name="456" href="#456">456</a> }                         
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/ValidationReflectionHandler.html
  
  Index: ValidationReflectionHandler.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/ValidationReflectionHandler.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>   
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> java.beans.Beans;
  <a name="63" href="#63">63</a>  
  <a name="64" href="#64">64</a>  <b>import</b> java.io.IOException;
  <a name="65" href="#65">65</a>  
  <a name="66" href="#66">66</a>  <b>import</b> java.util.Enumeration;
  <a name="67" href="#67">67</a>  <b>import</b> java.util.Properties;
  <a name="68" href="#68">68</a>  
  <a name="69" href="#69">69</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/index.html">org.apache.commons.latka</a>.<a href="../../../../../org/apache/commons/latka/LatkaProperties.html">LatkaProperties</a>;
  <a name="70" href="#70">70</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/event/index.html">org.apache.commons.latka.event</a>.<a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a>;
  <a name="71" href="#71">71</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a>;
  <a name="72" href="#72">72</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a>;
  <a name="73" href="#73">73</a>  
  <a name="74" href="#74">74</a>  <b>import</b> org.apache.log4j.Category;
  <a name="75" href="#75">75</a>  
  <a name="76" href="#76">76</a>  <b>import</b> org.xml.sax.Attributes;
  <a name="77" href="#77">77</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="78" href="#78">78</a>  <b>import</b> org.xml.sax.XMLReader;
  <a name="79" href="#79">79</a>  
  <a name="80" href="#80">80</a>  <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="81" href="#81">81</a>  <font color="#AA0000"><i> * A special LatkaHandler that processes validator tags, and loads the</font></i>
  <a name="82" href="#82">82</a>  <font color="#AA0000"><i> * classes to process the tags on demand</font></i>
  <a name="83" href="#83">83</a>  <font color="#AA0000"><i> * &lt;br /&gt;This allows for pluggable tag handling</font></i>
  <a name="84" href="#84">84</a>  <font color="#AA0000"><i> * @author Morgan Delagrange</font></i>
  <a name="85" href="#85">85</a>  <font color="#AA0000"><i> * @author dIon Gillard</font></i>
  <a name="86" href="#86">86</a>  <font color="#AA0000"><i> * @version $Id: ValidationReflectionHandler.html,v 1.1 2002/04/01 05:46:02 dion Exp $</font></i>
  <a name="87" href="#87">87</a>  <font color="#AA0000"><i> */</font></i>
  <a name="88" href="#88">88</a>  <b>public</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/ValidationReflectionHandler.html">ValidationReflectionHandler</a> <b>extends</b> <a href="../../../../../org/apache/commons/latka/xml/LatkaHandler.html">LatkaHandler</a> {
  <a name="89" href="#89">89</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* the request processed to obtain the response being validated */</font></i></font></i>
  <a name="90" href="#90">90</a>      <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a>  _request  = <b>null</b>;
  <a name="91" href="#91">91</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* the response being validated */</font></i></font></i>
  <a name="92" href="#92">92</a>      <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a> _response = <b>null</b>;
  <a name="93" href="#93">93</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* holds request success/failure details */</font></i></font></i>
  <a name="94" href="#94">94</a>      <b>protected</b> <a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a> _listener = <b>null</b>;
  <a name="95" href="#95">95</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* properties prefix for tags */</font></i></font></i>
  <a name="96" href="#96">96</a>      <b>protected</b> <b>static</b> String _latkaPrefix = <font color="#000099">"latka.validator."</font>;
  <a name="97" href="#97">97</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* context classloader for loading classes */</font></i></font></i>
  <a name="98" href="#98">98</a>      <b>protected</b> ClassLoader _loader = 
  <a name="99" href="#99">99</a>                  Thread.currentThread().getContextClassLoader();
  <a name="100" href="#100">100</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>* log4j category to append output to */</font></i></font></i>
  <a name="101" href="#101">101</a>     <b>protected</b> <b>static</b> <b>final</b> Category log = 
  <a name="102" href="#102">102</a>         Category.getInstance(ValidationReflectionHandler.<b>class</b>);
  <a name="103" href="#103">103</a> 
  <a name="104" href="#104">104</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="105" href="#105">105</a> <font color="#AA0000"><i>     * Create a handler to deal with validator tags and sub tags</font></i>
  <a name="106" href="#106">106</a> <font color="#AA0000"><i>     * @param reader source of XML fragment</font></i>
  <a name="107" href="#107">107</a> <font color="#AA0000"><i>     * @param response the response being validated</font></i>
  <a name="108" href="#108">108</a> <font color="#AA0000"><i>     * @param listener holds request success/failure details</font></i>
  <a name="109" href="#109">109</a> <font color="#AA0000"><i>     */</font></i>    
  <a name="110" href="#110">110</a>     <b>public</b> <a href="../../../../../org/apache/commons/latka/xml/ValidationReflectionHandler.html">ValidationReflectionHandler</a>(XMLReader reader, <a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a> response, 
  <a name="111" href="#111">111</a>                                      <a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a> listener) {
  <a name="112" href="#112">112</a>         <b>super</b>(reader);
  <a name="113" href="#113">113</a>         _response = response;
  <a name="114" href="#114">114</a>         _request  = response.getRequest();
  <a name="115" href="#115">115</a>         _listener = listener;
  <a name="116" href="#116">116</a>     }
  <a name="117" href="#117">117</a> 
  <a name="118" href="#118">118</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="119" href="#119">119</a> <font color="#AA0000"><i>     * Handle the start of element</font></i>
  <a name="120" href="#120">120</a> <font color="#AA0000"><i>     * &lt;br /&gt;If the request has failed, skip processing</font></i>
  <a name="121" href="#121">121</a> <font color="#AA0000"><i>     * &lt;br /&gt;If it's the start of a validate tag, do nothing</font></i>
  <a name="122" href="#122">122</a> <font color="#AA0000"><i>     * &lt;br /&gt;Otherwise, load the handler (based on localName) and delegate</font></i>
  <a name="123" href="#123">123</a> <font color="#AA0000"><i>     * to it</font></i>
  <a name="124" href="#124">124</a> <font color="#AA0000"><i>     *</font></i>
  <a name="125" href="#125">125</a> <font color="#AA0000"><i>     * @param uri namespace URI if namespace processing is being done</font></i>
  <a name="126" href="#126">126</a> <font color="#AA0000"><i>     * @param localName The element type name</font></i>
  <a name="127" href="#127">127</a> <font color="#AA0000"><i>     * @param qName fully qualified element name</font></i>
  <a name="128" href="#128">128</a> <font color="#AA0000"><i>     * @param atts The specified or defaulted attributes</font></i>
  <a name="129" href="#129">129</a> <font color="#AA0000"><i>     * @throws SAXException when any error occurs</font></i>
  <a name="130" href="#130">130</a> <font color="#AA0000"><i>     */</font></i>
  <a name="131" href="#131">131</a>     <b>public</b> <b>void</b> startElement(String uri, String localName, String qName, 
  <a name="132" href="#132">132</a>                              Attributes atts) throws SAXException {
  <a name="133" href="#133">133</a> 
  <a name="134" href="#134">134</a>         <b>if</b> (_listener.didRequestSucceed(_request) == false) {
  <a name="135" href="#135">135</a>             <font color="#329900"><i>// once a validator fails, skip the rest</font></i>
  <a name="136" href="#136">136</a>             <b>return</b>;
  <a name="137" href="#137">137</a>         }
  <a name="138" href="#138">138</a> 
  <a name="139" href="#139">139</a>         <b>if</b> (localName.equals(<font color="#000099">"validate"</font>)) {
  <a name="140" href="#140">140</a>             <b>return</b>;
  <a name="141" href="#141">141</a>         }
  <a name="142" href="#142">142</a> 
  <a name="143" href="#143">143</a>         <font color="#329900"><i>// the name of the custom ValidatorHandler class</font></i>
  <a name="144" href="#144">144</a>         String validatorName = tagNameToClass(localName);
  <a name="145" href="#145">145</a>         <b>if</b> (validatorName == <b>null</b>) {
  <a name="146" href="#146">146</a>             log.debug(<font color="#000099">"Unrecognized tag name for custom validator: "</font>
  <a name="147" href="#147">147</a>                       + localName);
  <a name="148" href="#148">148</a>             <b>return</b>;
  <a name="149" href="#149">149</a>         }
  <a name="150" href="#150">150</a> 
  <a name="151" href="#151">151</a>         log.info(<font color="#000099">"Custom validator class: "</font> + validatorName);
  <a name="152" href="#152">152</a>         log.debug(<font color="#000099">"response = "</font> + _response);
  <a name="153" href="#153">153</a>         <a href="../../../../../org/apache/commons/latka/xml/ValidationHandler.html">ValidationHandler</a> validator = handlerForClass(validatorName);
  <a name="154" href="#154">154</a>         validator.init(_reader, _response, _listener, localName);
  <a name="155" href="#155">155</a>         log.debug(<font color="#000099">"delegating tag: "</font> + localName);
  <a name="156" href="#156">156</a>         validator.delegate(uri, localName, qName, atts);
  <a name="157" href="#157">157</a> 
  <a name="158" href="#158">158</a>     }
  <a name="159" href="#159">159</a> 
  <a name="160" href="#160">160</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="161" href="#161">161</a> <font color="#AA0000"><i>     * at the end of the tag, release resources</font></i>
  <a name="162" href="#162">162</a> <font color="#AA0000"><i>     * @param namespaceURI - The Namespace URI, or the empty string if the</font></i>
  <a name="163" href="#163">163</a> <font color="#AA0000"><i>     *      element has no Namespace URI or if Namespace processing is not </font></i>
  <a name="164" href="#164">164</a> <font color="#AA0000"><i>     *      being performed.</font></i>
  <a name="165" href="#165">165</a> <font color="#AA0000"><i>     * @param localName - The local name (without prefix), or the empty string</font></i>
  <a name="166" href="#166">166</a> <font color="#AA0000"><i>     *      if Namespace processing is not being performed.</font></i>
  <a name="167" href="#167">167</a> <font color="#AA0000"><i>     * @param rawName - The qualified XML 1.0 name (with prefix), or the empty</font></i>
  <a name="168" href="#168">168</a> <font color="#AA0000"><i>     *      string if qualified names are not available.</font></i>
  <a name="169" href="#169">169</a> <font color="#AA0000"><i>     */</font></i>
  <a name="170" href="#170">170</a>     <b>public</b> <b>void</b> endElement(String namespaceURI, String localName, 
  <a name="171" href="#171">171</a>                            String rawName) {
  <a name="172" href="#172">172</a>         <b>if</b> (localName.equals(<font color="#000099">"validate"</font>)) {
  <a name="173" href="#173">173</a>             release();
  <a name="174" href="#174">174</a>         }
  <a name="175" href="#175">175</a>     }
  <a name="176" href="#176">176</a> 
  <a name="177" href="#177">177</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="178" href="#178">178</a> <font color="#AA0000"><i>     * Return a class name for the validator tag given</font></i>
  <a name="179" href="#179">179</a> <font color="#AA0000"><i>     * @return a class name for the validator tag given</font></i>
  <a name="180" href="#180">180</a> <font color="#AA0000"><i>     * @param localName the validator tag name</font></i>
  <a name="181" href="#181">181</a> <font color="#AA0000"><i>     */</font></i>
  <a name="182" href="#182">182</a>     <b>protected</b> String tagNameToClass(String localName) {
  <a name="183" href="#183">183</a>         Properties props = LatkaProperties.getProperties();
  <a name="184" href="#184">184</a>         Enumeration e = props.propertyNames();
  <a name="185" href="#185">185</a>         <b>while</b> (e.hasMoreElements()) {
  <a name="186" href="#186">186</a>             String name = (String) e.nextElement();
  <a name="187" href="#187">187</a>             <font color="#329900"><i>// FIXME: Should use endsWith localName as this should be less</font></i>
  <a name="188" href="#188">188</a>             <font color="#329900"><i>// common</font></i>
  <a name="189" href="#189">189</a>             <b>if</b> (name.startsWith(_latkaPrefix)) {
  <a name="190" href="#190">190</a>                 <b>int</b> index = name.indexOf(_latkaPrefix) + _latkaPrefix.length();
  <a name="191" href="#191">191</a>                 String tagName = name.substring(index, name.length());
  <a name="192" href="#192">192</a>                 <b>if</b> (localName.equals(tagName)) {
  <a name="193" href="#193">193</a>                     <b>return</b> props.getProperty(name);
  <a name="194" href="#194">194</a>                 }
  <a name="195" href="#195">195</a>             }
  <a name="196" href="#196">196</a>         }
  <a name="197" href="#197">197</a> 
  <a name="198" href="#198">198</a>         <b>return</b> <b>null</b>;
  <a name="199" href="#199">199</a>     }
  <a name="200" href="#200">200</a> 
  <a name="201" href="#201">201</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>* </font></i></font></i>
  <a name="202" href="#202">202</a> <font color="#AA0000"><i>     * Provide a validation handler by loading the provided class.</font></i>
  <a name="203" href="#203">203</a> <font color="#AA0000"><i>     * @return a validation handler by loading the provided class</font></i>
  <a name="204" href="#204">204</a> <font color="#AA0000"><i>     * @param validatorClass class name of the validator to be loaded</font></i>
  <a name="205" href="#205">205</a> <font color="#AA0000"><i>     * @throws SAXException when there are issues loading the class</font></i>
  <a name="206" href="#206">206</a> <font color="#AA0000"><i>     */</font></i>
  <a name="207" href="#207">207</a>     <b>protected</b> <a href="../../../../../org/apache/commons/latka/xml/ValidationHandler.html">ValidationHandler</a> handlerForClass(String validatorClass) 
  <a name="208" href="#208">208</a>     throws SAXException {
  <a name="209" href="#209">209</a>         <b>try</b> {
  <a name="210" href="#210">210</a>             <b>return</b> (ValidationHandler) Beans.instantiate(_loader, 
  <a name="211" href="#211">211</a>                                                          validatorClass);
  <a name="212" href="#212">212</a>         } <b>catch</b> (ClassNotFoundException e) {
  <a name="213" href="#213">213</a>             <b>throw</b> <b>new</b> SAXException(e);
  <a name="214" href="#214">214</a>         } <b>catch</b> (IOException e) {
  <a name="215" href="#215">215</a>             <b>throw</b> <b>new</b> SAXException(e);
  <a name="216" href="#216">216</a>         }
  <a name="217" href="#217">217</a>     }
  <a name="218" href="#218">218</a> }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/ValidationHandler.html
  
  Index: ValidationHandler.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/ValidationHandler.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>   
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/index.html">org.apache.commons.latka</a>.<a href="../../../../../org/apache/commons/latka/Validator.html">Validator</a>;
  <a name="63" href="#63">63</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/index.html">org.apache.commons.latka</a>.<a href="../../../../../org/apache/commons/latka/ValidationException.html">ValidationException</a>;
  <a name="64" href="#64">64</a>  
  <a name="65" href="#65">65</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/event/index.html">org.apache.commons.latka.event</a>.<a href="../../../../../org/apache/commons/latka/event/LatkaEventListener.html">LatkaEventListener</a>;
  <a name="66" href="#66">66</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/event/index.html">org.apache.commons.latka.event</a>.<a href="../../../../../org/apache/commons/latka/event/RequestFailedEvent.html">RequestFailedEvent</a>;
  <a name="67" href="#67">67</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a>;
  <a name="68" href="#68">68</a>  
  <a name="69" href="#69">69</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/util/xml/index.html">org.apache.commons.latka.util.xml</a>.<a href="../../../../../org/apache/commons/latka/util/xml/BasicDelegateHandler.html">BasicDelegateHandler</a>;
  <a name="70" href="#70">70</a>  
  <a name="71" href="#71">71</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="72" href="#72">72</a>  <b>import</b> org.xml.sax.SAXParseException;
  <a name="73" href="#73">73</a>  <b>import</b> org.xml.sax.XMLReader;
  <a name="74" href="#74">74</a>  
  <a name="75" href="#75">75</a>  <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="76" href="#76">76</a>  <font color="#AA0000"><i> * A base class for validation tags</font></i>
  <a name="77" href="#77">77</a>  <font color="#AA0000"><i> *</font></i>
  <a name="78" href="#78">78</a>  <font color="#AA0000"><i> * @author Morgan Delagrange</font></i>
  <a name="79" href="#79">79</a>  <font color="#AA0000"><i> * @author dIon Gillard</font></i>
  <a name="80" href="#80">80</a>  <font color="#AA0000"><i> * @version $Id: ValidationHandler.html,v 1.1 2002/04/01 05:46:02 dion Exp $</font></i>
  <a name="81" href="#81">81</a>  <font color="#AA0000"><i> */</font></i>
  <a name="82" href="#82">82</a>  <b>public</b> <b>abstract</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/ValidationHandler.html">ValidationHandler</a> <b>extends</b> <a href="../../../../../org/apache/commons/latka/util/xml/BasicDelegateHandler.html">BasicDelegateHandler</a> {
  <a name="83" href="#83">83</a>  
  <a name="84" href="#84">84</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* the response being validated */</font></i></font></i>
  <a name="85" href="#85">85</a>      <b>private</b> <a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a> _response = <b>null</b>;
  <a name="86" href="#86">86</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* the listener handling request success/failure etc */</font></i></font></i>
  <a name="87" href="#87">87</a>      <b>private</b> <a href="../../../../../org/apache/commons/latka/event/LatkaEventListener.html">LatkaEventListener</a> _listener = <b>null</b>;
  <a name="88" href="#88">88</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* name of the validating tag */</font></i></font></i>
  <a name="89" href="#89">89</a>      <b>private</b> String _tagName = <b>null</b>;
  <a name="90" href="#90">90</a>  
  <a name="91" href="#91">91</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="92" href="#92">92</a>  <font color="#AA0000"><i>     * Called by the ValidationFactory.</font></i>
  <a name="93" href="#93">93</a>  <font color="#AA0000"><i>     *</font></i>
  <a name="94" href="#94">94</a>  <font color="#AA0000"><i>     * @param listener supplier of information about the suite/progress</font></i>
  <a name="95" href="#95">95</a>  <font color="#AA0000"><i>     * @param tagName name of the validating tag</font></i>
  <a name="96" href="#96">96</a>  <font color="#AA0000"><i>     * @param reader xml to process </font></i>
  <a name="97" href="#97">97</a>  <font color="#AA0000"><i>     * @param response response to validate</font></i>
  <a name="98" href="#98">98</a>  <font color="#AA0000"><i>     */</font></i>
  <a name="99" href="#99">99</a>      <b>void</b> init(XMLReader reader, <a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a> response, <a href="../../../../../org/apache/commons/latka/event/LatkaEventListener.html">LatkaEventListener</a> listener,
  <a name="100" href="#100">100</a>               String tagName) {
  <a name="101" href="#101">101</a>         <b>super</b>.init(reader);
  <a name="102" href="#102">102</a>         _response = response;
  <a name="103" href="#103">103</a>         _listener = listener;
  <a name="104" href="#104">104</a>         _tagName = tagName;
  <a name="105" href="#105">105</a>     }
  <a name="106" href="#106">106</a> 
  <a name="107" href="#107">107</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="108" href="#108">108</a> <font color="#AA0000"><i>     * the response being validated</font></i>
  <a name="109" href="#109">109</a> <font color="#AA0000"><i>     * @return the response being validated</font></i>
  <a name="110" href="#110">110</a> <font color="#AA0000"><i>     */</font></i>
  <a name="111" href="#111">111</a>     <b>public</b> <a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a> getResponse() {
  <a name="112" href="#112">112</a>         <b>return</b> _response;
  <a name="113" href="#113">113</a>     }
  <a name="114" href="#114">114</a> 
  <a name="115" href="#115">115</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="116" href="#116">116</a> <font color="#AA0000"><i>     * validate the response using the validator provided</font></i>
  <a name="117" href="#117">117</a> <font color="#AA0000"><i>     * @param validator the object that performs validation</font></i>
  <a name="118" href="#118">118</a> <font color="#AA0000"><i>     */</font></i>
  <a name="119" href="#119">119</a>     <b>public</b> <b>void</b> validate(<a href="../../../../../org/apache/commons/latka/Validator.html">Validator</a> validator) {
  <a name="120" href="#120">120</a>         log.debug(<font color="#000099">"performing custom validation"</font>);
  <a name="121" href="#121">121</a>         log.debug(<font color="#000099">"validator = "</font> + validator);
  <a name="122" href="#122">122</a>         log.debug(<font color="#000099">"response = "</font> + _response);
  <a name="123" href="#123">123</a>         <b>try</b> {
  <a name="124" href="#124">124</a>             validator.validate(_response);
  <a name="125" href="#125">125</a>         } <b>catch</b> (ValidationException e) {
  <a name="126" href="#126">126</a>             _listener.requestFailed(
  <a name="127" href="#127">127</a>                 <b>new</b> <a href="../../../../../org/apache/commons/latka/event/RequestFailedEvent.html">RequestFailedEvent</a>(_response.getRequest(), _response, e));
  <a name="128" href="#128">128</a>         }
  <a name="129" href="#129">129</a> 
  <a name="130" href="#130">130</a>         log.debug(<font color="#000099">"custom validation complete"</font>);
  <a name="131" href="#131">131</a>         release();
  <a name="132" href="#132">132</a>     }
  <a name="133" href="#133">133</a>   
  <a name="134" href="#134">134</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="135" href="#135">135</a> <font color="#AA0000"><i>     * @return  the name of the tag</font></i>
  <a name="136" href="#136">136</a> <font color="#AA0000"><i>     */</font></i>
  <a name="137" href="#137">137</a>     <b>public</b> String getTagName() {
  <a name="138" href="#138">138</a>         <b>return</b> _tagName;
  <a name="139" href="#139">139</a>     }
  <a name="140" href="#140">140</a> 
  <a name="141" href="#141">141</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="142" href="#142">142</a> <font color="#AA0000"><i>     * @param e error that has occurred</font></i>
  <a name="143" href="#143">143</a> <font color="#AA0000"><i>     * @throws SAXException to indicate the error has occurred</font></i>
  <a name="144" href="#144">144</a> <font color="#AA0000"><i>     */</font></i>
  <a name="145" href="#145">145</a>     <b>public</b> <b>void</b> error(SAXParseException e) throws SAXException {
  <a name="146" href="#146">146</a>         <b>throw</b> e;
  <a name="147" href="#147">147</a>     }
  <a name="148" href="#148">148</a> 
  <a name="149" href="#149">149</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="150" href="#150">150</a> <font color="#AA0000"><i>     * @param e error that has occurred</font></i>
  <a name="151" href="#151">151</a> <font color="#AA0000"><i>     * @throws SAXException to indicate the error has occurred</font></i>
  <a name="152" href="#152">152</a> <font color="#AA0000"><i>     */</font></i>
  <a name="153" href="#153">153</a>     <b>public</b> <b>void</b> warning(SAXParseException e) throws SAXException {
  <a name="154" href="#154">154</a>         <b>throw</b> e;
  <a name="155" href="#155">155</a>     }
  <a name="156" href="#156">156</a> 
  <a name="157" href="#157">157</a> }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/SuiteHandler.html
  
  Index: SuiteHandler.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/SuiteHandler.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>   
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> java.util.HashMap;
  <a name="63" href="#63">63</a>  <b>import</b> java.util.Map;
  <a name="64" href="#64">64</a>  <b>import</b> java.util.Properties;
  <a name="65" href="#65">65</a>  
  <a name="66" href="#66">66</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/index.html">org.apache.commons.latka</a>.<a href="../../../../../org/apache/commons/latka/LatkaProperties.html">LatkaProperties</a>;
  <a name="67" href="#67">67</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/event/index.html">org.apache.commons.latka.event</a>.<a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a>;
  <a name="68" href="#68">68</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/event/index.html">org.apache.commons.latka.event</a>.<a href="../../../../../org/apache/commons/latka/event/SuiteCompletedEvent.html">SuiteCompletedEvent</a>;
  <a name="69" href="#69">69</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a>;
  <a name="70" href="#70">70</a>  
  <a name="71" href="#71">71</a>  <b>import</b> org.apache.log4j.Category;
  <a name="72" href="#72">72</a>  
  <a name="73" href="#73">73</a>  <b>import</b> org.xml.sax.Attributes;
  <a name="74" href="#74">74</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="75" href="#75">75</a>  <b>import</b> org.xml.sax.XMLReader;
  <a name="76" href="#76">76</a>  
  <a name="77" href="#77">77</a>  <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="78" href="#78">78</a>  <font color="#AA0000"><i> * Handle the processing of the suite tag</font></i>
  <a name="79" href="#79">79</a>  <font color="#AA0000"><i> *</font></i>
  <a name="80" href="#80">80</a>  <font color="#AA0000"><i> * @author Morgan Delagrange</font></i>
  <a name="81" href="#81">81</a>  <font color="#AA0000"><i> * @author dIon Gillard</font></i>
  <a name="82" href="#82">82</a>  <font color="#AA0000"><i> * @version $Id: SuiteHandler.html,v 1.1 2002/04/01 05:46:02 dion Exp $</font></i>
  <a name="83" href="#83">83</a>  <font color="#AA0000"><i> */</font></i>
  <a name="84" href="#84">84</a>  <b>public</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/SuiteHandler.html">SuiteHandler</a> <b>extends</b> <a href="../../../../../org/apache/commons/latka/xml/LatkaHandler.html">LatkaHandler</a> {
  <a name="85" href="#85">85</a>  
  <a name="86" href="#86">86</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* listener to fire events to */</font></i></font></i>
  <a name="87" href="#87">87</a>      <b>protected</b> <a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a> _listener = <b>null</b>;
  <a name="88" href="#88">88</a>  
  <a name="89" href="#89">89</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* log4j category to append output to */</font></i></font></i>
  <a name="90" href="#90">90</a>      <b>protected</b> <b>static</b> Category _log = 
  <a name="91" href="#91">91</a>          Category.getInstance(SuiteHandler.<b>class</b>);
  <a name="92" href="#92">92</a>  
  <a name="93" href="#93">93</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* FIXME: not really used in this class */</font></i></font></i>
  <a name="94" href="#94">94</a>      <b>protected</b> Map _sessionCache = <b>new</b> HashMap();
  <a name="95" href="#95">95</a>  
  <a name="96" href="#96">96</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="97" href="#97">97</a>  <font color="#AA0000"><i>     * Create a new Suite handler with the given XML data and event listener</font></i>
  <a name="98" href="#98">98</a>  <font color="#AA0000"><i>     * @param reader the source of XML</font></i>
  <a name="99" href="#99">99</a>  <font color="#AA0000"><i>     * @param listener used to notify of completion and other events</font></i>
  <a name="100" href="#100">100</a> <font color="#AA0000"><i>     */</font></i>
  <a name="101" href="#101">101</a>     <b>public</b> <a href="../../../../../org/apache/commons/latka/xml/SuiteHandler.html">SuiteHandler</a>(XMLReader reader, <a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a> listener) {
  <a name="102" href="#102">102</a>         <b>super</b>(reader);
  <a name="103" href="#103">103</a>         _listener = listener;
  <a name="104" href="#104">104</a>         _log.debug(<font color="#000099">"suite handler instantiated"</font>);
  <a name="105" href="#105">105</a>     }
  <a name="106" href="#106">106</a> 
  <a name="107" href="#107">107</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="108" href="#108">108</a> <font color="#AA0000"><i>     * On start of&lt;br /&gt;</font></i>
  <a name="109" href="#109">109</a> <font color="#AA0000"><i>     * suite: store defaultHost and defaultPort attributes as properties &lt;br /&gt;</font></i>
  <a name="110" href="#110">110</a> <font color="#AA0000"><i>     * session: create a session handler and delegate to it &lt;br /&gt;</font></i>
  <a name="111" href="#111">111</a> <font color="#AA0000"><i>     * request: create a new session and a request handler and delegate</font></i>
  <a name="112" href="#112">112</a> <font color="#AA0000"><i>     *</font></i>
  <a name="113" href="#113">113</a> <font color="#AA0000"><i>     * @param uri namespace URI if namespace processing is being done</font></i>
  <a name="114" href="#114">114</a> <font color="#AA0000"><i>     * @param localName The element type name</font></i>
  <a name="115" href="#115">115</a> <font color="#AA0000"><i>     * @param qName fully qualified element name</font></i>
  <a name="116" href="#116">116</a> <font color="#AA0000"><i>     * @param atts The specified or defaulted attributes</font></i>
  <a name="117" href="#117">117</a> <font color="#AA0000"><i>     * @throws SAXException due to interface requirements</font></i>
  <a name="118" href="#118">118</a> <font color="#AA0000"><i>     */</font></i>
  <a name="119" href="#119">119</a>     <b>public</b> <b>void</b> startElement(String uri, String localName, String qName,
  <a name="120" href="#120">120</a>                              Attributes atts) throws SAXException{
  <a name="121" href="#121">121</a> 
  <a name="122" href="#122">122</a>         <b>if</b> (localName.equals(<font color="#000099">"suite"</font>)) {
  <a name="123" href="#123">123</a> 
  <a name="124" href="#124">124</a>             Properties props = LatkaProperties.getProperties();
  <a name="125" href="#125">125</a> 
  <a name="126" href="#126">126</a>             String defaultHost = atts.getValue(<font color="#000099">"defaultHost"</font>);
  <a name="127" href="#127">127</a>             <b>if</b> (defaultHost != <b>null</b>) {
  <a name="128" href="#128">128</a>                 props.setProperty(<font color="#000099">"latka.defaultHost"</font>, defaultHost);
  <a name="129" href="#129">129</a>             } <b>else</b> {
  <a name="130" href="#130">130</a>                 <font color="#329900"><i>// clear this property, so that its value is not</font></i>
  <a name="131" href="#131">131</a>                 <font color="#329900"><i>// leaked from a previous invocation</font></i>
  <a name="132" href="#132">132</a>                 props.remove(<font color="#000099">"latka.defaultHost"</font>);
  <a name="133" href="#133">133</a>             }
  <a name="134" href="#134">134</a> 
  <a name="135" href="#135">135</a>             String portString = atts.getValue(<font color="#000099">"defaultPort"</font>);
  <a name="136" href="#136">136</a>             <b>if</b> (portString != <b>null</b>) {
  <a name="137" href="#137">137</a>                 props.setProperty(<font color="#000099">"latka.defaultPort"</font>, portString);
  <a name="138" href="#138">138</a>             } <b>else</b> {
  <a name="139" href="#139">139</a>                 props.remove(<font color="#000099">"latka.defaultPort"</font>);
  <a name="140" href="#140">140</a>             }
  <a name="141" href="#141">141</a> 
  <a name="142" href="#142">142</a>         } <b>else</b> <b>if</b> (localName.equals(<font color="#000099">"session"</font>)) {
  <a name="143" href="#143">143</a> 
  <a name="144" href="#144">144</a>             <a href="../../../../../org/apache/commons/latka/xml/SessionHandler.html">SessionHandler</a> handler = <b>new</b> <a href="../../../../../org/apache/commons/latka/xml/SessionHandler.html">SessionHandler</a>(_reader, _listener,
  <a name="145" href="#145">145</a>                                                         _sessionCache);
  <a name="146" href="#146">146</a>             handler.delegate(uri, localName, qName, atts);
  <a name="147" href="#147">147</a> 
  <a name="148" href="#148">148</a>         } <b>else</b> <b>if</b> (localName.equals(<font color="#000099">"request"</font>)) {
  <a name="149" href="#149">149</a>             <font color="#329900"><i>// implicit session</font></i>
  <a name="150" href="#150">150</a>             <a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a> session = <b>new</b> <a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a>();
  <a name="151" href="#151">151</a>             <a href="../../../../../org/apache/commons/latka/xml/RequestHandler.html">RequestHandler</a> handler =
  <a name="152" href="#152">152</a>                 <b>new</b> <a href="../../../../../org/apache/commons/latka/xml/RequestHandler.html">RequestHandler</a>(_reader, session, _listener);
  <a name="153" href="#153">153</a>             handler.delegate(uri, localName, qName, atts);
  <a name="154" href="#154">154</a>         }
  <a name="155" href="#155">155</a>     }
  <a name="156" href="#156">156</a> 
  <a name="157" href="#157">157</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="158" href="#158">158</a> <font color="#AA0000"><i>     * fire suiteCompleted to the listener when the suite tag end is reached</font></i>
  <a name="159" href="#159">159</a> <font color="#AA0000"><i>     * @param namespaceURI - The Namespace URI, or the empty string if the</font></i>
  <a name="160" href="#160">160</a> <font color="#AA0000"><i>     *      element has no Namespace URI or if Namespace processing is not </font></i>
  <a name="161" href="#161">161</a> <font color="#AA0000"><i>     *      being performed</font></i>
  <a name="162" href="#162">162</a> <font color="#AA0000"><i>     * @param localName - The local name (without prefix), or the empty string</font></i>
  <a name="163" href="#163">163</a> <font color="#AA0000"><i>     *      if Namespace processing is not being performed</font></i>
  <a name="164" href="#164">164</a> <font color="#AA0000"><i>     * @param rawName - The qualified XML 1.0 name (with prefix), or the empty</font></i>
  <a name="165" href="#165">165</a> <font color="#AA0000"><i>     *      string if qualified names are not available</font></i>
  <a name="166" href="#166">166</a> <font color="#AA0000"><i>     * @throws SAXException when errors occur</font></i>
  <a name="167" href="#167">167</a> <font color="#AA0000"><i>     */</font></i>
  <a name="168" href="#168">168</a>     <b>public</b> <b>void</b> endElement(String namespaceURI, String localName,
  <a name="169" href="#169">169</a>                            String rawName) throws SAXException {
  <a name="170" href="#170">170</a>         <b>if</b> (localName.equals(<font color="#000099">"suite"</font>)) {
  <a name="171" href="#171">171</a>             _listener.suiteCompleted(<b>new</b> <a href="../../../../../org/apache/commons/latka/event/SuiteCompletedEvent.html">SuiteCompletedEvent</a>());
  <a name="172" href="#172">172</a>         }
  <a name="173" href="#173">173</a>     }
  <a name="174" href="#174">174</a> 
  <a name="175" href="#175">175</a> }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/SessionHandler.html
  
  Index: SessionHandler.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/SessionHandler.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights</font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer.</font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:</font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the</font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written</font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> java.util.Map;
  <a name="63" href="#63">63</a>  
  <a name="64" href="#64">64</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/event/index.html">org.apache.commons.latka.event</a>.<a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a>;
  <a name="65" href="#65">65</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a>;
  <a name="66" href="#66">66</a>  
  <a name="67" href="#67">67</a>  <b>import</b> org.apache.log4j.Category;
  <a name="68" href="#68">68</a>  
  <a name="69" href="#69">69</a>  <b>import</b> org.xml.sax.Attributes;
  <a name="70" href="#70">70</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="71" href="#71">71</a>  <b>import</b> org.xml.sax.XMLReader;
  <a name="72" href="#72">72</a>  
  <a name="73" href="#73">73</a>  <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="74" href="#74">74</a>  <font color="#AA0000"><i> * FIXME: Needs docs</font></i>
  <a name="75" href="#75">75</a>  <font color="#AA0000"><i> *</font></i>
  <a name="76" href="#76">76</a>  <font color="#AA0000"><i> * @author Morgan Delagrange</font></i>
  <a name="77" href="#77">77</a>  <font color="#AA0000"><i> * @author dIon Gillard</font></i>
  <a name="78" href="#78">78</a>  <font color="#AA0000"><i> * @version $Id: SessionHandler.html,v 1.1 2002/04/01 05:46:02 dion Exp $</font></i>
  <a name="79" href="#79">79</a>  <font color="#AA0000"><i> */</font></i>
  <a name="80" href="#80">80</a>  <b>public</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/SessionHandler.html">SessionHandler</a> <b>extends</b> <a href="../../../../../org/apache/commons/latka/xml/LatkaHandler.html">LatkaHandler</a> {
  <a name="81" href="#81">81</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* listener to receive events as they occurr*/</font></i></font></i>
  <a name="82" href="#82">82</a>      <b>protected</b> <a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a> _listener = <b>null</b>;
  <a name="83" href="#83">83</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* the http session*/</font></i></font></i>
  <a name="84" href="#84">84</a>      <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a> _session = <b>null</b>;
  <a name="85" href="#85">85</a>      
  <a name="86" href="#86">86</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* session cache */</font></i></font></i>
  <a name="87" href="#87">87</a>      <b>protected</b> Map _sessionCache = <b>null</b>;
  <a name="88" href="#88">88</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>* log4j category to append data to */</font></i></font></i>
  <a name="89" href="#89">89</a>      <b>protected</b> <b>static</b> Category _log = Category.getInstance(SessionHandler.<b>class</b>);
  <a name="90" href="#90">90</a>      
  <a name="91" href="#91">91</a>      <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="92" href="#92">92</a>  <font color="#AA0000"><i>     * @param reader source of XML data</font></i>
  <a name="93" href="#93">93</a>  <font color="#AA0000"><i>     * @param listener to broadcast events to</font></i>
  <a name="94" href="#94">94</a>  <font color="#AA0000"><i>     * @param sessionCache sessions shared between handlers</font></i>
  <a name="95" href="#95">95</a>  <font color="#AA0000"><i>     */</font></i>
  <a name="96" href="#96">96</a>      <b>public</b> <a href="../../../../../org/apache/commons/latka/xml/SessionHandler.html">SessionHandler</a>(XMLReader reader, <a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a> listener,
  <a name="97" href="#97">97</a>                             Map sessionCache) {
  <a name="98" href="#98">98</a>          <b>super</b>(reader);
  <a name="99" href="#99">99</a>          _listener = listener;
  <a name="100" href="#100">100</a>         <font color="#329900"><i>// the suite handler class is responsible for storing</font></i>
  <a name="101" href="#101">101</a>         <font color="#329900"><i>// the session cache</font></i>
  <a name="102" href="#102">102</a>         _sessionCache = sessionCache;
  <a name="103" href="#103">103</a>         log.debug(<font color="#000099">"session handler instantiated"</font>);
  <a name="104" href="#104">104</a>     }
  <a name="105" href="#105">105</a>     
  <a name="106" href="#106">106</a>     <b>public</b> <b>void</b> startElement(String uri, String localName, String qName,
  <a name="107" href="#107">107</a>                              Attributes atts) throws SAXException {
  <a name="108" href="#108">108</a>         <b>if</b> (localName.equals(<font color="#000099">"session"</font>)) {
  <a name="109" href="#109">109</a>             _session = generateSession(atts);
  <a name="110" href="#110">110</a>         } <b>else</b> <b>if</b> (localName.equals(<font color="#000099">"request"</font>)) {
  <a name="111" href="#111">111</a>             <a href="../../../../../org/apache/commons/latka/xml/RequestHandler.html">RequestHandler</a> handler = <b>null</b>;
  <a name="112" href="#112">112</a>             <b>if</b> (_listener.didSessionSucceed(_session) == false) {
  <a name="113" href="#113">113</a>                 handler = <b>new</b> <a href="../../../../../org/apache/commons/latka/xml/RequestHandler.html">RequestHandler</a>(_reader, _session, _listener, <b>true</b>);
  <a name="114" href="#114">114</a>             } <b>else</b> {
  <a name="115" href="#115">115</a>                 handler = <b>new</b> <a href="../../../../../org/apache/commons/latka/xml/RequestHandler.html">RequestHandler</a>(_reader, _session, _listener);
  <a name="116" href="#116">116</a>             }
  <a name="117" href="#117">117</a>             handler.delegate(uri, localName, qName, atts);
  <a name="118" href="#118">118</a>         }
  <a name="119" href="#119">119</a>     }
  <a name="120" href="#120">120</a>     
  <a name="121" href="#121">121</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="122" href="#122">122</a> <font color="#AA0000"><i>     * Process an end session tag by releasing resources</font></i>
  <a name="123" href="#123">123</a> <font color="#AA0000"><i>     * @param namespaceURI - The Namespace URI, or the empty string if the</font></i>
  <a name="124" href="#124">124</a> <font color="#AA0000"><i>     *      element has no Namespace URI or if Namespace processing is not </font></i>
  <a name="125" href="#125">125</a> <font color="#AA0000"><i>     *      being performed</font></i>
  <a name="126" href="#126">126</a> <font color="#AA0000"><i>     * @param localName - The local name (without prefix), or the empty string</font></i>
  <a name="127" href="#127">127</a> <font color="#AA0000"><i>     *      if Namespace processing is not being performed</font></i>
  <a name="128" href="#128">128</a> <font color="#AA0000"><i>     * @param rawName - The qualified XML 1.0 name (with prefix), or the empty</font></i>
  <a name="129" href="#129">129</a> <font color="#AA0000"><i>     *      string if qualified names are not available</font></i>
  <a name="130" href="#130">130</a> <font color="#AA0000"><i>     */</font></i>
  <a name="131" href="#131">131</a>     <b>public</b> <b>void</b> endElement(String namespaceURI, String localName, 
  <a name="132" href="#132">132</a>                            String rawName) {
  <a name="133" href="#133">133</a>         <b>if</b> (localName.equals(<font color="#000099">"session"</font>)) {
  <a name="134" href="#134">134</a>             release();
  <a name="135" href="#135">135</a>         }
  <a name="136" href="#136">136</a>     }
  <a name="137" href="#137">137</a>     
  <a name="138" href="#138">138</a>     
  <a name="139" href="#139">139</a>     <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="140" href="#140">140</a> <font color="#AA0000"><i>     * Checks the session_id and returns a cached SessionImpl</font></i>
  <a name="141" href="#141">141</a> <font color="#AA0000"><i>     * if the id has been used previously</font></i>
  <a name="142" href="#142">142</a> <font color="#AA0000"><i>     *</font></i>
  <a name="143" href="#143">143</a> <font color="#AA0000"><i>     * @param atts   Attributes of the "session" element</font></i>
  <a name="144" href="#144">144</a> <font color="#AA0000"><i>     * @return A SessionImpl object</font></i>
  <a name="145" href="#145">145</a> <font color="#AA0000"><i>     */</font></i>
  <a name="146" href="#146">146</a>     <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a> generateSession(Attributes atts) {
  <a name="147" href="#147">147</a>         
  <a name="148" href="#148">148</a>         String sessionId = atts.getValue(<font color="#000099">"sessionId"</font>);
  <a name="149" href="#149">149</a>         <b>if</b> (sessionId == <b>null</b>) {
  <a name="150" href="#150">150</a>             _log.debug(<font color="#000099">"generating new session with no session id"</font>);
  <a name="151" href="#151">151</a>             <b>return</b> <b>new</b> <a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a>();
  <a name="152" href="#152">152</a>         }
  <a name="153" href="#153">153</a>         
  <a name="154" href="#154">154</a>         <a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a> cachedSession = (SessionImpl) _sessionCache.get(sessionId);
  <a name="155" href="#155">155</a>         <b>if</b> (cachedSession != <b>null</b>) {
  <a name="156" href="#156">156</a>             _log.debug(<font color="#000099">"returning cached session: "</font> + sessionId);
  <a name="157" href="#157">157</a>             <b>return</b> cachedSession;
  <a name="158" href="#158">158</a>         }
  <a name="159" href="#159">159</a>         
  <a name="160" href="#160">160</a>         <a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a> session = <b>new</b> <a href="../../../../../org/apache/commons/latka/http/SessionImpl.html">SessionImpl</a>();
  <a name="161" href="#161">161</a>         _log.debug(<font color="#000099">"generating new session with id: "</font> + sessionId);
  <a name="162" href="#162">162</a>         _sessionCache.put(sessionId, session);
  <a name="163" href="#163">163</a>         <b>return</b> session;
  <a name="164" href="#164">164</a>     }
  <a name="165" href="#165">165</a>     
  <a name="166" href="#166">166</a> }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/RequestHeaderHandler.html
  
  Index: RequestHeaderHandler.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/RequestHeaderHandler.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>   
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a>;
  <a name="63" href="#63">63</a>  
  <a name="64" href="#64">64</a>  <b>import</b> org.apache.log4j.Category;
  <a name="65" href="#65">65</a>  
  <a name="66" href="#66">66</a>  
  <a name="67" href="#67">67</a>  <b>import</b> org.xml.sax.Attributes;
  <a name="68" href="#68">68</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="69" href="#69">69</a>  <b>import</b> org.xml.sax.XMLReader;
  <a name="70" href="#70">70</a>  
  <a name="71" href="#71">71</a>  <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="72" href="#72">72</a>  <font color="#AA0000"><i> * @author Morgan Delagrange</font></i>
  <a name="73" href="#73">73</a>  <font color="#AA0000"><i> * @author dIon Gillard</font></i>
  <a name="74" href="#74">74</a>  <font color="#AA0000"><i> * @version $Id: RequestHeaderHandler.html,v 1.1 2002/04/01 05:46:02 dion Exp $</font></i>
  <a name="75" href="#75">75</a>  <font color="#AA0000"><i> */</font></i>
  <a name="76" href="#76">76</a>  <b>public</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/RequestHeaderHandler.html">RequestHeaderHandler</a> <b>extends</b> <a href="../../../../../org/apache/commons/latka/xml/LatkaHandler.html">LatkaHandler</a> {
  <a name="77" href="#77">77</a>  
  <a name="78" href="#78">78</a>    <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a> _request = <b>null</b>;
  <a name="79" href="#79">79</a>  
  <a name="80" href="#80">80</a>    <b>protected</b> <b>static</b> <b>final</b> Category log = Category.getInstance(RequestHeaderHandler.<b>class</b>);
  <a name="81" href="#81">81</a>  
  <a name="82" href="#82">82</a>    <b>public</b> <a href="../../../../../org/apache/commons/latka/xml/RequestHeaderHandler.html">RequestHeaderHandler</a>(XMLReader reader,
  <a name="83" href="#83">83</a>                            <a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a> request) {
  <a name="84" href="#84">84</a>      <b>super</b>(reader);
  <a name="85" href="#85">85</a>      _request = request;
  <a name="86" href="#86">86</a>    }
  <a name="87" href="#87">87</a>  
  <a name="88" href="#88">88</a>    <b>public</b> <b>void</b> startElement(String uri, String localName, 
  <a name="89" href="#89">89</a>                             String qName, Attributes atts) 
  <a name="90" href="#90">90</a>    throws SAXException {
  <a name="91" href="#91">91</a>  
  <a name="92" href="#92">92</a>      log.info(<font color="#000099">"request header received"</font>);
  <a name="93" href="#93">93</a>  
  <a name="94" href="#94">94</a>      <b>if</b> (localName.equals(<font color="#000099">"requestHeader"</font>)) {
  <a name="95" href="#95">95</a>        log.info(<font color="#000099">"adding header"</font>);
  <a name="96" href="#96">96</a>        _request.addHeader(atts.getValue(<font color="#000099">"headerName"</font>),
  <a name="97" href="#97">97</a>                           atts.getValue(<font color="#000099">"headerValue"</font>));
  <a name="98" href="#98">98</a>      } <b>else</b> {
  <a name="99" href="#99">99</a>        <font color="#329900"><i>// release as soon as all the headers are processed</font></i>
  <a name="100" href="#100">100</a>       release(uri, localName, qName, atts);
  <a name="101" href="#101">101</a>     }
  <a name="102" href="#102">102</a> 
  <a name="103" href="#103">103</a>   }
  <a name="104" href="#104">104</a> 
  <a name="105" href="#105">105</a>   <b>public</b> <b>void</b> endElement(String namespaceURI, String localName, 
  <a name="106" href="#106">106</a>                          String rawName) throws SAXException {
  <a name="107" href="#107">107</a> 
  <a name="108" href="#108">108</a>     <b>if</b> (!localName.equals(<font color="#000099">"requestHeader"</font>)) {
  <a name="109" href="#109">109</a>       release(namespaceURI, localName, rawName);
  <a name="110" href="#110">110</a>     }
  <a name="111" href="#111">111</a> 
  <a name="112" href="#112">112</a>   }
  <a name="113" href="#113">113</a> }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/RequestHandler.html
  
  Index: RequestHandler.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/RequestHandler.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>   
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> java.io.IOException;
  <a name="63" href="#63">63</a>  
  <a name="64" href="#64">64</a>  <b>import</b> java.net.MalformedURLException;
  <a name="65" href="#65">65</a>  <b>import</b> java.net.URL;
  <a name="66" href="#66">66</a>  
  <a name="67" href="#67">67</a>  <b>import</b> java.util.LinkedList;
  <a name="68" href="#68">68</a>  <b>import</b> java.util.List;
  <a name="69" href="#69">69</a>  <b>import</b> java.util.Properties;
  <a name="70" href="#70">70</a>  
  <a name="71" href="#71">71</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/index.html">org.apache.commons.latka</a>.<a href="../../../../../org/apache/commons/latka/LatkaProperties.html">LatkaProperties</a>;
  <a name="72" href="#72">72</a>  
  <a name="73" href="#73">73</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/event/index.html">org.apache.commons.latka.event</a>.*;
  <a name="74" href="#74">74</a>  
  <a name="75" href="#75">75</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/Credentials.html">Credentials</a>;
  <a name="76" href="#76">76</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/CredentialsImpl.html">CredentialsImpl</a>;
  <a name="77" href="#77">77</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a>;
  <a name="78" href="#78">78</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a>;
  <a name="79" href="#79">79</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/Session.html">Session</a>;
  <a name="80" href="#80">80</a>  
  <a name="81" href="#81">81</a>  <b>import</b> org.apache.log4j.Category;
  <a name="82" href="#82">82</a>  
  <a name="83" href="#83">83</a>  <b>import</b> org.xml.sax.Attributes;
  <a name="84" href="#84">84</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="85" href="#85">85</a>  <b>import</b> org.xml.sax.XMLReader;
  <a name="86" href="#86">86</a>  
  <a name="87" href="#87">87</a>  <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="88" href="#88">88</a>  <font color="#AA0000"><i> * FIXME: Needs docs</font></i>
  <a name="89" href="#89">89</a>  <font color="#AA0000"><i> * </font></i>
  <a name="90" href="#90">90</a>  <font color="#AA0000"><i> * @author Morgan Delagrange</font></i>
  <a name="91" href="#91">91</a>  <font color="#AA0000"><i> * @author dIon Gillard</font></i>
  <a name="92" href="#92">92</a>  <font color="#AA0000"><i> * @version $Id: RequestHandler.html,v 1.1 2002/04/01 05:46:02 dion Exp $</font></i>
  <a name="93" href="#93">93</a>  <font color="#AA0000"><i> */</font></i>
  <a name="94" href="#94">94</a>  <b>public</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/RequestHandler.html">RequestHandler</a> <b>extends</b> <a href="../../../../../org/apache/commons/latka/xml/LatkaHandler.html">LatkaHandler</a> {
  <a name="95" href="#95">95</a>    <b>protected</b> <a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a> _listener = <b>null</b>;
  <a name="96" href="#96">96</a>  
  <a name="97" href="#97">97</a>    <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Session.html">Session</a> _session = <b>null</b>;
  <a name="98" href="#98">98</a>    <b>protected</b> String _defaultHost = <b>null</b>;
  <a name="99" href="#99">99</a>    <b>protected</b> <b>int</b> _defaultPort = -1;
  <a name="100" href="#100">100</a> 
  <a name="101" href="#101">101</a>   <b>protected</b> <b>boolean</b> _skipped = false;
  <a name="102" href="#102">102</a> 
  <a name="103" href="#103">103</a>   <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a>  _request = <b>null</b>;
  <a name="104" href="#104">104</a>   <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a> _response = <b>null</b>;
  <a name="105" href="#105">105</a>   <b>protected</b> <b>boolean</b>  _requestExecuted = false;
  <a name="106" href="#106">106</a>   <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Credentials.html">Credentials</a> _credentials = <b>null</b>;
  <a name="107" href="#107">107</a> 
  <a name="108" href="#108">108</a>   <b>protected</b> List _visitedURLs = <b>new</b> LinkedList();
  <a name="109" href="#109">109</a> 
  <a name="110" href="#110">110</a>   <b>protected</b> <b>static</b> <b>final</b> Category _log = 
  <a name="111" href="#111">111</a>   Category.getInstance(RequestHandler.<b>class</b>);
  <a name="112" href="#112">112</a> 
  <a name="113" href="#113">113</a>   <b>public</b> <a href="../../../../../org/apache/commons/latka/xml/RequestHandler.html">RequestHandler</a>(XMLReader reader, <a href="../../../../../org/apache/commons/latka/http/Session.html">Session</a> session,
  <a name="114" href="#114">114</a>                         <a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a> listener)
  <a name="115" href="#115">115</a>   {
  <a name="116" href="#116">116</a>     <b>super</b>(reader);
  <a name="117" href="#117">117</a>     _session = session;
  <a name="118" href="#118">118</a>     _listener = listener;
  <a name="119" href="#119">119</a>     _skipped = false;
  <a name="120" href="#120">120</a>     
  <a name="121" href="#121">121</a>     Properties props = LatkaProperties.getProperties();
  <a name="122" href="#122">122</a>     _defaultHost = props.getProperty(<font color="#000099">"latka.defaultHost"</font>);
  <a name="123" href="#123">123</a>     String portString = props.getProperty(<font color="#000099">"latka.defaultPort"</font>);
  <a name="124" href="#124">124</a>     <b>if</b> (portString != <b>null</b>) {
  <a name="125" href="#125">125</a>       _defaultPort = Integer.parseInt(portString);
  <a name="126" href="#126">126</a>     }
  <a name="127" href="#127">127</a> 
  <a name="128" href="#128">128</a>     _log.debug(<font color="#000099">"request handler instantiated"</font>);
  <a name="129" href="#129">129</a>   }
  <a name="130" href="#130">130</a> 
  <a name="131" href="#131">131</a>   <b>public</b> <a href="../../../../../org/apache/commons/latka/xml/RequestHandler.html">RequestHandler</a>(XMLReader reader,
  <a name="132" href="#132">132</a>                         <a href="../../../../../org/apache/commons/latka/http/Session.html">Session</a> session,
  <a name="133" href="#133">133</a>                         <a href="../../../../../org/apache/commons/latka/event/LatkaEventInfo.html">LatkaEventInfo</a> listener,
  <a name="134" href="#134">134</a>                         <b>boolean</b> skip)
  <a name="135" href="#135">135</a>   {
  <a name="136" href="#136">136</a>     <b>this</b>(reader, session, listener);
  <a name="137" href="#137">137</a>     _skipped = skip;
  <a name="138" href="#138">138</a>   }
  <a name="139" href="#139">139</a> 
  <a name="140" href="#140">140</a>   <b>public</b> <b>void</b> startElement(String uri, String localName,
  <a name="141" href="#141">141</a>                            String qName, Attributes atts)
  <a name="142" href="#142">142</a>   throws SAXException {
  <a name="143" href="#143">143</a> 
  <a name="144" href="#144">144</a>     _log.debug(<font color="#000099">"received start element event"</font>);
  <a name="145" href="#145">145</a> 
  <a name="146" href="#146">146</a>     <b>if</b> (_listener.didRequestSucceed(_request) == false) {
  <a name="147" href="#147">147</a>       <font color="#329900"><i>// if a test in this request has already failed,</font></i>
  <a name="148" href="#148">148</a>       <font color="#329900"><i>// do nothing</font></i>
  <a name="149" href="#149">149</a>       <b>return</b>;
  <a name="150" href="#150">150</a>     }
  <a name="151" href="#151">151</a> 
  <a name="152" href="#152">152</a>     <b>if</b> (localName.equals(<font color="#000099">"request"</font>)) {
  <a name="153" href="#153">153</a>       
  <a name="154" href="#154">154</a>       <b>try</b> {
  <a name="155" href="#155">155</a>         _request = buildRequest(atts);
  <a name="156" href="#156">156</a>       } <b>catch</b> (MalformedURLException e) {
  <a name="157" href="#157">157</a>         <font color="#329900"><i>// error out completely for malformed URLs</font></i>
  <a name="158" href="#158">158</a>         <b>throw</b> <b>new</b> SAXException(e);
  <a name="159" href="#159">159</a>       }
  <a name="160" href="#160">160</a> 
  <a name="161" href="#161">161</a>       <b>if</b> (_skipped) {
  <a name="162" href="#162">162</a>         _listener.requestSkipped(<b>new</b> <a href="../../../../../org/apache/commons/latka/event/RequestSkippedEvent.html">RequestSkippedEvent</a>(_request, <b>null</b>));
  <a name="163" href="#163">163</a>         _log.info(<font color="#000099">"request skipped"</font>);
  <a name="164" href="#164">164</a>       }
  <a name="165" href="#165">165</a>     } <b>else</b> <b>if</b> (localName.equals(<font color="#000099">"credentials"</font>)) {
  <a name="166" href="#166">166</a>       _credentials = <b>new</b> <a href="../../../../../org/apache/commons/latka/http/CredentialsImpl.html">CredentialsImpl</a>(atts.getValue(<font color="#000099">"userName"</font>),
  <a name="167" href="#167">167</a>                                          atts.getValue(<font color="#000099">"password"</font>));
  <a name="168" href="#168">168</a>       _request.setCredentials(_credentials);
  <a name="169" href="#169">169</a>     } <b>else</b> <b>if</b> (localName.equals(<font color="#000099">"requestHeader"</font>)) {  
  <a name="170" href="#170">170</a>       _log.info(<font color="#000099">"adding request headers"</font>);
  <a name="171" href="#171">171</a>       <a href="../../../../../org/apache/commons/latka/xml/RequestHeaderHandler.html">RequestHeaderHandler</a> headerHandler  = <b>new</b> RequestHeaderHandler(_reader,
  <a name="172" href="#172">172</a>                                                                      _request);
  <a name="173" href="#173">173</a>       headerHandler.delegate(uri, localName, qName, atts);
  <a name="174" href="#174">174</a>     } <b>else</b> <b>if</b> (localName.equals(<font color="#000099">"param"</font>)) {
  <a name="175" href="#175">175</a>       _log.info(<font color="#000099">"adding parameters: params should follow"</font>);
  <a name="176" href="#176">176</a>       <a href="../../../../../org/apache/commons/latka/xml/ParameterHandler.html">ParameterHandler</a> paramHandler = <b>new</b> <a href="../../../../../org/apache/commons/latka/xml/ParameterHandler.html">ParameterHandler</a>(_reader,_request);
  <a name="177" href="#177">177</a>       paramHandler.delegate(uri, localName, qName, atts);
  <a name="178" href="#178">178</a>       <b>return</b>;
  <a name="179" href="#179">179</a>     } <b>else</b> <b>if</b> (localName.equals(<font color="#000099">"validate"</font>)) {
  <a name="180" href="#180">180</a> 
  <a name="181" href="#181">181</a>       _log.info(<font color="#000099">"encountered validations"</font>);
  <a name="182" href="#182">182</a> 
  <a name="183" href="#183">183</a>       <b>if</b> (!_skipped) {
  <a name="184" href="#184">184</a>         <b>try</b> {
  <a name="185" href="#185">185</a>           _response = executeRequest();
  <a name="186" href="#186">186</a>           _log.debug(<font color="#000099">"request executed and response obtained"</font>);
  <a name="187" href="#187">187</a>           <a href="../../../../../org/apache/commons/latka/xml/ValidationReflectionHandler.html">ValidationReflectionHandler</a> handler = 
  <a name="188" href="#188">188</a>             <b>new</b> <a href="../../../../../org/apache/commons/latka/xml/ValidationReflectionHandler.html">ValidationReflectionHandler</a>(_reader, _response, _listener);
  <a name="189" href="#189">189</a>           handler.delegate(uri, localName, qName, atts);
  <a name="190" href="#190">190</a>         } <b>catch</b> (IOException e) {
  <a name="191" href="#191">191</a>           _listener.requestError(<b>new</b> <a href="../../../../../org/apache/commons/latka/event/RequestErrorEvent.html">RequestErrorEvent</a>(_request, _response, e));
  <a name="192" href="#192">192</a>         }
  <a name="193" href="#193">193</a>         _requestExecuted = <b>true</b>;
  <a name="194" href="#194">194</a>       }
  <a name="195" href="#195">195</a> 
  <a name="196" href="#196">196</a>     } 
  <a name="197" href="#197">197</a> 
  <a name="198" href="#198">198</a>   }
  <a name="199" href="#199">199</a> 
  <a name="200" href="#200">200</a>   <b>public</b> <b>void</b> endElement(String namespaceURI, String localName,
  <a name="201" href="#201">201</a>                          String rawName) 
  <a name="202" href="#202">202</a>   throws SAXException {
  <a name="203" href="#203">203</a>     <b>if</b> (localName.equals(<font color="#000099">"request"</font>)) {
  <a name="204" href="#204">204</a>       <b>if</b> (_requestExecuted == false && !_skipped) {
  <a name="205" href="#205">205</a>         <b>try</b> {
  <a name="206" href="#206">206</a>           executeRequest();
  <a name="207" href="#207">207</a>           _listener.requestSucceeded(<b>new</b> <a href="../../../../../org/apache/commons/latka/event/RequestSucceededEvent.html">RequestSucceededEvent</a>(_request,
  <a name="208" href="#208">208</a>                                                                _response));
  <a name="209" href="#209">209</a>         } <b>catch</b> (IOException e) {
  <a name="210" href="#210">210</a>           _listener.requestError(<b>new</b> <a href="../../../../../org/apache/commons/latka/event/RequestErrorEvent.html">RequestErrorEvent</a>(_request, _response, e));
  <a name="211" href="#211">211</a>         }
  <a name="212" href="#212">212</a>       } <b>else</b> <b>if</b> (_listener.didRequestSucceed(_request) == <b>true</b>) {
  <a name="213" href="#213">213</a>         <font color="#329900"><i>// broadcast official notification of success</font></i>
  <a name="214" href="#214">214</a>         _listener.requestSucceeded(<b>new</b> <a href="../../../../../org/apache/commons/latka/event/RequestSucceededEvent.html">RequestSucceededEvent</a>(_request,
  <a name="215" href="#215">215</a>                                                              _response));
  <a name="216" href="#216">216</a>       }
  <a name="217" href="#217">217</a> 
  <a name="218" href="#218">218</a>       release();
  <a name="219" href="#219">219</a>     }
  <a name="220" href="#220">220</a>   }
  <a name="221" href="#221">221</a> 
  <a name="222" href="#222">222</a> 
  <a name="223" href="#223">223</a>   <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="224" href="#224">224</a> <font color="#AA0000"><i>   * Executes the request.  In the event of a 301 or 302,</font></i>
  <a name="225" href="#225">225</a> <font color="#AA0000"><i>   * this method may reassign the _request variable to</font></i>
  <a name="226" href="#226">226</a> <font color="#AA0000"><i>   * a different value.</font></i>
  <a name="227" href="#227">227</a> <font color="#AA0000"><i>   */</font></i>
  <a name="228" href="#228">228</a>   <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a> executeRequest() throws IOException {
  <a name="229" href="#229">229</a>     <a href="../../../../../org/apache/commons/latka/http/Response.html">Response</a> response = _request.execute();
  <a name="230" href="#230">230</a> 
  <a name="231" href="#231">231</a>     <b>if</b> (_request.followRedirects() == false) {
  <a name="232" href="#232">232</a>       <b>return</b> response;
  <a name="233" href="#233">233</a>     }
  <a name="234" href="#234">234</a> 
  <a name="235" href="#235">235</a>     <font color="#329900"><i>// execute the request until either we get a non-redirect response, or</font></i>
  <a name="236" href="#236">236</a>     <font color="#329900"><i>// we visit a URL we have already visited</font></i>
  <a name="237" href="#237">237</a>     <b>while</b> (response.getStatusCode() == 301 || response.getStatusCode() == 302) {
  <a name="238" href="#238">238</a>       <font color="#329900"><i>// follow the redirect</font></i>
  <a name="239" href="#239">239</a>       URL url = <b>new</b> URL(response.getHeader(<font color="#000099">"location"</font>));
  <a name="240" href="#240">240</a> 
  <a name="241" href="#241">241</a>       <b>if</b> (_visitedURLs.contains(url.toString())) {
  <a name="242" href="#242">242</a>         <b>return</b> response;
  <a name="243" href="#243">243</a>       }
  <a name="244" href="#244">244</a> 
  <a name="245" href="#245">245</a>       <a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a> request = _session.createRequest(_request.getLabel(),
  <a name="246" href="#246">246</a>                                                url,
  <a name="247" href="#247">247</a>                                                _request.getMethod(),
  <a name="248" href="#248">248</a>                                                <b>true</b>);
  <a name="249" href="#249">249</a>       request.setParameters(_request.getParameters());
  <a name="250" href="#250">250</a>       request.setHeaders(_request.getHeaders());
  <a name="251" href="#251">251</a>       <b>if</b> (_credentials != <b>null</b>) {
  <a name="252" href="#252">252</a>         request.setCredentials(_credentials);
  <a name="253" href="#253">253</a>       }
  <a name="254" href="#254">254</a>       _request = request;
  <a name="255" href="#255">255</a>       response = _request.execute();
  <a name="256" href="#256">256</a>       _visitedURLs.add(url.toString());
  <a name="257" href="#257">257</a>     }
  <a name="258" href="#258">258</a> 
  <a name="259" href="#259">259</a>     <b>return</b> response;
  <a name="260" href="#260">260</a>   }
  <a name="261" href="#261">261</a> 
  <a name="262" href="#262">262</a>   <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a> buildRequest(Attributes atts)
  <a name="263" href="#263">263</a>   throws MalformedURLException {
  <a name="264" href="#264">264</a> 
  <a name="265" href="#265">265</a>     String host = atts.getValue(<font color="#000099">"host"</font>);
  <a name="266" href="#266">266</a>     <b>if</b> (host == <b>null</b>) {
  <a name="267" href="#267">267</a>       host = _defaultHost;
  <a name="268" href="#268">268</a>     }
  <a name="269" href="#269">269</a> 
  <a name="270" href="#270">270</a>     String path   = atts.getValue(<font color="#000099">"path"</font>);
  <a name="271" href="#271">271</a> 
  <a name="272" href="#272">272</a>     <b>boolean</b> secure = false;
  <a name="273" href="#273">273</a>     String secureStr = atts.getValue(<font color="#000099">"secure"</font>);
  <a name="274" href="#274">274</a>     <b>if</b> (<b>null</b> == secureStr) {
  <a name="275" href="#275">275</a>       secure = false;
  <a name="276" href="#276">276</a>     } <b>else</b> <b>if</b> (<font color="#000099">"true"</font>.equalsIgnoreCase(secureStr)) {
  <a name="277" href="#277">277</a>       secure = <b>true</b>;
  <a name="278" href="#278">278</a>     } <b>else</b> {
  <a name="279" href="#279">279</a>       secure = false;
  <a name="280" href="#280">280</a>     }
  <a name="281" href="#281">281</a> 
  <a name="282" href="#282">282</a>     String portString = atts.getValue(<font color="#000099">"port"</font>);
  <a name="283" href="#283">283</a>     <b>int</b> port = _defaultPort;
  <a name="284" href="#284">284</a>     <b>if</b> (portString != <b>null</b>) {
  <a name="285" href="#285">285</a>       port = Integer.parseInt(portString);
  <a name="286" href="#286">286</a>     }
  <a name="287" href="#287">287</a> 
  <a name="288" href="#288">288</a> 
  <a name="289" href="#289">289</a>     URL url = <b>new</b> URL(secure ? <font color="#000099">"https"</font> : <font color="#000099">"http"</font>, host, port, path);
  <a name="290" href="#290">290</a> 
  <a name="291" href="#291">291</a>     String methodString = atts.getValue(<font color="#000099">"method"</font>);
  <a name="292" href="#292">292</a>     <b>int</b> method = -1;
  <a name="293" href="#293">293</a>     <b>if</b> (methodString == <b>null</b>) {
  <a name="294" href="#294">294</a>       method = Request.HTTP_METHOD_GET;
  <a name="295" href="#295">295</a>     } <b>else</b> <b>if</b> (methodString.equalsIgnoreCase(<font color="#000099">"post"</font>)) {
  <a name="296" href="#296">296</a>       method = Request.HTTP_METHOD_POST;
  <a name="297" href="#297">297</a>     } <b>else</b> <b>if</b> (methodString.equalsIgnoreCase(<font color="#000099">"head"</font>)) {
  <a name="298" href="#298">298</a>       method = Request.HTTP_METHOD_HEAD;
  <a name="299" href="#299">299</a>     } <b>else</b> {
  <a name="300" href="#300">300</a>       method = Request.HTTP_METHOD_GET;
  <a name="301" href="#301">301</a>     }
  <a name="302" href="#302">302</a> 
  <a name="303" href="#303">303</a>     String label = atts.getValue(<font color="#000099">"label"</font>);
  <a name="304" href="#304">304</a>     _log.info(<font color="#000099">"creating request with label:"</font>);
  <a name="305" href="#305">305</a>     _log.info(label);
  <a name="306" href="#306">306</a> 
  <a name="307" href="#307">307</a>     <b>boolean</b> followRedirects = <b>true</b>;
  <a name="308" href="#308">308</a>     String followRedirectStr = atts.getValue(<font color="#000099">"followRedirects"</font>);
  <a name="309" href="#309">309</a>     <b>if</b> (<b>null</b> == followRedirectStr) {
  <a name="310" href="#310">310</a>       followRedirects = <b>true</b>;
  <a name="311" href="#311">311</a>     } <b>else</b> <b>if</b> (<font color="#000099">"true"</font>.equalsIgnoreCase(followRedirectStr)) {
  <a name="312" href="#312">312</a>       followRedirects = <b>true</b>;
  <a name="313" href="#313">313</a>     } <b>else</b> {
  <a name="314" href="#314">314</a>       followRedirects = false;
  <a name="315" href="#315">315</a>     }
  <a name="316" href="#316">316</a> 
  <a name="317" href="#317">317</a> 
  <a name="318" href="#318">318</a>     <b>return</b> _session.createRequest(label, url, method, followRedirects);
  <a name="319" href="#319">319</a>   }
  <a name="320" href="#320">320</a> 
  <a name="321" href="#321">321</a>   <b>protected</b> <b>void</b> printFailure(<a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a> req, Exception e) {
  <a name="322" href="#322">322</a>     StringBuffer buf = <b>new</b> StringBuffer();
  <a name="323" href="#323">323</a>     buf.append(<font color="#000099">"REQUEST FAILED for URL "</font>);
  <a name="324" href="#324">324</a>     buf.append(_request.getURL());
  <a name="325" href="#325">325</a>     buf.append(<font color="#000099">": "</font>);
  <a name="326" href="#326">326</a>     buf.append(e);
  <a name="327" href="#327">327</a>     System.out.println(buf.toString());
  <a name="328" href="#328">328</a>   }
  <a name="329" href="#329">329</a> }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/ParameterHandler.html
  
  Index: ParameterHandler.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/ParameterHandler.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>   
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/http/index.html">org.apache.commons.latka.http</a>.<a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a>;
  <a name="63" href="#63">63</a>  
  <a name="64" href="#64">64</a>  <b>import</b> org.xml.sax.Attributes;
  <a name="65" href="#65">65</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="66" href="#66">66</a>  <b>import</b> org.xml.sax.XMLReader;
  <a name="67" href="#67">67</a>  
  <a name="68" href="#68">68</a>  <b>public</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/ParameterHandler.html">ParameterHandler</a> <b>extends</b> <a href="../../../../../org/apache/commons/latka/xml/LatkaHandler.html">LatkaHandler</a> {
  <a name="69" href="#69">69</a>  
  <a name="70" href="#70">70</a>    <b>protected</b> <a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a> _request = <b>null</b>;
  <a name="71" href="#71">71</a>    <b>protected</b> StringBuffer _paramName = <b>null</b>;
  <a name="72" href="#72">72</a>    <b>protected</b> StringBuffer _paramValue = <b>null</b>;
  <a name="73" href="#73">73</a>  
  <a name="74" href="#74">74</a>    <b>protected</b> String _tagName = <b>null</b>;
  <a name="75" href="#75">75</a>    <b>protected</b> String _lastTagName = <b>null</b>;
  <a name="76" href="#76">76</a>  
  <a name="77" href="#77">77</a>    <b>public</b> <a href="../../../../../org/apache/commons/latka/xml/ParameterHandler.html">ParameterHandler</a>(XMLReader reader,
  <a name="78" href="#78">78</a>                            <a href="../../../../../org/apache/commons/latka/http/Request.html">Request</a> request) {
  <a name="79" href="#79">79</a>      <b>super</b>(reader);
  <a name="80" href="#80">80</a>      _request = request;
  <a name="81" href="#81">81</a>    }
  <a name="82" href="#82">82</a>  
  <a name="83" href="#83">83</a>    <b>public</b> <b>void</b> startElement(String uri, String localName, 
  <a name="84" href="#84">84</a>                             String qName, Attributes atts) 
  <a name="85" href="#85">85</a>    throws SAXException {
  <a name="86" href="#86">86</a>      _lastTagName = _tagName;
  <a name="87" href="#87">87</a>      _tagName = localName;
  <a name="88" href="#88">88</a>  
  <a name="89" href="#89">89</a>      <b>if</b> (localName.equals(<font color="#000099">"param"</font>)) {
  <a name="90" href="#90">90</a>        _paramName  = <b>new</b> StringBuffer();
  <a name="91" href="#91">91</a>        _paramValue = <b>new</b> StringBuffer();
  <a name="92" href="#92">92</a>      } <b>else</b> <b>if</b> (localName.equals(<font color="#000099">"paramName"</font>)) {
  <a name="93" href="#93">93</a>      } <b>else</b> <b>if</b> (localName.equals(<font color="#000099">"paramValue"</font>)) {
  <a name="94" href="#94">94</a>      } <b>else</b> {
  <a name="95" href="#95">95</a>        <font color="#329900"><i>// release as soon as all the parameters are processed</font></i>
  <a name="96" href="#96">96</a>        release(uri,localName,qName,atts);
  <a name="97" href="#97">97</a>        <b>return</b>;
  <a name="98" href="#98">98</a>      }
  <a name="99" href="#99">99</a>  
  <a name="100" href="#100">100</a>   }
  <a name="101" href="#101">101</a> 
  <a name="102" href="#102">102</a>   <b>public</b> <b>void</b> <b>char</b>acters(<b>char</b>[] ch, <b>int</b> start, <b>int</b> length) {
  <a name="103" href="#103">103</a>     <b>if</b> (_tagName != <b>null</b>) {
  <a name="104" href="#104">104</a>       <b>if</b> (_tagName.equals(<font color="#000099">"paramName"</font>)) {
  <a name="105" href="#105">105</a>         _paramName.append(ch,start,length);
  <a name="106" href="#106">106</a>       } <b>else</b> <b>if</b> (_tagName.equals(<font color="#000099">"paramValue"</font>)) {
  <a name="107" href="#107">107</a>         _paramValue.append(ch,start,length);
  <a name="108" href="#108">108</a>       }
  <a name="109" href="#109">109</a>     }
  <a name="110" href="#110">110</a>   }
  <a name="111" href="#111">111</a> 
  <a name="112" href="#112">112</a>   <b>public</b> <b>void</b> endElement(String namespaceURI, String localName, 
  <a name="113" href="#113">113</a>                          String rawName) throws SAXException {
  <a name="114" href="#114">114</a>     _tagName = _lastTagName;
  <a name="115" href="#115">115</a> 
  <a name="116" href="#116">116</a>     <b>if</b> (localName.equals(<font color="#000099">"paramValue"</font>)) {
  <a name="117" href="#117">117</a>       _request.addParameter(_paramName.toString(),_paramValue.toString());
  <a name="118" href="#118">118</a>       _tagName = <b>null</b>;
  <a name="119" href="#119">119</a>     } <b>else</b> <b>if</b> (!localName.startsWith(<font color="#000099">"param"</font>)) {
  <a name="120" href="#120">120</a>       release(namespaceURI,localName,rawName);
  <a name="121" href="#121">121</a>     }
  <a name="122" href="#122">122</a> 
  <a name="123" href="#123">123</a>   }
  <a name="124" href="#124">124</a> }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/LatkaVariableEntityResolver.html
  
  Index: LatkaVariableEntityResolver.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/LatkaVariableEntityResolver.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>
  <a name="59" href="#59">59</a>   
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> java.io.IOException;
  <a name="63" href="#63">63</a>  <b>import</b> java.io.StringReader;
  <a name="64" href="#64">64</a>  
  <a name="65" href="#65">65</a>  <b>import</b> java.net.URL;
  <a name="66" href="#66">66</a>  
  <a name="67" href="#67">67</a>  <b>import</b> javax.xml.transform.Source; 
  <a name="68" href="#68">68</a>  <b>import</b> javax.xml.transform.TransformerException;
  <a name="69" href="#69">69</a>  <b>import</b> javax.xml.transform.URIResolver;
  <a name="70" href="#70">70</a>  
  <a name="71" href="#71">71</a>  <b>import</b> javax.xml.transform.sax.SAXSource; 
  <a name="72" href="#72">72</a>  
  <a name="73" href="#73">73</a>  <b>import</b> org.apache.log4j.Category;
  <a name="74" href="#74">74</a>  
  <a name="75" href="#75">75</a>  <b>import</b> org.xml.sax.EntityResolver;
  <a name="76" href="#76">76</a>  <b>import</b> org.xml.sax.InputSource;
  <a name="77" href="#77">77</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="78" href="#78">78</a>  
  <a name="79" href="#79">79</a>  <b>public</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/LatkaVariableEntityResolver.html">LatkaVariableEntityResolver</a> 
  <a name="80" href="#80">80</a>  implements EntityResolver, URIResolver {
  <a name="81" href="#81">81</a>  
  <a name="82" href="#82">82</a>    <b>protected</b> <b>static</b> <b>final</b> Category _log =
  <a name="83" href="#83">83</a>      Category.getInstance(LatkaVariableEntityResolver.<b>class</b>);
  <a name="84" href="#84">84</a>  
  <a name="85" href="#85">85</a>  
  <a name="86" href="#86">86</a>    <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="87" href="#87">87</a>  <font color="#AA0000"><i>   * JAXP equivalent of {@link #resolveEntity(String,String)}.</font></i>
  <a name="88" href="#88">88</a>  <font color="#AA0000"><i>   * </font></i>
  <a name="89" href="#89">89</a>  <font color="#AA0000"><i>   * @param href   URL of the entitiy</font></i>
  <a name="90" href="#90">90</a>  <font color="#AA0000"><i>   * @param base   system id for the entity</font></i>
  <a name="91" href="#91">91</a>  <font color="#AA0000"><i>   * @return JAXP wrapper for the InputSource</font></i>
  <a name="92" href="#92">92</a>  <font color="#AA0000"><i>   * @exception TransformerException</font></i>
  <a name="93" href="#93">93</a>  <font color="#AA0000"><i>   */</font></i>
  <a name="94" href="#94">94</a>    <b>public</b> Source resolve(java.lang.String href,
  <a name="95" href="#95">95</a>                        java.lang.String base)
  <a name="96" href="#96">96</a>    throws TransformerException {
  <a name="97" href="#97">97</a>  
  <a name="98" href="#98">98</a>      <b>try</b> {
  <a name="99" href="#99">99</a>        <b>return</b> <b>new</b> SAXSource(resolveEntity(href,base));
  <a name="100" href="#100">100</a>     } <b>catch</b> (SAXException e) {
  <a name="101" href="#101">101</a>       <b>throw</b> <b>new</b> TransformerException(e.toString());
  <a name="102" href="#102">102</a>     }
  <a name="103" href="#103">103</a> 
  <a name="104" href="#104">104</a>   }
  <a name="105" href="#105">105</a> 
  <a name="106" href="#106">106</a>   <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="107" href="#107">107</a> <font color="#AA0000"><i>   * Preprocesses the URIs, resolving any Latka variables </font></i>
  <a name="108" href="#108">108</a> <font color="#AA0000"><i>   * before returning a modified InputSource.</font></i>
  <a name="109" href="#109">109</a> <font color="#AA0000"><i>   * </font></i>
  <a name="110" href="#110">110</a> <font color="#AA0000"><i>   * @param publicId URL of the entity to retrieve</font></i>
  <a name="111" href="#111">111</a> <font color="#AA0000"><i>   * @param systemId System id for the entity</font></i>
  <a name="112" href="#112">112</a> <font color="#AA0000"><i>   * @return InputSource containing the XML content with all</font></i>
  <a name="113" href="#113">113</a> <font color="#AA0000"><i>   *         variables resolved</font></i>
  <a name="114" href="#114">114</a> <font color="#AA0000"><i>   * @exception SAXException</font></i>
  <a name="115" href="#115">115</a> <font color="#AA0000"><i>   */</font></i>
  <a name="116" href="#116">116</a>   <b>public</b> InputSource resolveEntity(String <b>public</b>Id, String systemId)
  <a name="117" href="#117">117</a>   throws SAXException {
  <a name="118" href="#118">118</a> 
  <a name="119" href="#119">119</a>     _log.debug(<font color="#000099">"Resolving URI: "</font> + systemId);
  <a name="120" href="#120">120</a> 
  <a name="121" href="#121">121</a>     <a href="../../../../../org/apache/commons/latka/xml/XMLPreprocessor.html">XMLPreprocessor</a> process = XMLPreprocessor.instance();
  <a name="122" href="#122">122</a>     <b>try</b> {
  <a name="123" href="#123">123</a>       URL url = <b>new</b> URL(systemId);
  <a name="124" href="#124">124</a>       String xml = process.resolveVariables(url);
  <a name="125" href="#125">125</a>       InputSource source = <b>new</b> InputSource(<b>new</b> StringReader(xml));
  <a name="126" href="#126">126</a>       source.setSystemId(systemId);
  <a name="127" href="#127">127</a>       <b>return</b> source;
  <a name="128" href="#128">128</a>     } <b>catch</b> (IOException e) {
  <a name="129" href="#129">129</a>       <b>throw</b> <b>new</b> SAXException(e);
  <a name="130" href="#130">130</a>     }
  <a name="131" href="#131">131</a>   }
  <a name="132" href="#132">132</a> 
  <a name="133" href="#133">133</a> }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/LatkaHandler.html
  
  Index: LatkaHandler.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/LatkaHandler.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>   
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> <a href="../../../../../org/apache/commons/latka/util/xml/index.html">org.apache.commons.latka.util.xml</a>.<a href="../../../../../org/apache/commons/latka/util/xml/DelegateHandlerImpl.html">DelegateHandlerImpl</a>;
  <a name="63" href="#63">63</a>  
  <a name="64" href="#64">64</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="65" href="#65">65</a>  <b>import</b> org.xml.sax.SAXParseException;
  <a name="66" href="#66">66</a>  <b>import</b> org.xml.sax.XMLReader;
  <a name="67" href="#67">67</a>  
  <a name="68" href="#68">68</a>  <b>public</b> <b>abstract</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/LatkaHandler.html">LatkaHandler</a> <b>extends</b> <a href="../../../../../org/apache/commons/latka/util/xml/DelegateHandlerImpl.html">DelegateHandlerImpl</a> {
  <a name="69" href="#69">69</a>  
  <a name="70" href="#70">70</a>    <b>public</b> <a href="../../../../../org/apache/commons/latka/xml/LatkaHandler.html">LatkaHandler</a>(XMLReader reader) {
  <a name="71" href="#71">71</a>      <b>super</b>(reader);
  <a name="72" href="#72">72</a>    }
  <a name="73" href="#73">73</a>  
  <a name="74" href="#74">74</a>    <b>public</b> <b>void</b> error(SAXParseException e) throws SAXException {
  <a name="75" href="#75">75</a>      <b>throw</b> e;
  <a name="76" href="#76">76</a>    }
  <a name="77" href="#77">77</a>  
  <a name="78" href="#78">78</a>    <b>public</b> <b>void</b> warning(SAXParseException e) throws SAXException {
  <a name="79" href="#79">79</a>      <b>throw</b> e;
  <a name="80" href="#80">80</a>    }
  <a name="81" href="#81">81</a>  
  <a name="82" href="#82">82</a>  }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  
  1.1                  jakarta-commons/docs/latka/xref/java/org/apache/commons/latka/xml/FindVariablesHandler.html
  
  Index: FindVariablesHandler.html
  ===================================================================
  <html>
  <body bgcolor="white">
  <pre>
  <table bgcolor="#FFFFCC" cellpadding="0" cellspacing="0" border="0" width="100%"><a href="../../../../../../../apidocs/org/apache/commons/latka/xml/FindVariablesHandler.html">View Javadoc</a></table>
  <a name="1" href="#1">1</a>   <font color="#329900"><i>/*</font></i>
  <a name="2" href="#2">2</a>   <font color="#329900"><i> * ====================================================================</font></i>
  <a name="3" href="#3">3</a>   <font color="#329900"><i> *</font></i>
  <a name="4" href="#4">4</a>   <font color="#329900"><i> * The Apache Software License, Version 1.1</font></i>
  <a name="5" href="#5">5</a>   <font color="#329900"><i> *</font></i>
  <a name="6" href="#6">6</a>   <font color="#329900"><i> * Copyright (c) 1999 The Apache Software Foundation.  All rights </font></i>
  <a name="7" href="#7">7</a>   <font color="#329900"><i> * reserved.</font></i>
  <a name="8" href="#8">8</a>   <font color="#329900"><i> *</font></i>
  <a name="9" href="#9">9</a>   <font color="#329900"><i> * Redistribution and use in source and binary forms, with or without</font></i>
  <a name="10" href="#10">10</a>  <font color="#329900"><i> * modification, are permitted provided that the following conditions</font></i>
  <a name="11" href="#11">11</a>  <font color="#329900"><i> * are met:</font></i>
  <a name="12" href="#12">12</a>  <font color="#329900"><i> *</font></i>
  <a name="13" href="#13">13</a>  <font color="#329900"><i> * 1. Redistributions of source code must retain the above copyright</font></i>
  <a name="14" href="#14">14</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer. </font></i>
  <a name="15" href="#15">15</a>  <font color="#329900"><i> *</font></i>
  <a name="16" href="#16">16</a>  <font color="#329900"><i> * 2. Redistributions in binary form must reproduce the above copyright</font></i>
  <a name="17" href="#17">17</a>  <font color="#329900"><i> *    notice, this list of conditions and the following disclaimer in</font></i>
  <a name="18" href="#18">18</a>  <font color="#329900"><i> *    the documentation and/or other materials provided with the</font></i>
  <a name="19" href="#19">19</a>  <font color="#329900"><i> *    distribution.</font></i>
  <a name="20" href="#20">20</a>  <font color="#329900"><i> *</font></i>
  <a name="21" href="#21">21</a>  <font color="#329900"><i> * 3. The end-user documentation included with the redistribution, if</font></i>
  <a name="22" href="#22">22</a>  <font color="#329900"><i> *    any, must include the following acknowlegement:  </font></i>
  <a name="23" href="#23">23</a>  <font color="#329900"><i> *       "This product includes software developed by the </font></i>
  <a name="24" href="#24">24</a>  <font color="#329900"><i> *        Apache Software Foundation (<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>)."</font></i>
  <a name="25" href="#25">25</a>  <font color="#329900"><i> *    Alternately, this acknowlegement may appear in the software itself,</font></i>
  <a name="26" href="#26">26</a>  <font color="#329900"><i> *    if and wherever such third-party acknowlegements normally appear.</font></i>
  <a name="27" href="#27">27</a>  <font color="#329900"><i> *</font></i>
  <a name="28" href="#28">28</a>  <font color="#329900"><i> * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software</font></i>
  <a name="29" href="#29">29</a>  <font color="#329900"><i> *    Foundation" must not be used to endorse or promote products derived</font></i>
  <a name="30" href="#30">30</a>  <font color="#329900"><i> *    from this software without prior written permission. For written </font></i>
  <a name="31" href="#31">31</a>  <font color="#329900"><i> *    permission, please contact apache@apache.org.</font></i>
  <a name="32" href="#32">32</a>  <font color="#329900"><i> *</font></i>
  <a name="33" href="#33">33</a>  <font color="#329900"><i> * 5. Products derived from this software may not be called "Apache"</font></i>
  <a name="34" href="#34">34</a>  <font color="#329900"><i> *    nor may "Apache" appear in their names without prior written</font></i>
  <a name="35" href="#35">35</a>  <font color="#329900"><i> *    permission of the Apache Group.</font></i>
  <a name="36" href="#36">36</a>  <font color="#329900"><i> *</font></i>
  <a name="37" href="#37">37</a>  <font color="#329900"><i> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED</font></i>
  <a name="38" href="#38">38</a>  <font color="#329900"><i> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES</font></i>
  <a name="39" href="#39">39</a>  <font color="#329900"><i> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</font></i>
  <a name="40" href="#40">40</a>  <font color="#329900"><i> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR</font></i>
  <a name="41" href="#41">41</a>  <font color="#329900"><i> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</font></i>
  <a name="42" href="#42">42</a>  <font color="#329900"><i> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</font></i>
  <a name="43" href="#43">43</a>  <font color="#329900"><i> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF</font></i>
  <a name="44" href="#44">44</a>  <font color="#329900"><i> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</font></i>
  <a name="45" href="#45">45</a>  <font color="#329900"><i> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</font></i>
  <a name="46" href="#46">46</a>  <font color="#329900"><i> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT</font></i>
  <a name="47" href="#47">47</a>  <font color="#329900"><i> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</font></i>
  <a name="48" href="#48">48</a>  <font color="#329900"><i> * SUCH DAMAGE.</font></i>
  <a name="49" href="#49">49</a>  <font color="#329900"><i> * ====================================================================</font></i>
  <a name="50" href="#50">50</a>  <font color="#329900"><i> *</font></i>
  <a name="51" href="#51">51</a>  <font color="#329900"><i> * This software consists of voluntary contributions made by many</font></i>
  <a name="52" href="#52">52</a>  <font color="#329900"><i> * individuals on behalf of the Apache Software Foundation.  For more</font></i>
  <a name="53" href="#53">53</a>  <font color="#329900"><i> * information on the Apache Software Foundation, please see</font></i>
  <a name="54" href="#54">54</a>  <font color="#329900"><i> * &lt;<a href="http://www.apache.org/&gt" target="alexandria_uri">http://www.apache.org/&gt</a>;.</font></i>
  <a name="55" href="#55">55</a>  <font color="#329900"><i> *</font></i>
  <a name="56" href="#56">56</a>  <font color="#329900"><i> * [Additional notices, if required by prior licensing conditions]</font></i>
  <a name="57" href="#57">57</a>  <font color="#329900"><i> *</font></i>
  <a name="58" href="#58">58</a>  <font color="#329900"><i> */</font></i>   
  <a name="59" href="#59">59</a>  
  <a name="60" href="#60">60</a>  <b>package</b> <a href="../../../../../org/apache/commons/latka/xml/index.html">org.apache.commons.latka.xml</a>;
  <a name="61" href="#61">61</a>  
  <a name="62" href="#62">62</a>  <b>import</b> java.io.InputStreamReader;
  <a name="63" href="#63">63</a>  <b>import</b> java.io.IOException;
  <a name="64" href="#64">64</a>  
  <a name="65" href="#65">65</a>  <b>import</b> java.net.URL;
  <a name="66" href="#66">66</a>  
  <a name="67" href="#67">67</a>  <b>import</b> java.util.HashSet;
  <a name="68" href="#68">68</a>  <b>import</b> java.util.Set;
  <a name="69" href="#69">69</a>  
  <a name="70" href="#70">70</a>  <b>import</b> org.xml.sax.helpers.DefaultHandler;
  <a name="71" href="#71">71</a>  <b>import</b> org.xml.sax.InputSource;
  <a name="72" href="#72">72</a>  <b>import</b> org.xml.sax.SAXException;
  <a name="73" href="#73">73</a>  
  <a name="74" href="#74">74</a>  <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="75" href="#75">75</a>  <font color="#AA0000"><i> * This handler is used by the </font></i>
  <a name="76" href="#76">76</a>  <font color="#AA0000"><i> * {@link XMLPreprocessor#getVariablesFromEntities(InputSource)}</font></i>
  <a name="77" href="#77">77</a>  <font color="#AA0000"><i> * method to read the external entities of an XML</font></i>
  <a name="78" href="#78">78</a>  <font color="#AA0000"><i> * suite and find any variables referenced there.</font></i>
  <a name="79" href="#79">79</a>  <font color="#AA0000"><i> * The only purpose of the suite is to leverage </font></i>
  <a name="80" href="#80">80</a>  <font color="#AA0000"><i> * SAX's awareness of these entities' locations.</font></i>
  <a name="81" href="#81">81</a>  <font color="#AA0000"><i> * </font></i>
  <a name="82" href="#82">82</a>  <font color="#AA0000"><i> * @author Morgan Delagrange</font></i>
  <a name="83" href="#83">83</a>  <font color="#AA0000"><i> * @see XMLPreprocessor#getVariablesFromEntities(InputSource)</font></i>
  <a name="84" href="#84">84</a>  <font color="#AA0000"><i> */</font></i>
  <a name="85" href="#85">85</a>  <b>public</b> <b>class</b> <a href="../../../../../org/apache/commons/latka/xml/FindVariablesHandler.html">FindVariablesHandler</a> <b>extends</b> DefaultHandler {
  <a name="86" href="#86">86</a>  
  <a name="87" href="#87">87</a>    <b>protected</b> Set _set = <b>new</b> HashSet();
  <a name="88" href="#88">88</a>  
  <a name="89" href="#89">89</a>    <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="90" href="#90">90</a>  <font color="#AA0000"><i>   * After the parse is complete, this method returns</font></i>
  <a name="91" href="#91">91</a>  <font color="#AA0000"><i>   * the unique variables referenced in the external entities.</font></i>
  <a name="92" href="#92">92</a>  <font color="#AA0000"><i>   * </font></i>
  <a name="93" href="#93">93</a>  <font color="#AA0000"><i>   * @return Set of unique variables</font></i>
  <a name="94" href="#94">94</a>  <font color="#AA0000"><i>   */</font></i>
  <a name="95" href="#95">95</a>    <b>public</b> Set getVariables() {
  <a name="96" href="#96">96</a>      <b>return</b> _set;
  <a name="97" href="#97">97</a>    }
  <a name="98" href="#98">98</a>  
  <a name="99" href="#99">99</a>    <font color="#AA0000"><i>/**<font color="#AA0000"><i>*</font></i></font></i>
  <a name="100" href="#100">100</a> <font color="#AA0000"><i>   * For each entity, find all the variables and assign them to the</font></i>
  <a name="101" href="#101">101</a> <font color="#AA0000"><i>   * Set.</font></i>
  <a name="102" href="#102">102</a> <font color="#AA0000"><i>   * </font></i>
  <a name="103" href="#103">103</a> <font color="#AA0000"><i>   * @param publicId public id of entity, as defined by SAX</font></i>
  <a name="104" href="#104">104</a> <font color="#AA0000"><i>   * @param systemId file URI of the external entity</font></i>
  <a name="105" href="#105">105</a> <font color="#AA0000"><i>   * @return InputSource used by SAX to find more entities</font></i>
  <a name="106" href="#106">106</a> <font color="#AA0000"><i>   * @exception SAXException</font></i>
  <a name="107" href="#107">107</a> <font color="#AA0000"><i>   *    if the entity could not be read</font></i>
  <a name="108" href="#108">108</a> <font color="#AA0000"><i>   */</font></i>
  <a name="109" href="#109">109</a>   <b>public</b> InputSource resolveEntity(String <b>public</b>Id, String systemId)
  <a name="110" href="#110">110</a>   throws SAXException {
  <a name="111" href="#111">111</a> 
  <a name="112" href="#112">112</a>     <a href="../../../../../org/apache/commons/latka/xml/XMLPreprocessor.html">XMLPreprocessor</a> process = XMLPreprocessor.instance();
  <a name="113" href="#113">113</a>     <b>try</b> {
  <a name="114" href="#114">114</a>       URL url = <b>new</b> URL(systemId);
  <a name="115" href="#115">115</a>       InputStreamReader reader = 
  <a name="116" href="#116">116</a>         <b>new</b> InputStreamReader(url.openConnection().getInputStream());
  <a name="117" href="#117">117</a>       _set.addAll(process.getLocalVariables(reader));
  <a name="118" href="#118">118</a>       InputSource source = <b>new</b> InputSource(systemId);
  <a name="119" href="#119">119</a>       <b>return</b> source;
  <a name="120" href="#120">120</a>     } <b>catch</b> (IOException e) {
  <a name="121" href="#121">121</a>       e.printStackTrace();
  <a name="122" href="#122">122</a>       <b>throw</b> <b>new</b> SAXException(e);
  <a name="123" href="#123">123</a>     }
  <a name="124" href="#124">124</a>   }
  <a name="125" href="#125">125</a> 
  <a name="126" href="#126">126</a> }
  </pre>
  <hr><center>This page automatically generated by Maven</center></body>
  </html>
  
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>