1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
---|
2 | <HTML>
|
---|
3 | <HEAD>
|
---|
4 | <LINK REL=STYLESHEET TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
---|
5 | <META NAME="GENERATOR" CONTENT="Java2HTML Version 1.4">
|
---|
6 | <TITLE>org.tp23.antinstaller.antmod.ProjectHelper3 (Java2HTML)</TITLE>
|
---|
7 | </HEAD>
|
---|
8 | <BODY><TABLE id="Header" border="0" cellpadding="0" cellspacing="0" width="100%">
|
---|
9 | <tr>
|
---|
10 | <td colspan="2" width="33%"> </td>
|
---|
11 | <td align="center" colspan="2" width="33%">
|
---|
12 | <font size="4" class="ClassName">ProjectHelper3.java</font>
|
---|
13 | </td>
|
---|
14 | <td align="right" colspan="2" width="33%"> </td>
|
---|
15 | </tr>
|
---|
16 | </TABLE>
|
---|
17 | <pre CLASS="Classes">
|
---|
18 | <FONT CLASS="LN">1 </FONT><A NAME="1"></A><FONT CLASS="MultiLineComment">/*
|
---|
19 | <FONT CLASS="LN">2 </FONT><A NAME="2"></A> * Copyright 2000-2004 The Apache Software Foundation
|
---|
20 | <FONT CLASS="LN">3 </FONT><A NAME="3"></A> *
|
---|
21 | <FONT CLASS="LN">4 </FONT><A NAME="4"></A> * Licensed under the Apache License, Version 2.0 (the "License");
|
---|
22 | <FONT CLASS="LN">5 </FONT><A NAME="5"></A> * you may not use this file except in compliance with the License.
|
---|
23 | <FONT CLASS="LN">6 </FONT><A NAME="6"></A> * You may obtain a copy of the License at
|
---|
24 | <FONT CLASS="LN">7 </FONT><A NAME="7"></A> *
|
---|
25 | <FONT CLASS="LN">8 </FONT><A NAME="8"></A> * http://www.apache.org/licenses/LICENSE-2.0
|
---|
26 | <FONT CLASS="LN">9 </FONT><A NAME="9"></A> *
|
---|
27 | <FONT CLASS="LN">10</FONT><A NAME="10"></A> * Unless required by applicable law or agreed to in writing, software
|
---|
28 | <FONT CLASS="LN">11</FONT><A NAME="11"></A> * distributed under the License is distributed on an "AS IS" BASIS,
|
---|
29 | <FONT CLASS="LN">12</FONT><A NAME="12"></A> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
---|
30 | <FONT CLASS="LN">13</FONT><A NAME="13"></A> * See the License for the specific language governing permissions and
|
---|
31 | <FONT CLASS="LN">14</FONT><A NAME="14"></A> * limitations under the License.
|
---|
32 | <FONT CLASS="LN">15</FONT><A NAME="15"></A> *
|
---|
33 | <FONT CLASS="LN">16</FONT><A NAME="16"></A> */</FONT>
|
---|
34 | <FONT CLASS="LN">17</FONT><A NAME="17"></A>
|
---|
35 | <FONT CLASS="LN">18</FONT><A NAME="18"></A><FONT CLASS="Package">package</FONT> <A HREF="../../../../org.tp23.antinstaller.antmod.index.html" target="packageFrame">org.tp23.antinstaller.antmod</A>;
|
---|
36 | <FONT CLASS="LN">19</FONT><A NAME="19"></A>
|
---|
37 | <FONT CLASS="LN">20</FONT><A NAME="20"></A><FONT CLASS="Import">import</FONT> java.io.File;
|
---|
38 | <FONT CLASS="LN">21</FONT><A NAME="21"></A><FONT CLASS="Import">import</FONT> java.io.FileInputStream;
|
---|
39 | <FONT CLASS="LN">22</FONT><A NAME="22"></A><FONT CLASS="Import">import</FONT> java.io.FileNotFoundException;
|
---|
40 | <FONT CLASS="LN">23</FONT><A NAME="23"></A><FONT CLASS="Import">import</FONT> java.io.IOException;
|
---|
41 | <FONT CLASS="LN">24</FONT><A NAME="24"></A><FONT CLASS="Import">import</FONT> java.io.InputStream;
|
---|
42 | <FONT CLASS="LN">25</FONT><A NAME="25"></A><FONT CLASS="Import">import</FONT> java.io.UnsupportedEncodingException;
|
---|
43 | <FONT CLASS="LN">26</FONT><A NAME="26"></A><FONT CLASS="Import">import</FONT> java.net.URL;
|
---|
44 | <FONT CLASS="LN">27</FONT><A NAME="27"></A><FONT CLASS="Import">import</FONT> java.util.Hashtable;
|
---|
45 | <FONT CLASS="LN">28</FONT><A NAME="28"></A><FONT CLASS="Import">import</FONT> java.util.Stack;
|
---|
46 | <FONT CLASS="LN">29</FONT><A NAME="29"></A>
|
---|
47 | <FONT CLASS="LN">30</FONT><A NAME="30"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.BuildException;
|
---|
48 | <FONT CLASS="LN">31</FONT><A NAME="31"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.Location;
|
---|
49 | <FONT CLASS="LN">32</FONT><A NAME="32"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.Project;
|
---|
50 | <FONT CLASS="LN">33</FONT><A NAME="33"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.ProjectHelper;
|
---|
51 | <FONT CLASS="LN">34</FONT><A NAME="34"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.RuntimeConfigurable;
|
---|
52 | <FONT CLASS="LN">35</FONT><A NAME="35"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.Target;
|
---|
53 | <FONT CLASS="LN">36</FONT><A NAME="36"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.Task;
|
---|
54 | <FONT CLASS="LN">37</FONT><A NAME="37"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.UnknownElement;
|
---|
55 | <FONT CLASS="LN">38</FONT><A NAME="38"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.helper.AntXMLContext;
|
---|
56 | <FONT CLASS="LN">39</FONT><A NAME="39"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.util.FileUtils;
|
---|
57 | <FONT CLASS="LN">40</FONT><A NAME="40"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.util.JAXPUtils;
|
---|
58 | <FONT CLASS="LN">41</FONT><A NAME="41"></A><FONT CLASS="Import">import</FONT> org.xml.sax.Attributes;
|
---|
59 | <FONT CLASS="LN">42</FONT><A NAME="42"></A><FONT CLASS="Import">import</FONT> org.xml.sax.InputSource;
|
---|
60 | <FONT CLASS="LN">43</FONT><A NAME="43"></A><FONT CLASS="Import">import</FONT> org.xml.sax.Locator;
|
---|
61 | <FONT CLASS="LN">44</FONT><A NAME="44"></A><FONT CLASS="Import">import</FONT> org.xml.sax.SAXException;
|
---|
62 | <FONT CLASS="LN">45</FONT><A NAME="45"></A><FONT CLASS="Import">import</FONT> org.xml.sax.SAXParseException;
|
---|
63 | <FONT CLASS="LN">46</FONT><A NAME="46"></A><FONT CLASS="Import">import</FONT> org.xml.sax.XMLReader;
|
---|
64 | <FONT CLASS="LN">47</FONT><A NAME="47"></A><FONT CLASS="Import">import</FONT> org.xml.sax.helpers.DefaultHandler;
|
---|
65 | <FONT CLASS="LN">48</FONT><A NAME="48"></A>
|
---|
66 | <FONT CLASS="LN">49</FONT><A NAME="49"></A><FONT CLASS="FormalComment">/**
|
---|
67 | <FONT CLASS="LN">50</FONT><A NAME="50"></A> * Sax2 based project reader
|
---|
68 | <FONT CLASS="LN">51</FONT><A NAME="51"></A> *
|
---|
69 | <FONT CLASS="LN">52</FONT><A NAME="52"></A>* This file has been modified by Paul Hinds for Antinstaller and is not the same
|
---|
70 | <FONT CLASS="LN">53</FONT><A NAME="53"></A>* as the ProjectHelper2 delivered with Ant 1.6 although almost identical
|
---|
71 | <FONT CLASS="LN">54</FONT><A NAME="54"></A> */</FONT>
|
---|
72 | <FONT CLASS="LN">55</FONT><A NAME="55"></A><FONT CLASS="Public">public</FONT> <FONT CLASS="Class">class</FONT> ProjectHelper3 <FONT CLASS="Extends">extends</FONT> ProjectHelper {
|
---|
73 | <FONT CLASS="LN">56</FONT><A NAME="56"></A> <FONT CLASS="MultiLineComment">/* Stateless */</FONT>
|
---|
74 | <FONT CLASS="LN">57</FONT><A NAME="57"></A>
|
---|
75 | <FONT CLASS="LN">58</FONT><A NAME="58"></A> <FONT CLASS="SingleLineComment">// singletons - since all state is in the context
|
---|
76 | <FONT CLASS="LN">59</FONT><A NAME="59"></A></FONT> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> AntHandler elementHandler = <FONT CLASS="New">new</FONT> ElementHandler();
|
---|
77 | <FONT CLASS="LN">60</FONT><A NAME="60"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> AntHandler targetHandler = <FONT CLASS="New">new</FONT> TargetHandler();
|
---|
78 | <FONT CLASS="LN">61</FONT><A NAME="61"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> AntHandler mainHandler = <FONT CLASS="New">new</FONT> MainHandler();
|
---|
79 | <FONT CLASS="LN">62</FONT><A NAME="62"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> AntHandler projectHandler = <FONT CLASS="New">new</FONT> ProjectHandler();
|
---|
80 | <FONT CLASS="LN">63</FONT><A NAME="63"></A>
|
---|
81 | <FONT CLASS="LN">64</FONT><A NAME="64"></A> <FONT CLASS="FormalComment">/**
|
---|
82 | <FONT CLASS="LN">65</FONT><A NAME="65"></A> * helper for path -> URI and URI -> path conversions.
|
---|
83 | <FONT CLASS="LN">66</FONT><A NAME="66"></A> */</FONT>
|
---|
84 | <FONT CLASS="LN">67</FONT><A NAME="67"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> FileUtils fu = FileUtils.newFileUtils();
|
---|
85 | <FONT CLASS="LN">68</FONT><A NAME="68"></A>
|
---|
86 | <FONT CLASS="LN">69</FONT><A NAME="69"></A> <FONT CLASS="FormalComment">/**
|
---|
87 | <FONT CLASS="LN">70</FONT><A NAME="70"></A> * Parse an unknown element from a url
|
---|
88 | <FONT CLASS="LN">71</FONT><A NAME="71"></A> *
|
---|
89 | <FONT CLASS="LN">72</FONT><A NAME="72"></A> * @param project the current project
|
---|
90 | <FONT CLASS="LN">73</FONT><A NAME="73"></A> * @param source the url containing the task
|
---|
91 | <FONT CLASS="LN">74</FONT><A NAME="74"></A> * @return a configured task
|
---|
92 | <FONT CLASS="LN">75</FONT><A NAME="75"></A> * @exception BuildException if an error occurs
|
---|
93 | <FONT CLASS="LN">76</FONT><A NAME="76"></A> */</FONT>
|
---|
94 | <FONT CLASS="LN">77</FONT><A NAME="77"></A> <FONT CLASS="Public">public</FONT> UnknownElement parseUnknownElement(Project project, URL source)
|
---|
95 | <FONT CLASS="LN">78</FONT><A NAME="78"></A> <FONT CLASS="Throws">throws</FONT> BuildException {
|
---|
96 | <FONT CLASS="LN">79</FONT><A NAME="79"></A> Target dummyTarget = <FONT CLASS="New">new</FONT> Target();
|
---|
97 | <FONT CLASS="LN">80</FONT><A NAME="80"></A> dummyTarget.setProject(project);
|
---|
98 | <FONT CLASS="LN">81</FONT><A NAME="81"></A>
|
---|
99 | <FONT CLASS="LN">82</FONT><A NAME="82"></A> AntXMLContext context = <FONT CLASS="New">new</FONT> AntXMLContext(project);
|
---|
100 | <FONT CLASS="LN">83</FONT><A NAME="83"></A> context.addTarget(dummyTarget);
|
---|
101 | <FONT CLASS="LN">84</FONT><A NAME="84"></A> context.setImplicitTarget(dummyTarget);
|
---|
102 | <FONT CLASS="LN">85</FONT><A NAME="85"></A>
|
---|
103 | <FONT CLASS="LN">86</FONT><A NAME="86"></A> parse(context.getProject(), source,
|
---|
104 | <FONT CLASS="LN">87</FONT><A NAME="87"></A> <FONT CLASS="New">new</FONT> RootHandler(context, elementHandler));
|
---|
105 | <FONT CLASS="LN">88</FONT><A NAME="88"></A> Task[] tasks = dummyTarget.getTasks();
|
---|
106 | <FONT CLASS="LN">89</FONT><A NAME="89"></A> <FONT CLASS="If">if</FONT> (tasks.length != <FONT CLASS="IntegerLiteral">1</FONT>) {
|
---|
107 | <FONT CLASS="LN">90</FONT><A NAME="90"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"No tasks defined"</FONT>);
|
---|
108 | <FONT CLASS="LN">91</FONT><A NAME="91"></A> }
|
---|
109 | <FONT CLASS="LN">92</FONT><A NAME="92"></A> <FONT CLASS="Return">return</FONT> (UnknownElement) tasks[<FONT CLASS="IntegerLiteral">0</FONT>];
|
---|
110 | <FONT CLASS="LN">93</FONT><A NAME="93"></A> }
|
---|
111 | <FONT CLASS="LN">94</FONT><A NAME="94"></A> <FONT CLASS="FormalComment">/**
|
---|
112 | <FONT CLASS="LN">95</FONT><A NAME="95"></A> * Parse a source xml input.
|
---|
113 | <FONT CLASS="LN">96</FONT><A NAME="96"></A> *
|
---|
114 | <FONT CLASS="LN">97</FONT><A NAME="97"></A> * @param project the current project
|
---|
115 | <FONT CLASS="LN">98</FONT><A NAME="98"></A> * @param source the xml source
|
---|
116 | <FONT CLASS="LN">99</FONT><A NAME="99"></A> * @exception BuildException if an error occurs
|
---|
117 | <FONT CLASS="LN">00</FONT><A NAME="100"></A> */</FONT>
|
---|
118 | <FONT CLASS="LN">01</FONT><A NAME="101"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> parse(Project project, Object source)
|
---|
119 | <FONT CLASS="LN">02</FONT><A NAME="102"></A> <FONT CLASS="Throws">throws</FONT> BuildException {
|
---|
120 | <FONT CLASS="LN">03</FONT><A NAME="103"></A> getImportStack().addElement(source);
|
---|
121 | <FONT CLASS="LN">04</FONT><A NAME="104"></A> <FONT CLASS="SingleLineComment">//System.out.println("Adding " + source);
|
---|
122 | <FONT CLASS="LN">05</FONT><A NAME="105"></A></FONT> AntXMLContext context = <FONT CLASS="Null">null</FONT>;
|
---|
123 | <FONT CLASS="LN">06</FONT><A NAME="106"></A> context = (AntXMLContext) project.getReference(<FONT CLASS="StringLiteral">"ant.parsing.context"</FONT>);
|
---|
124 | <FONT CLASS="LN">07</FONT><A NAME="107"></A><FONT CLASS="SingleLineComment">// System.out.println("Parsing " + getImportStack().size() + " " +
|
---|
125 | <FONT CLASS="LN">08</FONT><A NAME="108"></A></FONT><FONT CLASS="SingleLineComment">// context+ " " + getImportStack() );
|
---|
126 | <FONT CLASS="LN">09</FONT><A NAME="109"></A></FONT> <FONT CLASS="If">if</FONT> (context == <FONT CLASS="Null">null</FONT>) {
|
---|
127 | <FONT CLASS="LN">10</FONT><A NAME="110"></A> context = <FONT CLASS="New">new</FONT> AntXMLContext(project);
|
---|
128 | <FONT CLASS="LN">11</FONT><A NAME="111"></A> project.addReference(<FONT CLASS="StringLiteral">"ant.parsing.context"</FONT>, context);
|
---|
129 | <FONT CLASS="LN">12</FONT><A NAME="112"></A> project.addReference(<FONT CLASS="StringLiteral">"ant.targets"</FONT>, context.getTargets());
|
---|
130 | <FONT CLASS="LN">13</FONT><A NAME="113"></A> }
|
---|
131 | <FONT CLASS="LN">14</FONT><A NAME="114"></A>
|
---|
132 | <FONT CLASS="LN">15</FONT><A NAME="115"></A> <FONT CLASS="If">if</FONT> (getImportStack().size() > <FONT CLASS="IntegerLiteral">1</FONT>) {
|
---|
133 | <FONT CLASS="LN">16</FONT><A NAME="116"></A> <FONT CLASS="SingleLineComment">// we are in an imported file.
|
---|
134 | <FONT CLASS="LN">17</FONT><A NAME="117"></A></FONT> context.setIgnoreProjectTag(<FONT CLASS="True">true</FONT>);
|
---|
135 | <FONT CLASS="LN">18</FONT><A NAME="118"></A> Target currentTarget = context.getCurrentTarget();
|
---|
136 | <FONT CLASS="LN">19</FONT><A NAME="119"></A> <FONT CLASS="Try">try</FONT> {
|
---|
137 | <FONT CLASS="LN">20</FONT><A NAME="120"></A> Target newCurrent = <FONT CLASS="New">new</FONT> Target();
|
---|
138 | <FONT CLASS="LN">21</FONT><A NAME="121"></A> newCurrent.setProject(project);
|
---|
139 | <FONT CLASS="LN">22</FONT><A NAME="122"></A> newCurrent.setName(<FONT CLASS="StringLiteral">""</FONT>);
|
---|
140 | <FONT CLASS="LN">23</FONT><A NAME="123"></A> context.setCurrentTarget(newCurrent);
|
---|
141 | <FONT CLASS="LN">24</FONT><A NAME="124"></A> parse(project, source, <FONT CLASS="New">new</FONT> RootHandler(context, mainHandler));
|
---|
142 | <FONT CLASS="LN">25</FONT><A NAME="125"></A> newCurrent.execute();
|
---|
143 | <FONT CLASS="LN">26</FONT><A NAME="126"></A> } <FONT CLASS="Finally">finally</FONT> {
|
---|
144 | <FONT CLASS="LN">27</FONT><A NAME="127"></A> context.setCurrentTarget(currentTarget);
|
---|
145 | <FONT CLASS="LN">28</FONT><A NAME="128"></A> }
|
---|
146 | <FONT CLASS="LN">29</FONT><A NAME="129"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
147 | <FONT CLASS="LN">30</FONT><A NAME="130"></A> <FONT CLASS="SingleLineComment">// top level file
|
---|
148 | <FONT CLASS="LN">31</FONT><A NAME="131"></A></FONT> parse(project, source, <FONT CLASS="New">new</FONT> RootHandler(context, mainHandler));
|
---|
149 | <FONT CLASS="LN">32</FONT><A NAME="132"></A> <FONT CLASS="SingleLineComment">// Execute the top-level target
|
---|
150 | <FONT CLASS="LN">33</FONT><A NAME="133"></A></FONT> context.getImplicitTarget().execute();
|
---|
151 | <FONT CLASS="LN">34</FONT><A NAME="134"></A> }
|
---|
152 | <FONT CLASS="LN">35</FONT><A NAME="135"></A> }
|
---|
153 | <FONT CLASS="LN">36</FONT><A NAME="136"></A>
|
---|
154 | <FONT CLASS="LN">37</FONT><A NAME="137"></A> <FONT CLASS="FormalComment">/**
|
---|
155 | <FONT CLASS="LN">38</FONT><A NAME="138"></A> * Parses the project file, configuring the project as it goes.
|
---|
156 | <FONT CLASS="LN">39</FONT><A NAME="139"></A> *
|
---|
157 | <FONT CLASS="LN">40</FONT><A NAME="140"></A> * @param project the current project
|
---|
158 | <FONT CLASS="LN">41</FONT><A NAME="141"></A> * @param source the xml source
|
---|
159 | <FONT CLASS="LN">42</FONT><A NAME="142"></A> * @param handler the root handler to use (contains the current context)
|
---|
160 | <FONT CLASS="LN">43</FONT><A NAME="143"></A> * @exception BuildException if the configuration is invalid or cannot
|
---|
161 | <FONT CLASS="LN">44</FONT><A NAME="144"></A> * be read
|
---|
162 | <FONT CLASS="LN">45</FONT><A NAME="145"></A> */</FONT>
|
---|
163 | <FONT CLASS="LN">46</FONT><A NAME="146"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> parse(Project project, Object source, RootHandler handler)
|
---|
164 | <FONT CLASS="LN">47</FONT><A NAME="147"></A> <FONT CLASS="Throws">throws</FONT> BuildException {
|
---|
165 | <FONT CLASS="LN">48</FONT><A NAME="148"></A>
|
---|
166 | <FONT CLASS="LN">49</FONT><A NAME="149"></A> AntXMLContext context = handler.context;
|
---|
167 | <FONT CLASS="LN">50</FONT><A NAME="150"></A>
|
---|
168 | <FONT CLASS="LN">51</FONT><A NAME="151"></A> File buildFile = <FONT CLASS="Null">null</FONT>;
|
---|
169 | <FONT CLASS="LN">52</FONT><A NAME="152"></A> URL url = <FONT CLASS="Null">null</FONT>;
|
---|
170 | <FONT CLASS="LN">53</FONT><A NAME="153"></A> String buildFileName = <FONT CLASS="Null">null</FONT>;
|
---|
171 | <FONT CLASS="LN">54</FONT><A NAME="154"></A>
|
---|
172 | <FONT CLASS="LN">55</FONT><A NAME="155"></A> <FONT CLASS="If">if</FONT> (source <FONT CLASS="InstanceOf">instanceof</FONT> File) {
|
---|
173 | <FONT CLASS="LN">56</FONT><A NAME="156"></A> buildFile = (File) source;
|
---|
174 | <FONT CLASS="LN">57</FONT><A NAME="157"></A> buildFile = fu.normalize(buildFile.getAbsolutePath());
|
---|
175 | <FONT CLASS="LN">58</FONT><A NAME="158"></A> context.setBuildFile(buildFile);
|
---|
176 | <FONT CLASS="LN">59</FONT><A NAME="159"></A> buildFileName = buildFile.toString();
|
---|
177 | <FONT CLASS="LN">60</FONT><A NAME="160"></A><FONT CLASS="SingleLineComment">// } else if (source instanceof InputStream ) {
|
---|
178 | <FONT CLASS="LN">61</FONT><A NAME="161"></A></FONT> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (source <FONT CLASS="InstanceOf">instanceof</FONT> URL) {
|
---|
179 | <FONT CLASS="LN">62</FONT><A NAME="162"></A><FONT CLASS="SingleLineComment">// These commented out code is the only difference
|
---|
180 | <FONT CLASS="LN">63</FONT><A NAME="163"></A></FONT><FONT CLASS="SingleLineComment">// between this class and ProjectHelper2
|
---|
181 | <FONT CLASS="LN">64</FONT><A NAME="164"></A></FONT><FONT CLASS="SingleLineComment">// if (handler.getCurrentAntHandler() != elementHandler) {
|
---|
182 | <FONT CLASS="LN">65</FONT><A NAME="165"></A></FONT><FONT CLASS="SingleLineComment">// throw new BuildException(
|
---|
183 | <FONT CLASS="LN">66</FONT><A NAME="166"></A></FONT><FONT CLASS="SingleLineComment">// "Source " + source.getClass().getName()
|
---|
184 | <FONT CLASS="LN">67</FONT><A NAME="167"></A></FONT><FONT CLASS="SingleLineComment">// + " not supported by this plugin for "
|
---|
185 | <FONT CLASS="LN">68</FONT><A NAME="168"></A></FONT><FONT CLASS="SingleLineComment">// + " non task xml");
|
---|
186 | <FONT CLASS="LN">69</FONT><A NAME="169"></A></FONT><FONT CLASS="SingleLineComment">// }
|
---|
187 | <FONT CLASS="LN">70</FONT><A NAME="170"></A></FONT> url = (URL) source;
|
---|
188 | <FONT CLASS="LN">71</FONT><A NAME="171"></A> buildFileName = url.toString();
|
---|
189 | <FONT CLASS="LN">72</FONT><A NAME="172"></A><FONT CLASS="SingleLineComment">// } else if (source instanceof InputSource ) {
|
---|
190 | <FONT CLASS="LN">73</FONT><A NAME="173"></A></FONT> } <FONT CLASS="Else">else</FONT> {
|
---|
191 | <FONT CLASS="LN">74</FONT><A NAME="174"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Source "</FONT> + source.getClass().getName()
|
---|
192 | <FONT CLASS="LN">75</FONT><A NAME="175"></A> + <FONT CLASS="StringLiteral">" not supported by this plugin"</FONT>);
|
---|
193 | <FONT CLASS="LN">76</FONT><A NAME="176"></A> }
|
---|
194 | <FONT CLASS="LN">77</FONT><A NAME="177"></A>
|
---|
195 | <FONT CLASS="LN">78</FONT><A NAME="178"></A> InputStream inputStream = <FONT CLASS="Null">null</FONT>;
|
---|
196 | <FONT CLASS="LN">79</FONT><A NAME="179"></A> InputSource inputSource = <FONT CLASS="Null">null</FONT>;
|
---|
197 | <FONT CLASS="LN">80</FONT><A NAME="180"></A>
|
---|
198 | <FONT CLASS="LN">81</FONT><A NAME="181"></A>
|
---|
199 | <FONT CLASS="LN">82</FONT><A NAME="182"></A> <FONT CLASS="Try">try</FONT> {
|
---|
200 | <FONT CLASS="LN">83</FONT><A NAME="183"></A> <FONT CLASS="FormalComment">/**
|
---|
201 | <FONT CLASS="LN">84</FONT><A NAME="184"></A> * SAX 2 style parser used to parse the given file.
|
---|
202 | <FONT CLASS="LN">85</FONT><A NAME="185"></A> */</FONT>
|
---|
203 | <FONT CLASS="LN">86</FONT><A NAME="186"></A> XMLReader parser = JAXPUtils.getNamespaceXMLReader();
|
---|
204 | <FONT CLASS="LN">87</FONT><A NAME="187"></A>
|
---|
205 | <FONT CLASS="LN">88</FONT><A NAME="188"></A> String uri = <FONT CLASS="Null">null</FONT>;
|
---|
206 | <FONT CLASS="LN">89</FONT><A NAME="189"></A> <FONT CLASS="If">if</FONT> (buildFile != <FONT CLASS="Null">null</FONT>) {
|
---|
207 | <FONT CLASS="LN">90</FONT><A NAME="190"></A> uri = fu.toURI(buildFile.getAbsolutePath());
|
---|
208 | <FONT CLASS="LN">91</FONT><A NAME="191"></A> inputStream = <FONT CLASS="New">new</FONT> FileInputStream(buildFile);
|
---|
209 | <FONT CLASS="LN">92</FONT><A NAME="192"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
210 | <FONT CLASS="LN">93</FONT><A NAME="193"></A> inputStream = url.openStream();
|
---|
211 | <FONT CLASS="LN">94</FONT><A NAME="194"></A> uri = url.toString(); <FONT CLASS="SingleLineComment">// ?? OK ??
|
---|
212 | <FONT CLASS="LN">95</FONT><A NAME="195"></A></FONT> }
|
---|
213 | <FONT CLASS="LN">96</FONT><A NAME="196"></A>
|
---|
214 | <FONT CLASS="LN">97</FONT><A NAME="197"></A> inputSource = <FONT CLASS="New">new</FONT> InputSource(inputStream);
|
---|
215 | <FONT CLASS="LN">98</FONT><A NAME="198"></A> <FONT CLASS="If">if</FONT> (uri != <FONT CLASS="Null">null</FONT>) {
|
---|
216 | <FONT CLASS="LN">99</FONT><A NAME="199"></A> inputSource.setSystemId(uri);
|
---|
217 | <FONT CLASS="LN">00</FONT><A NAME="200"></A> }
|
---|
218 | <FONT CLASS="LN">01</FONT><A NAME="201"></A> project.log(<FONT CLASS="StringLiteral">"parsing buildfile "</FONT> + buildFileName
|
---|
219 | <FONT CLASS="LN">02</FONT><A NAME="202"></A> + <FONT CLASS="StringLiteral">" with URI = "</FONT> + uri, Project.MSG_VERBOSE);
|
---|
220 | <FONT CLASS="LN">03</FONT><A NAME="203"></A>
|
---|
221 | <FONT CLASS="LN">04</FONT><A NAME="204"></A> DefaultHandler hb = handler;
|
---|
222 | <FONT CLASS="LN">05</FONT><A NAME="205"></A>
|
---|
223 | <FONT CLASS="LN">06</FONT><A NAME="206"></A> parser.setContentHandler(hb);
|
---|
224 | <FONT CLASS="LN">07</FONT><A NAME="207"></A> parser.setEntityResolver(hb);
|
---|
225 | <FONT CLASS="LN">08</FONT><A NAME="208"></A> parser.setErrorHandler(hb);
|
---|
226 | <FONT CLASS="LN">09</FONT><A NAME="209"></A> parser.setDTDHandler(hb);
|
---|
227 | <FONT CLASS="LN">10</FONT><A NAME="210"></A> parser.parse(inputSource);
|
---|
228 | <FONT CLASS="LN">11</FONT><A NAME="211"></A> } <FONT CLASS="Catch">catch</FONT> (SAXParseException exc) {
|
---|
229 | <FONT CLASS="LN">12</FONT><A NAME="212"></A> Location location = <FONT CLASS="New">new</FONT> Location(exc.getSystemId(),
|
---|
230 | <FONT CLASS="LN">13</FONT><A NAME="213"></A> exc.getLineNumber(), exc.getColumnNumber());
|
---|
231 | <FONT CLASS="LN">14</FONT><A NAME="214"></A>
|
---|
232 | <FONT CLASS="LN">15</FONT><A NAME="215"></A> Throwable t = exc.getException();
|
---|
233 | <FONT CLASS="LN">16</FONT><A NAME="216"></A> <FONT CLASS="If">if</FONT> (t <FONT CLASS="InstanceOf">instanceof</FONT> BuildException) {
|
---|
234 | <FONT CLASS="LN">17</FONT><A NAME="217"></A> BuildException be = (BuildException) t;
|
---|
235 | <FONT CLASS="LN">18</FONT><A NAME="218"></A> <FONT CLASS="If">if</FONT> (be.getLocation() == Location.UNKNOWN_LOCATION) {
|
---|
236 | <FONT CLASS="LN">19</FONT><A NAME="219"></A> be.setLocation(location);
|
---|
237 | <FONT CLASS="LN">20</FONT><A NAME="220"></A> }
|
---|
238 | <FONT CLASS="LN">21</FONT><A NAME="221"></A> <FONT CLASS="Throw">throw</FONT> be;
|
---|
239 | <FONT CLASS="LN">22</FONT><A NAME="222"></A> }
|
---|
240 | <FONT CLASS="LN">23</FONT><A NAME="223"></A>
|
---|
241 | <FONT CLASS="LN">24</FONT><A NAME="224"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(exc.getMessage(), t, location);
|
---|
242 | <FONT CLASS="LN">25</FONT><A NAME="225"></A> } <FONT CLASS="Catch">catch</FONT> (SAXException exc) {
|
---|
243 | <FONT CLASS="LN">26</FONT><A NAME="226"></A> Throwable t = exc.getException();
|
---|
244 | <FONT CLASS="LN">27</FONT><A NAME="227"></A> <FONT CLASS="If">if</FONT> (t <FONT CLASS="InstanceOf">instanceof</FONT> BuildException) {
|
---|
245 | <FONT CLASS="LN">28</FONT><A NAME="228"></A> <FONT CLASS="Throw">throw</FONT> (BuildException) t;
|
---|
246 | <FONT CLASS="LN">29</FONT><A NAME="229"></A> }
|
---|
247 | <FONT CLASS="LN">30</FONT><A NAME="230"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(exc.getMessage(), t);
|
---|
248 | <FONT CLASS="LN">31</FONT><A NAME="231"></A> } <FONT CLASS="Catch">catch</FONT> (FileNotFoundException exc) {
|
---|
249 | <FONT CLASS="LN">32</FONT><A NAME="232"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(exc);
|
---|
250 | <FONT CLASS="LN">33</FONT><A NAME="233"></A> } <FONT CLASS="Catch">catch</FONT> (UnsupportedEncodingException exc) {
|
---|
251 | <FONT CLASS="LN">34</FONT><A NAME="234"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Encoding of project file "</FONT>
|
---|
252 | <FONT CLASS="LN">35</FONT><A NAME="235"></A> + buildFileName + <FONT CLASS="StringLiteral">" is invalid."</FONT>,
|
---|
253 | <FONT CLASS="LN">36</FONT><A NAME="236"></A> exc);
|
---|
254 | <FONT CLASS="LN">37</FONT><A NAME="237"></A> } <FONT CLASS="Catch">catch</FONT> (IOException exc) {
|
---|
255 | <FONT CLASS="LN">38</FONT><A NAME="238"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Error reading project file "</FONT>
|
---|
256 | <FONT CLASS="LN">39</FONT><A NAME="239"></A> + buildFileName + <FONT CLASS="StringLiteral">": "</FONT> + exc.getMessage(),
|
---|
257 | <FONT CLASS="LN">40</FONT><A NAME="240"></A> exc);
|
---|
258 | <FONT CLASS="LN">41</FONT><A NAME="241"></A> } <FONT CLASS="Finally">finally</FONT> {
|
---|
259 | <FONT CLASS="LN">42</FONT><A NAME="242"></A> <FONT CLASS="If">if</FONT> (inputStream != <FONT CLASS="Null">null</FONT>) {
|
---|
260 | <FONT CLASS="LN">43</FONT><A NAME="243"></A> <FONT CLASS="Try">try</FONT> {
|
---|
261 | <FONT CLASS="LN">44</FONT><A NAME="244"></A> inputStream.close();
|
---|
262 | <FONT CLASS="LN">45</FONT><A NAME="245"></A> } <FONT CLASS="Catch">catch</FONT> (IOException ioe) {
|
---|
263 | <FONT CLASS="LN">46</FONT><A NAME="246"></A> <FONT CLASS="SingleLineComment">// ignore this
|
---|
264 | <FONT CLASS="LN">47</FONT><A NAME="247"></A></FONT> }
|
---|
265 | <FONT CLASS="LN">48</FONT><A NAME="248"></A> }
|
---|
266 | <FONT CLASS="LN">49</FONT><A NAME="249"></A> }
|
---|
267 | <FONT CLASS="LN">50</FONT><A NAME="250"></A> }
|
---|
268 | <FONT CLASS="LN">51</FONT><A NAME="251"></A>
|
---|
269 | <FONT CLASS="LN">52</FONT><A NAME="252"></A> <FONT CLASS="FormalComment">/**
|
---|
270 | <FONT CLASS="LN">53</FONT><A NAME="253"></A> * The common superclass for all SAX event handlers used to parse
|
---|
271 | <FONT CLASS="LN">54</FONT><A NAME="254"></A> * the configuration file.
|
---|
272 | <FONT CLASS="LN">55</FONT><A NAME="255"></A> *
|
---|
273 | <FONT CLASS="LN">56</FONT><A NAME="256"></A> * The context will hold all state information. At each time
|
---|
274 | <FONT CLASS="LN">57</FONT><A NAME="257"></A> * there is one active handler for the current element. It can
|
---|
275 | <FONT CLASS="LN">58</FONT><A NAME="258"></A> * use onStartChild() to set an alternate handler for the child.
|
---|
276 | <FONT CLASS="LN">59</FONT><A NAME="259"></A> */</FONT>
|
---|
277 | <FONT CLASS="LN">60</FONT><A NAME="260"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Class">class</FONT> AntHandler {
|
---|
278 | <FONT CLASS="LN">61</FONT><A NAME="261"></A> <FONT CLASS="FormalComment">/**
|
---|
279 | <FONT CLASS="LN">62</FONT><A NAME="262"></A> * Handles the start of an element. This base implementation does
|
---|
280 | <FONT CLASS="LN">63</FONT><A NAME="263"></A> * nothing.
|
---|
281 | <FONT CLASS="LN">64</FONT><A NAME="264"></A> *
|
---|
282 | <FONT CLASS="LN">65</FONT><A NAME="265"></A> * @param uri the namespace URI for the tag
|
---|
283 | <FONT CLASS="LN">66</FONT><A NAME="266"></A> * @param tag The name of the element being started.
|
---|
284 | <FONT CLASS="LN">67</FONT><A NAME="267"></A> * Will not be <code>null</code>.
|
---|
285 | <FONT CLASS="LN">68</FONT><A NAME="268"></A> * @param qname The qualified name of the element.
|
---|
286 | <FONT CLASS="LN">69</FONT><A NAME="269"></A> * @param attrs Attributes of the element being started.
|
---|
287 | <FONT CLASS="LN">70</FONT><A NAME="270"></A> * Will not be <code>null</code>.
|
---|
288 | <FONT CLASS="LN">71</FONT><A NAME="271"></A> * @param context The context that this element is in.
|
---|
289 | <FONT CLASS="LN">72</FONT><A NAME="272"></A> *
|
---|
290 | <FONT CLASS="LN">73</FONT><A NAME="273"></A> * @exception SAXParseException if this method is not overridden, or in
|
---|
291 | <FONT CLASS="LN">74</FONT><A NAME="274"></A> * case of error in an overridden version
|
---|
292 | <FONT CLASS="LN">75</FONT><A NAME="275"></A> */</FONT>
|
---|
293 | <FONT CLASS="LN">76</FONT><A NAME="276"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> onStartElement(String uri, String tag, String qname,
|
---|
294 | <FONT CLASS="LN">77</FONT><A NAME="277"></A> Attributes attrs,
|
---|
295 | <FONT CLASS="LN">78</FONT><A NAME="278"></A> AntXMLContext context)
|
---|
296 | <FONT CLASS="LN">79</FONT><A NAME="279"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
297 | <FONT CLASS="LN">80</FONT><A NAME="280"></A> }
|
---|
298 | <FONT CLASS="LN">81</FONT><A NAME="281"></A>
|
---|
299 | <FONT CLASS="LN">82</FONT><A NAME="282"></A> <FONT CLASS="FormalComment">/**
|
---|
300 | <FONT CLASS="LN">83</FONT><A NAME="283"></A> * Handles the start of an element. This base implementation just
|
---|
301 | <FONT CLASS="LN">84</FONT><A NAME="284"></A> * throws an exception - you must override this method if you expect
|
---|
302 | <FONT CLASS="LN">85</FONT><A NAME="285"></A> * child elements.
|
---|
303 | <FONT CLASS="LN">86</FONT><A NAME="286"></A> *
|
---|
304 | <FONT CLASS="LN">87</FONT><A NAME="287"></A> * @param uri The namespace uri for this element.
|
---|
305 | <FONT CLASS="LN">88</FONT><A NAME="288"></A> * @param tag The name of the element being started.
|
---|
306 | <FONT CLASS="LN">89</FONT><A NAME="289"></A> * Will not be <code>null</code>.
|
---|
307 | <FONT CLASS="LN">90</FONT><A NAME="290"></A> * @param qname The qualified name for this element.
|
---|
308 | <FONT CLASS="LN">91</FONT><A NAME="291"></A> * @param attrs Attributes of the element being started.
|
---|
309 | <FONT CLASS="LN">92</FONT><A NAME="292"></A> * Will not be <code>null</code>.
|
---|
310 | <FONT CLASS="LN">93</FONT><A NAME="293"></A> * @param context The current context.
|
---|
311 | <FONT CLASS="LN">94</FONT><A NAME="294"></A> * @return a handler (in the derived classes)
|
---|
312 | <FONT CLASS="LN">95</FONT><A NAME="295"></A> *
|
---|
313 | <FONT CLASS="LN">96</FONT><A NAME="296"></A> * @exception SAXParseException if this method is not overridden, or in
|
---|
314 | <FONT CLASS="LN">97</FONT><A NAME="297"></A> * case of error in an overridden version
|
---|
315 | <FONT CLASS="LN">98</FONT><A NAME="298"></A> */</FONT>
|
---|
316 | <FONT CLASS="LN">99</FONT><A NAME="299"></A> <FONT CLASS="Public">public</FONT> AntHandler onStartChild(String uri, String tag, String qname,
|
---|
317 | <FONT CLASS="LN">00</FONT><A NAME="300"></A> Attributes attrs,
|
---|
318 | <FONT CLASS="LN">01</FONT><A NAME="301"></A> AntXMLContext context)
|
---|
319 | <FONT CLASS="LN">02</FONT><A NAME="302"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
320 | <FONT CLASS="LN">03</FONT><A NAME="303"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> SAXParseException(<FONT CLASS="StringLiteral">"Unexpected element \""</FONT> + qname
|
---|
321 | <FONT CLASS="LN">04</FONT><A NAME="304"></A> + <FONT CLASS="StringLiteral">" \""</FONT>, context.getLocator());
|
---|
322 | <FONT CLASS="LN">05</FONT><A NAME="305"></A> }
|
---|
323 | <FONT CLASS="LN">06</FONT><A NAME="306"></A>
|
---|
324 | <FONT CLASS="LN">07</FONT><A NAME="307"></A> <FONT CLASS="FormalComment">/**
|
---|
325 | <FONT CLASS="LN">08</FONT><A NAME="308"></A> * Handle the end of a element.
|
---|
326 | <FONT CLASS="LN">09</FONT><A NAME="309"></A> *
|
---|
327 | <FONT CLASS="LN">10</FONT><A NAME="310"></A> * @param uri the namespace uri of the element
|
---|
328 | <FONT CLASS="LN">11</FONT><A NAME="311"></A> * @param tag the tag of the element
|
---|
329 | <FONT CLASS="LN">12</FONT><A NAME="312"></A> * @param qname the qualified name of the element
|
---|
330 | <FONT CLASS="LN">13</FONT><A NAME="313"></A> * @param context the current context
|
---|
331 | <FONT CLASS="LN">14</FONT><A NAME="314"></A> * @exception SAXParseException if an error occurs
|
---|
332 | <FONT CLASS="LN">15</FONT><A NAME="315"></A> */</FONT>
|
---|
333 | <FONT CLASS="LN">16</FONT><A NAME="316"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> onEndChild(String uri, String tag, String qname,
|
---|
334 | <FONT CLASS="LN">17</FONT><A NAME="317"></A> AntXMLContext context)
|
---|
335 | <FONT CLASS="LN">18</FONT><A NAME="318"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
336 | <FONT CLASS="LN">19</FONT><A NAME="319"></A> }
|
---|
337 | <FONT CLASS="LN">20</FONT><A NAME="320"></A>
|
---|
338 | <FONT CLASS="LN">21</FONT><A NAME="321"></A> <FONT CLASS="FormalComment">/**
|
---|
339 | <FONT CLASS="LN">22</FONT><A NAME="322"></A> * This method is called when this element and all elements nested into it have been
|
---|
340 | <FONT CLASS="LN">23</FONT><A NAME="323"></A> * handled. I.e., this happens at the &lt;/end_tag_of_the_element&gt;.
|
---|
341 | <FONT CLASS="LN">24</FONT><A NAME="324"></A> * @param uri the namespace uri for this element
|
---|
342 | <FONT CLASS="LN">25</FONT><A NAME="325"></A> * @param tag the element name
|
---|
343 | <FONT CLASS="LN">26</FONT><A NAME="326"></A> * @param context the current context
|
---|
344 | <FONT CLASS="LN">27</FONT><A NAME="327"></A> */</FONT>
|
---|
345 | <FONT CLASS="LN">28</FONT><A NAME="328"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> onEndElement(String uri, String tag,
|
---|
346 | <FONT CLASS="LN">29</FONT><A NAME="329"></A> AntXMLContext context) {
|
---|
347 | <FONT CLASS="LN">30</FONT><A NAME="330"></A> }
|
---|
348 | <FONT CLASS="LN">31</FONT><A NAME="331"></A>
|
---|
349 | <FONT CLASS="LN">32</FONT><A NAME="332"></A> <FONT CLASS="FormalComment">/**
|
---|
350 | <FONT CLASS="LN">33</FONT><A NAME="333"></A> * Handles text within an element. This base implementation just
|
---|
351 | <FONT CLASS="LN">34</FONT><A NAME="334"></A> * throws an exception, you must override it if you expect content.
|
---|
352 | <FONT CLASS="LN">35</FONT><A NAME="335"></A> *
|
---|
353 | <FONT CLASS="LN">36</FONT><A NAME="336"></A> * @param buf A character array of the text within the element.
|
---|
354 | <FONT CLASS="LN">37</FONT><A NAME="337"></A> * Will not be <code>null</code>.
|
---|
355 | <FONT CLASS="LN">38</FONT><A NAME="338"></A> * @param start The start element in the array.
|
---|
356 | <FONT CLASS="LN">39</FONT><A NAME="339"></A> * @param count The number of characters to read from the array.
|
---|
357 | <FONT CLASS="LN">40</FONT><A NAME="340"></A> * @param context The current context.
|
---|
358 | <FONT CLASS="LN">41</FONT><A NAME="341"></A> *
|
---|
359 | <FONT CLASS="LN">42</FONT><A NAME="342"></A> * @exception SAXParseException if this method is not overridden, or in
|
---|
360 | <FONT CLASS="LN">43</FONT><A NAME="343"></A> * case of error in an overridden version
|
---|
361 | <FONT CLASS="LN">44</FONT><A NAME="344"></A> */</FONT>
|
---|
362 | <FONT CLASS="LN">45</FONT><A NAME="345"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> characters(<FONT CLASS="Char">char</FONT>[] buf, <FONT CLASS="Int">int</FONT> start, <FONT CLASS="Int">int</FONT> count, AntXMLContext context)
|
---|
363 | <FONT CLASS="LN">46</FONT><A NAME="346"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
364 | <FONT CLASS="LN">47</FONT><A NAME="347"></A> String s = <FONT CLASS="New">new</FONT> String(buf, start, count).trim();
|
---|
365 | <FONT CLASS="LN">48</FONT><A NAME="348"></A>
|
---|
366 | <FONT CLASS="LN">49</FONT><A NAME="349"></A> <FONT CLASS="If">if</FONT> (s.length() > <FONT CLASS="IntegerLiteral">0</FONT>) {
|
---|
367 | <FONT CLASS="LN">50</FONT><A NAME="350"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> SAXParseException(<FONT CLASS="StringLiteral">"Unexpected text \""</FONT> + s
|
---|
368 | <FONT CLASS="LN">51</FONT><A NAME="351"></A> + <FONT CLASS="StringLiteral">"\""</FONT>, context.getLocator());
|
---|
369 | <FONT CLASS="LN">52</FONT><A NAME="352"></A> }
|
---|
370 | <FONT CLASS="LN">53</FONT><A NAME="353"></A> }
|
---|
371 | <FONT CLASS="LN">54</FONT><A NAME="354"></A>
|
---|
372 | <FONT CLASS="LN">55</FONT><A NAME="355"></A> <FONT CLASS="FormalComment">/**
|
---|
373 | <FONT CLASS="LN">56</FONT><A NAME="356"></A> * Will be called every time a namespace is reached.
|
---|
374 | <FONT CLASS="LN">57</FONT><A NAME="357"></A> * It'll verify if the ns was processed, and if not load the task
|
---|
375 | <FONT CLASS="LN">58</FONT><A NAME="358"></A> * definitions.
|
---|
376 | <FONT CLASS="LN">59</FONT><A NAME="359"></A> * @param uri The namespace uri.
|
---|
377 | <FONT CLASS="LN">60</FONT><A NAME="360"></A> */</FONT>
|
---|
378 | <FONT CLASS="LN">61</FONT><A NAME="361"></A> <FONT CLASS="Protected">protected</FONT> <FONT CLASS="Void">void</FONT> checkNamespace(String uri) {
|
---|
379 | <FONT CLASS="LN">62</FONT><A NAME="362"></A>
|
---|
380 | <FONT CLASS="LN">63</FONT><A NAME="363"></A> }
|
---|
381 | <FONT CLASS="LN">64</FONT><A NAME="364"></A> }
|
---|
382 | <FONT CLASS="LN">65</FONT><A NAME="365"></A>
|
---|
383 | <FONT CLASS="LN">66</FONT><A NAME="366"></A> <FONT CLASS="FormalComment">/**
|
---|
384 | <FONT CLASS="LN">67</FONT><A NAME="367"></A> * Handler for ant processing. Uses a stack of AntHandlers to
|
---|
385 | <FONT CLASS="LN">68</FONT><A NAME="368"></A> * implement each element ( the original parser used a recursive behavior,
|
---|
386 | <FONT CLASS="LN">69</FONT><A NAME="369"></A> * with the implicit execution stack )
|
---|
387 | <FONT CLASS="LN">70</FONT><A NAME="370"></A> */</FONT>
|
---|
388 | <FONT CLASS="LN">71</FONT><A NAME="371"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Class">class</FONT> RootHandler <FONT CLASS="Extends">extends</FONT> DefaultHandler {
|
---|
389 | <FONT CLASS="LN">72</FONT><A NAME="372"></A> <FONT CLASS="Private">private</FONT> Stack antHandlers = <FONT CLASS="New">new</FONT> Stack();
|
---|
390 | <FONT CLASS="LN">73</FONT><A NAME="373"></A> <FONT CLASS="Private">private</FONT> AntHandler currentHandler = <FONT CLASS="Null">null</FONT>;
|
---|
391 | <FONT CLASS="LN">74</FONT><A NAME="374"></A> <FONT CLASS="Private">private</FONT> AntXMLContext context;
|
---|
392 | <FONT CLASS="LN">75</FONT><A NAME="375"></A>
|
---|
393 | <FONT CLASS="LN">76</FONT><A NAME="376"></A> <FONT CLASS="FormalComment">/**
|
---|
394 | <FONT CLASS="LN">77</FONT><A NAME="377"></A> * Creates a new RootHandler instance.
|
---|
395 | <FONT CLASS="LN">78</FONT><A NAME="378"></A> *
|
---|
396 | <FONT CLASS="LN">79</FONT><A NAME="379"></A> * @param context The context for the handler.
|
---|
397 | <FONT CLASS="LN">80</FONT><A NAME="380"></A> * @param rootHandler The handler for the root element.
|
---|
398 | <FONT CLASS="LN">81</FONT><A NAME="381"></A> */</FONT>
|
---|
399 | <FONT CLASS="LN">82</FONT><A NAME="382"></A> <FONT CLASS="Public">public</FONT> RootHandler(AntXMLContext context, AntHandler rootHandler) {
|
---|
400 | <FONT CLASS="LN">83</FONT><A NAME="383"></A> currentHandler = rootHandler;
|
---|
401 | <FONT CLASS="LN">84</FONT><A NAME="384"></A> antHandlers.push(currentHandler);
|
---|
402 | <FONT CLASS="LN">85</FONT><A NAME="385"></A> <FONT CLASS="This">this</FONT>.context = context;
|
---|
403 | <FONT CLASS="LN">86</FONT><A NAME="386"></A> }
|
---|
404 | <FONT CLASS="LN">87</FONT><A NAME="387"></A>
|
---|
405 | <FONT CLASS="LN">88</FONT><A NAME="388"></A> <FONT CLASS="FormalComment">/**
|
---|
406 | <FONT CLASS="LN">89</FONT><A NAME="389"></A> * Returns the current ant handler object.
|
---|
407 | <FONT CLASS="LN">90</FONT><A NAME="390"></A> * @return the current ant handler.
|
---|
408 | <FONT CLASS="LN">91</FONT><A NAME="391"></A> */</FONT>
|
---|
409 | <FONT CLASS="LN">92</FONT><A NAME="392"></A> <FONT CLASS="Public">public</FONT> AntHandler getCurrentAntHandler() {
|
---|
410 | <FONT CLASS="LN">93</FONT><A NAME="393"></A> <FONT CLASS="Return">return</FONT> currentHandler;
|
---|
411 | <FONT CLASS="LN">94</FONT><A NAME="394"></A> }
|
---|
412 | <FONT CLASS="LN">95</FONT><A NAME="395"></A>
|
---|
413 | <FONT CLASS="LN">96</FONT><A NAME="396"></A> <FONT CLASS="FormalComment">/**
|
---|
414 | <FONT CLASS="LN">97</FONT><A NAME="397"></A> * Resolves file: URIs relative to the build file.
|
---|
415 | <FONT CLASS="LN">98</FONT><A NAME="398"></A> *
|
---|
416 | <FONT CLASS="LN">99</FONT><A NAME="399"></A> * @param publicId The public identifier, or <code>null</code>
|
---|
417 | <FONT CLASS="LN">00</FONT><A NAME="400"></A> * if none is available. Ignored in this
|
---|
418 | <FONT CLASS="LN">01</FONT><A NAME="401"></A> * implementation.
|
---|
419 | <FONT CLASS="LN">02</FONT><A NAME="402"></A> * @param systemId The system identifier provided in the XML
|
---|
420 | <FONT CLASS="LN">03</FONT><A NAME="403"></A> * document. Will not be <code>null</code>.
|
---|
421 | <FONT CLASS="LN">04</FONT><A NAME="404"></A> * @return an inputsource for this identifier
|
---|
422 | <FONT CLASS="LN">05</FONT><A NAME="405"></A> */</FONT>
|
---|
423 | <FONT CLASS="LN">06</FONT><A NAME="406"></A> <FONT CLASS="Public">public</FONT> InputSource resolveEntity(String publicId,
|
---|
424 | <FONT CLASS="LN">07</FONT><A NAME="407"></A> String systemId) {
|
---|
425 | <FONT CLASS="LN">08</FONT><A NAME="408"></A>
|
---|
426 | <FONT CLASS="LN">09</FONT><A NAME="409"></A> context.getProject().log(<FONT CLASS="StringLiteral">"resolving systemId: "</FONT>
|
---|
427 | <FONT CLASS="LN">10</FONT><A NAME="410"></A> + systemId, Project.MSG_VERBOSE);
|
---|
428 | <FONT CLASS="LN">11</FONT><A NAME="411"></A>
|
---|
429 | <FONT CLASS="LN">12</FONT><A NAME="412"></A> <FONT CLASS="If">if</FONT> (systemId.startsWith(<FONT CLASS="StringLiteral">"file:"</FONT>)) {
|
---|
430 | <FONT CLASS="LN">13</FONT><A NAME="413"></A> String path = fu.fromURI(systemId);
|
---|
431 | <FONT CLASS="LN">14</FONT><A NAME="414"></A>
|
---|
432 | <FONT CLASS="LN">15</FONT><A NAME="415"></A> File file = <FONT CLASS="New">new</FONT> File(path);
|
---|
433 | <FONT CLASS="LN">16</FONT><A NAME="416"></A> <FONT CLASS="If">if</FONT> (!file.isAbsolute()) {
|
---|
434 | <FONT CLASS="LN">17</FONT><A NAME="417"></A> file = fu.resolveFile(context.getBuildFileParent(), path);
|
---|
435 | <FONT CLASS="LN">18</FONT><A NAME="418"></A> }
|
---|
436 | <FONT CLASS="LN">19</FONT><A NAME="419"></A> <FONT CLASS="Try">try</FONT> {
|
---|
437 | <FONT CLASS="LN">20</FONT><A NAME="420"></A> InputSource inputSource =
|
---|
438 | <FONT CLASS="LN">21</FONT><A NAME="421"></A> <FONT CLASS="New">new</FONT> InputSource(<FONT CLASS="New">new</FONT> FileInputStream(file));
|
---|
439 | <FONT CLASS="LN">22</FONT><A NAME="422"></A> inputSource.setSystemId(fu.toURI(file.getAbsolutePath()));
|
---|
440 | <FONT CLASS="LN">23</FONT><A NAME="423"></A> <FONT CLASS="Return">return</FONT> inputSource;
|
---|
441 | <FONT CLASS="LN">24</FONT><A NAME="424"></A> } <FONT CLASS="Catch">catch</FONT> (FileNotFoundException fne) {
|
---|
442 | <FONT CLASS="LN">25</FONT><A NAME="425"></A> context.getProject().log(file.getAbsolutePath()
|
---|
443 | <FONT CLASS="LN">26</FONT><A NAME="426"></A> + <FONT CLASS="StringLiteral">" could not be found"</FONT>, Project.MSG_WARN);
|
---|
444 | <FONT CLASS="LN">27</FONT><A NAME="427"></A> }
|
---|
445 | <FONT CLASS="LN">28</FONT><A NAME="428"></A>
|
---|
446 | <FONT CLASS="LN">29</FONT><A NAME="429"></A> }
|
---|
447 | <FONT CLASS="LN">30</FONT><A NAME="430"></A> <FONT CLASS="SingleLineComment">// use default if not file or file not found
|
---|
448 | <FONT CLASS="LN">31</FONT><A NAME="431"></A></FONT> <FONT CLASS="Return">return</FONT> <FONT CLASS="Null">null</FONT>;
|
---|
449 | <FONT CLASS="LN">32</FONT><A NAME="432"></A> }
|
---|
450 | <FONT CLASS="LN">33</FONT><A NAME="433"></A>
|
---|
451 | <FONT CLASS="LN">34</FONT><A NAME="434"></A> <FONT CLASS="FormalComment">/**
|
---|
452 | <FONT CLASS="LN">35</FONT><A NAME="435"></A> * Handles the start of a project element. A project handler is created
|
---|
453 | <FONT CLASS="LN">36</FONT><A NAME="436"></A> * and initialised with the element name and attributes.
|
---|
454 | <FONT CLASS="LN">37</FONT><A NAME="437"></A> *
|
---|
455 | <FONT CLASS="LN">38</FONT><A NAME="438"></A> * @param uri The namespace uri for this element.
|
---|
456 | <FONT CLASS="LN">39</FONT><A NAME="439"></A> * @param tag The name of the element being started.
|
---|
457 | <FONT CLASS="LN">40</FONT><A NAME="440"></A> * Will not be <code>null</code>.
|
---|
458 | <FONT CLASS="LN">41</FONT><A NAME="441"></A> * @param qname The qualified name for this element.
|
---|
459 | <FONT CLASS="LN">42</FONT><A NAME="442"></A> * @param attrs Attributes of the element being started.
|
---|
460 | <FONT CLASS="LN">43</FONT><A NAME="443"></A> * Will not be <code>null</code>.
|
---|
461 | <FONT CLASS="LN">44</FONT><A NAME="444"></A> *
|
---|
462 | <FONT CLASS="LN">45</FONT><A NAME="445"></A> * @exception org.xml.sax.SAXParseException if the tag given is not
|
---|
463 | <FONT CLASS="LN">46</FONT><A NAME="446"></A> * <code>"project"</code>
|
---|
464 | <FONT CLASS="LN">47</FONT><A NAME="447"></A> */</FONT>
|
---|
465 | <FONT CLASS="LN">48</FONT><A NAME="448"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> startElement(String uri, String tag, String qname, Attributes attrs)
|
---|
466 | <FONT CLASS="LN">49</FONT><A NAME="449"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
467 | <FONT CLASS="LN">50</FONT><A NAME="450"></A> AntHandler next
|
---|
468 | <FONT CLASS="LN">51</FONT><A NAME="451"></A> = currentHandler.onStartChild(uri, tag, qname, attrs, context);
|
---|
469 | <FONT CLASS="LN">52</FONT><A NAME="452"></A> antHandlers.push(currentHandler);
|
---|
470 | <FONT CLASS="LN">53</FONT><A NAME="453"></A> currentHandler = next;
|
---|
471 | <FONT CLASS="LN">54</FONT><A NAME="454"></A> currentHandler.onStartElement(uri, tag, qname, attrs, context);
|
---|
472 | <FONT CLASS="LN">55</FONT><A NAME="455"></A> }
|
---|
473 | <FONT CLASS="LN">56</FONT><A NAME="456"></A>
|
---|
474 | <FONT CLASS="LN">57</FONT><A NAME="457"></A> <FONT CLASS="FormalComment">/**
|
---|
475 | <FONT CLASS="LN">58</FONT><A NAME="458"></A> * Sets the locator in the project helper for future reference.
|
---|
476 | <FONT CLASS="LN">59</FONT><A NAME="459"></A> *
|
---|
477 | <FONT CLASS="LN">60</FONT><A NAME="460"></A> * @param locator The locator used by the parser.
|
---|
478 | <FONT CLASS="LN">61</FONT><A NAME="461"></A> * Will not be <code>null</code>.
|
---|
479 | <FONT CLASS="LN">62</FONT><A NAME="462"></A> */</FONT>
|
---|
480 | <FONT CLASS="LN">63</FONT><A NAME="463"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> setDocumentLocator(Locator locator) {
|
---|
481 | <FONT CLASS="LN">64</FONT><A NAME="464"></A> context.setLocator(locator);
|
---|
482 | <FONT CLASS="LN">65</FONT><A NAME="465"></A> }
|
---|
483 | <FONT CLASS="LN">66</FONT><A NAME="466"></A>
|
---|
484 | <FONT CLASS="LN">67</FONT><A NAME="467"></A> <FONT CLASS="FormalComment">/**
|
---|
485 | <FONT CLASS="LN">68</FONT><A NAME="468"></A> * Handles the end of an element. Any required clean-up is performed
|
---|
486 | <FONT CLASS="LN">69</FONT><A NAME="469"></A> * by the onEndElement() method and then the original handler
|
---|
487 | <FONT CLASS="LN">70</FONT><A NAME="470"></A> * is restored to the parser.
|
---|
488 | <FONT CLASS="LN">71</FONT><A NAME="471"></A> *
|
---|
489 | <FONT CLASS="LN">72</FONT><A NAME="472"></A> * @param uri The namespace URI for this element.
|
---|
490 | <FONT CLASS="LN">73</FONT><A NAME="473"></A> * @param name The name of the element which is ending.
|
---|
491 | <FONT CLASS="LN">74</FONT><A NAME="474"></A> * Will not be <code>null</code>.
|
---|
492 | <FONT CLASS="LN">75</FONT><A NAME="475"></A> * @param qName The qualified name for this element.
|
---|
493 | <FONT CLASS="LN">76</FONT><A NAME="476"></A> *
|
---|
494 | <FONT CLASS="LN">77</FONT><A NAME="477"></A> * @exception SAXException in case of error (not thrown in
|
---|
495 | <FONT CLASS="LN">78</FONT><A NAME="478"></A> * this implementation)
|
---|
496 | <FONT CLASS="LN">79</FONT><A NAME="479"></A> *
|
---|
497 | <FONT CLASS="LN">80</FONT><A NAME="480"></A> */</FONT>
|
---|
498 | <FONT CLASS="LN">81</FONT><A NAME="481"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> endElement(String uri, String name, String qName) <FONT CLASS="Throws">throws</FONT> SAXException {
|
---|
499 | <FONT CLASS="LN">82</FONT><A NAME="482"></A> currentHandler.onEndElement(uri, name, context);
|
---|
500 | <FONT CLASS="LN">83</FONT><A NAME="483"></A> AntHandler prev = (AntHandler) antHandlers.pop();
|
---|
501 | <FONT CLASS="LN">84</FONT><A NAME="484"></A> currentHandler = prev;
|
---|
502 | <FONT CLASS="LN">85</FONT><A NAME="485"></A> <FONT CLASS="If">if</FONT> (currentHandler != <FONT CLASS="Null">null</FONT>) {
|
---|
503 | <FONT CLASS="LN">86</FONT><A NAME="486"></A> currentHandler.onEndChild(uri, name, qName, context);
|
---|
504 | <FONT CLASS="LN">87</FONT><A NAME="487"></A> }
|
---|
505 | <FONT CLASS="LN">88</FONT><A NAME="488"></A> }
|
---|
506 | <FONT CLASS="LN">89</FONT><A NAME="489"></A>
|
---|
507 | <FONT CLASS="LN">90</FONT><A NAME="490"></A> <FONT CLASS="FormalComment">/**
|
---|
508 | <FONT CLASS="LN">91</FONT><A NAME="491"></A> * Handle text within an element, calls currentHandler.characters.
|
---|
509 | <FONT CLASS="LN">92</FONT><A NAME="492"></A> *
|
---|
510 | <FONT CLASS="LN">93</FONT><A NAME="493"></A> * @param buf A character array of the test.
|
---|
511 | <FONT CLASS="LN">94</FONT><A NAME="494"></A> * @param start The start offset in the array.
|
---|
512 | <FONT CLASS="LN">95</FONT><A NAME="495"></A> * @param count The number of characters to read.
|
---|
513 | <FONT CLASS="LN">96</FONT><A NAME="496"></A> * @exception SAXParseException if an error occurs
|
---|
514 | <FONT CLASS="LN">97</FONT><A NAME="497"></A> */</FONT>
|
---|
515 | <FONT CLASS="LN">98</FONT><A NAME="498"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> characters(<FONT CLASS="Char">char</FONT>[] buf, <FONT CLASS="Int">int</FONT> start, <FONT CLASS="Int">int</FONT> count)
|
---|
516 | <FONT CLASS="LN">99</FONT><A NAME="499"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
517 | <FONT CLASS="LN">00</FONT><A NAME="500"></A> currentHandler.characters(buf, start, count, context);
|
---|
518 | <FONT CLASS="LN">01</FONT><A NAME="501"></A> }
|
---|
519 | <FONT CLASS="LN">02</FONT><A NAME="502"></A>
|
---|
520 | <FONT CLASS="LN">03</FONT><A NAME="503"></A> <FONT CLASS="FormalComment">/**
|
---|
521 | <FONT CLASS="LN">04</FONT><A NAME="504"></A> * Start a namespace prefix to uri mapping
|
---|
522 | <FONT CLASS="LN">05</FONT><A NAME="505"></A> *
|
---|
523 | <FONT CLASS="LN">06</FONT><A NAME="506"></A> * @param prefix the namespace prefix
|
---|
524 | <FONT CLASS="LN">07</FONT><A NAME="507"></A> * @param uri the namespace uri
|
---|
525 | <FONT CLASS="LN">08</FONT><A NAME="508"></A> */</FONT>
|
---|
526 | <FONT CLASS="LN">09</FONT><A NAME="509"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> startPrefixMapping(String prefix, String uri) {
|
---|
527 | <FONT CLASS="LN">10</FONT><A NAME="510"></A> context.startPrefixMapping(prefix, uri);
|
---|
528 | <FONT CLASS="LN">11</FONT><A NAME="511"></A> }
|
---|
529 | <FONT CLASS="LN">12</FONT><A NAME="512"></A>
|
---|
530 | <FONT CLASS="LN">13</FONT><A NAME="513"></A> <FONT CLASS="FormalComment">/**
|
---|
531 | <FONT CLASS="LN">14</FONT><A NAME="514"></A> * End a namepace prefix to uri mapping
|
---|
532 | <FONT CLASS="LN">15</FONT><A NAME="515"></A> *
|
---|
533 | <FONT CLASS="LN">16</FONT><A NAME="516"></A> * @param prefix the prefix that is not mapped anymore
|
---|
534 | <FONT CLASS="LN">17</FONT><A NAME="517"></A> */</FONT>
|
---|
535 | <FONT CLASS="LN">18</FONT><A NAME="518"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> endPrefixMapping(String prefix) {
|
---|
536 | <FONT CLASS="LN">19</FONT><A NAME="519"></A> context.endPrefixMapping(prefix);
|
---|
537 | <FONT CLASS="LN">20</FONT><A NAME="520"></A> }
|
---|
538 | <FONT CLASS="LN">21</FONT><A NAME="521"></A> }
|
---|
539 | <FONT CLASS="LN">22</FONT><A NAME="522"></A>
|
---|
540 | <FONT CLASS="LN">23</FONT><A NAME="523"></A> <FONT CLASS="FormalComment">/**
|
---|
541 | <FONT CLASS="LN">24</FONT><A NAME="524"></A> * The main handler - it handles the &lt;project&gt; tag.
|
---|
542 | <FONT CLASS="LN">25</FONT><A NAME="525"></A> *
|
---|
543 | <FONT CLASS="LN">26</FONT><A NAME="526"></A> * @see AntHandler
|
---|
544 | <FONT CLASS="LN">27</FONT><A NAME="527"></A> */</FONT>
|
---|
545 | <FONT CLASS="LN">28</FONT><A NAME="528"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Class">class</FONT> MainHandler <FONT CLASS="Extends">extends</FONT> AntHandler {
|
---|
546 | <FONT CLASS="LN">29</FONT><A NAME="529"></A>
|
---|
547 | <FONT CLASS="LN">30</FONT><A NAME="530"></A> <FONT CLASS="FormalComment">/**
|
---|
548 | <FONT CLASS="LN">31</FONT><A NAME="531"></A> * Handle the project tag
|
---|
549 | <FONT CLASS="LN">32</FONT><A NAME="532"></A> *
|
---|
550 | <FONT CLASS="LN">33</FONT><A NAME="533"></A> * @param uri The namespace uri.
|
---|
551 | <FONT CLASS="LN">34</FONT><A NAME="534"></A> * @param name The element tag.
|
---|
552 | <FONT CLASS="LN">35</FONT><A NAME="535"></A> * @param qname The element qualified name.
|
---|
553 | <FONT CLASS="LN">36</FONT><A NAME="536"></A> * @param attrs The attributes of the element.
|
---|
554 | <FONT CLASS="LN">37</FONT><A NAME="537"></A> * @param context The current context.
|
---|
555 | <FONT CLASS="LN">38</FONT><A NAME="538"></A> * @return The project handler that handles subelements of project
|
---|
556 | <FONT CLASS="LN">39</FONT><A NAME="539"></A> * @exception SAXParseException if the qualified name is not "project".
|
---|
557 | <FONT CLASS="LN">40</FONT><A NAME="540"></A> */</FONT>
|
---|
558 | <FONT CLASS="LN">41</FONT><A NAME="541"></A> <FONT CLASS="Public">public</FONT> AntHandler onStartChild(String uri, String name, String qname,
|
---|
559 | <FONT CLASS="LN">42</FONT><A NAME="542"></A> Attributes attrs,
|
---|
560 | <FONT CLASS="LN">43</FONT><A NAME="543"></A> AntXMLContext context)
|
---|
561 | <FONT CLASS="LN">44</FONT><A NAME="544"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
562 | <FONT CLASS="LN">45</FONT><A NAME="545"></A> <FONT CLASS="If">if</FONT> (name.equals(<FONT CLASS="StringLiteral">"project"</FONT>)
|
---|
563 | <FONT CLASS="LN">46</FONT><A NAME="546"></A> && (uri.equals(<FONT CLASS="StringLiteral">""</FONT>) || uri.equals(ANT_CORE_URI))) {
|
---|
564 | <FONT CLASS="LN">47</FONT><A NAME="547"></A> <FONT CLASS="Return">return</FONT> ProjectHelper3.projectHandler;
|
---|
565 | <FONT CLASS="LN">48</FONT><A NAME="548"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
566 | <FONT CLASS="LN">49</FONT><A NAME="549"></A><FONT CLASS="SingleLineComment">// if (context.importlevel > 0) {
|
---|
567 | <FONT CLASS="LN">50</FONT><A NAME="550"></A></FONT><FONT CLASS="SingleLineComment">// // we are in an imported file. Allow top-level <target>.
|
---|
568 | <FONT CLASS="LN">51</FONT><A NAME="551"></A></FONT><FONT CLASS="SingleLineComment">// if (qname.equals( "target" ) )
|
---|
569 | <FONT CLASS="LN">52</FONT><A NAME="552"></A></FONT><FONT CLASS="SingleLineComment">// return ProjectHelper3.targetHandler;
|
---|
570 | <FONT CLASS="LN">53</FONT><A NAME="553"></A></FONT><FONT CLASS="SingleLineComment">// }
|
---|
571 | <FONT CLASS="LN">54</FONT><A NAME="554"></A></FONT> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> SAXParseException(<FONT CLASS="StringLiteral">"Unexpected element \""</FONT> + qname
|
---|
572 | <FONT CLASS="LN">55</FONT><A NAME="555"></A> + <FONT CLASS="StringLiteral">"\" "</FONT> + name, context.getLocator());
|
---|
573 | <FONT CLASS="LN">56</FONT><A NAME="556"></A> }
|
---|
574 | <FONT CLASS="LN">57</FONT><A NAME="557"></A> }
|
---|
575 | <FONT CLASS="LN">58</FONT><A NAME="558"></A> }
|
---|
576 | <FONT CLASS="LN">59</FONT><A NAME="559"></A>
|
---|
577 | <FONT CLASS="LN">60</FONT><A NAME="560"></A> <FONT CLASS="FormalComment">/**
|
---|
578 | <FONT CLASS="LN">61</FONT><A NAME="561"></A> * Handler for the top level "project" element.
|
---|
579 | <FONT CLASS="LN">62</FONT><A NAME="562"></A> */</FONT>
|
---|
580 | <FONT CLASS="LN">63</FONT><A NAME="563"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Class">class</FONT> ProjectHandler <FONT CLASS="Extends">extends</FONT> AntHandler {
|
---|
581 | <FONT CLASS="LN">64</FONT><A NAME="564"></A>
|
---|
582 | <FONT CLASS="LN">65</FONT><A NAME="565"></A> <FONT CLASS="FormalComment">/**
|
---|
583 | <FONT CLASS="LN">66</FONT><A NAME="566"></A> * Initialisation routine called after handler creation
|
---|
584 | <FONT CLASS="LN">67</FONT><A NAME="567"></A> * with the element name and attributes. The attributes which
|
---|
585 | <FONT CLASS="LN">68</FONT><A NAME="568"></A> * this handler can deal with are: <code>"default"</code>,
|
---|
586 | <FONT CLASS="LN">69</FONT><A NAME="569"></A> * <code>"name"</code>, <code>"id"</code> and <code>"basedir"</code>.
|
---|
587 | <FONT CLASS="LN">70</FONT><A NAME="570"></A> *
|
---|
588 | <FONT CLASS="LN">71</FONT><A NAME="571"></A> * @param uri The namespace URI for this element.
|
---|
589 | <FONT CLASS="LN">72</FONT><A NAME="572"></A> * @param tag Name of the element which caused this handler
|
---|
590 | <FONT CLASS="LN">73</FONT><A NAME="573"></A> * to be created. Should not be <code>null</code>.
|
---|
591 | <FONT CLASS="LN">74</FONT><A NAME="574"></A> * Ignored in this implementation.
|
---|
592 | <FONT CLASS="LN">75</FONT><A NAME="575"></A> * @param qname The qualified name for this element.
|
---|
593 | <FONT CLASS="LN">76</FONT><A NAME="576"></A> * @param attrs Attributes of the element which caused this
|
---|
594 | <FONT CLASS="LN">77</FONT><A NAME="577"></A> * handler to be created. Must not be <code>null</code>.
|
---|
595 | <FONT CLASS="LN">78</FONT><A NAME="578"></A> * @param context The current context.
|
---|
596 | <FONT CLASS="LN">79</FONT><A NAME="579"></A> *
|
---|
597 | <FONT CLASS="LN">80</FONT><A NAME="580"></A> * @exception SAXParseException if an unexpected attribute is
|
---|
598 | <FONT CLASS="LN">81</FONT><A NAME="581"></A> * encountered or if the <code>"default"</code> attribute
|
---|
599 | <FONT CLASS="LN">82</FONT><A NAME="582"></A> * is missing.
|
---|
600 | <FONT CLASS="LN">83</FONT><A NAME="583"></A> */</FONT>
|
---|
601 | <FONT CLASS="LN">84</FONT><A NAME="584"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> onStartElement(String uri, String tag, String qname,
|
---|
602 | <FONT CLASS="LN">85</FONT><A NAME="585"></A> Attributes attrs,
|
---|
603 | <FONT CLASS="LN">86</FONT><A NAME="586"></A> AntXMLContext context)
|
---|
604 | <FONT CLASS="LN">87</FONT><A NAME="587"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
605 | <FONT CLASS="LN">88</FONT><A NAME="588"></A> String id = <FONT CLASS="Null">null</FONT>;
|
---|
606 | <FONT CLASS="LN">89</FONT><A NAME="589"></A> String baseDir = <FONT CLASS="Null">null</FONT>;
|
---|
607 | <FONT CLASS="LN">90</FONT><A NAME="590"></A> <FONT CLASS="Boolean">boolean</FONT> nameAttributeSet = <FONT CLASS="False">false</FONT>;
|
---|
608 | <FONT CLASS="LN">91</FONT><A NAME="591"></A>
|
---|
609 | <FONT CLASS="LN">92</FONT><A NAME="592"></A> Project project = context.getProject();
|
---|
610 | <FONT CLASS="LN">93</FONT><A NAME="593"></A>
|
---|
611 | <FONT CLASS="LN">94</FONT><A NAME="594"></A> <FONT CLASS="FormalComment">/** XXX I really don't like this - the XML processor is still
|
---|
612 | <FONT CLASS="LN">95</FONT><A NAME="595"></A> * too 'involved' in the processing. A better solution (IMO)
|
---|
613 | <FONT CLASS="LN">96</FONT><A NAME="596"></A> * would be to create UE for Project and Target too, and
|
---|
614 | <FONT CLASS="LN">97</FONT><A NAME="597"></A> * then process the tree and have Project/Target deal with
|
---|
615 | <FONT CLASS="LN">98</FONT><A NAME="598"></A> * its attributes ( similar with Description ).
|
---|
616 | <FONT CLASS="LN">99</FONT><A NAME="599"></A> *
|
---|
617 | <FONT CLASS="LN">00</FONT><A NAME="600"></A> * If we eventually switch to ( or add support for ) DOM,
|
---|
618 | <FONT CLASS="LN">01</FONT><A NAME="601"></A> * things will work smoothly - UE can be avoided almost completely
|
---|
619 | <FONT CLASS="LN">02</FONT><A NAME="602"></A> * ( it could still be created on demand, for backward compatibility )
|
---|
620 | <FONT CLASS="LN">03</FONT><A NAME="603"></A> */</FONT>
|
---|
621 | <FONT CLASS="LN">04</FONT><A NAME="604"></A>
|
---|
622 | <FONT CLASS="LN">05</FONT><A NAME="605"></A> <FONT CLASS="For">for</FONT> (<FONT CLASS="Int">int</FONT> i = <FONT CLASS="IntegerLiteral">0</FONT>; i < attrs.getLength(); i++) {
|
---|
623 | <FONT CLASS="LN">06</FONT><A NAME="606"></A> String attrUri = attrs.getURI(i);
|
---|
624 | <FONT CLASS="LN">07</FONT><A NAME="607"></A> <FONT CLASS="If">if</FONT> (attrUri != <FONT CLASS="Null">null</FONT>
|
---|
625 | <FONT CLASS="LN">08</FONT><A NAME="608"></A> && !attrUri.equals(<FONT CLASS="StringLiteral">""</FONT>)
|
---|
626 | <FONT CLASS="LN">09</FONT><A NAME="609"></A> && !attrUri.equals(uri)) {
|
---|
627 | <FONT CLASS="LN">10</FONT><A NAME="610"></A> <FONT CLASS="Continue">continue</FONT>; <FONT CLASS="SingleLineComment">// Ignore attributes from unknown uris
|
---|
628 | <FONT CLASS="LN">11</FONT><A NAME="611"></A></FONT> }
|
---|
629 | <FONT CLASS="LN">12</FONT><A NAME="612"></A> String key = attrs.getLocalName(i);
|
---|
630 | <FONT CLASS="LN">13</FONT><A NAME="613"></A> String value = attrs.getValue(i);
|
---|
631 | <FONT CLASS="LN">14</FONT><A NAME="614"></A>
|
---|
632 | <FONT CLASS="LN">15</FONT><A NAME="615"></A> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"default"</FONT>)) {
|
---|
633 | <FONT CLASS="LN">16</FONT><A NAME="616"></A> <FONT CLASS="If">if</FONT> (value != <FONT CLASS="Null">null</FONT> && !value.equals(<FONT CLASS="StringLiteral">""</FONT>)) {
|
---|
634 | <FONT CLASS="LN">17</FONT><A NAME="617"></A> <FONT CLASS="If">if</FONT> (!context.isIgnoringProjectTag()) {
|
---|
635 | <FONT CLASS="LN">18</FONT><A NAME="618"></A> project.setDefault(value);
|
---|
636 | <FONT CLASS="LN">19</FONT><A NAME="619"></A> }
|
---|
637 | <FONT CLASS="LN">20</FONT><A NAME="620"></A> }
|
---|
638 | <FONT CLASS="LN">21</FONT><A NAME="621"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"name"</FONT>)) {
|
---|
639 | <FONT CLASS="LN">22</FONT><A NAME="622"></A> <FONT CLASS="If">if</FONT> (value != <FONT CLASS="Null">null</FONT>) {
|
---|
640 | <FONT CLASS="LN">23</FONT><A NAME="623"></A> context.setCurrentProjectName(value);
|
---|
641 | <FONT CLASS="LN">24</FONT><A NAME="624"></A> nameAttributeSet = <FONT CLASS="True">true</FONT>;
|
---|
642 | <FONT CLASS="LN">25</FONT><A NAME="625"></A> <FONT CLASS="If">if</FONT> (!context.isIgnoringProjectTag()) {
|
---|
643 | <FONT CLASS="LN">26</FONT><A NAME="626"></A> project.setName(value);
|
---|
644 | <FONT CLASS="LN">27</FONT><A NAME="627"></A> project.addReference(value, project);
|
---|
645 | <FONT CLASS="LN">28</FONT><A NAME="628"></A> }
|
---|
646 | <FONT CLASS="LN">29</FONT><A NAME="629"></A> }
|
---|
647 | <FONT CLASS="LN">30</FONT><A NAME="630"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"id"</FONT>)) {
|
---|
648 | <FONT CLASS="LN">31</FONT><A NAME="631"></A> <FONT CLASS="If">if</FONT> (value != <FONT CLASS="Null">null</FONT>) {
|
---|
649 | <FONT CLASS="LN">32</FONT><A NAME="632"></A> <FONT CLASS="SingleLineComment">// What's the difference between id and name ?
|
---|
650 | <FONT CLASS="LN">33</FONT><A NAME="633"></A></FONT> <FONT CLASS="If">if</FONT> (!context.isIgnoringProjectTag()) {
|
---|
651 | <FONT CLASS="LN">34</FONT><A NAME="634"></A> project.addReference(value, project);
|
---|
652 | <FONT CLASS="LN">35</FONT><A NAME="635"></A> }
|
---|
653 | <FONT CLASS="LN">36</FONT><A NAME="636"></A> }
|
---|
654 | <FONT CLASS="LN">37</FONT><A NAME="637"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"basedir"</FONT>)) {
|
---|
655 | <FONT CLASS="LN">38</FONT><A NAME="638"></A> <FONT CLASS="If">if</FONT> (!context.isIgnoringProjectTag()) {
|
---|
656 | <FONT CLASS="LN">39</FONT><A NAME="639"></A> baseDir = value;
|
---|
657 | <FONT CLASS="LN">40</FONT><A NAME="640"></A> }
|
---|
658 | <FONT CLASS="LN">41</FONT><A NAME="641"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
659 | <FONT CLASS="LN">42</FONT><A NAME="642"></A> <FONT CLASS="SingleLineComment">// XXX ignore attributes in a different NS ( maybe store them ? )
|
---|
660 | <FONT CLASS="LN">43</FONT><A NAME="643"></A></FONT> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> SAXParseException(<FONT CLASS="StringLiteral">"Unexpected attribute \""</FONT>
|
---|
661 | <FONT CLASS="LN">44</FONT><A NAME="644"></A> + attrs.getQName(i) + <FONT CLASS="StringLiteral">"\""</FONT>, context.getLocator());
|
---|
662 | <FONT CLASS="LN">45</FONT><A NAME="645"></A> }
|
---|
663 | <FONT CLASS="LN">46</FONT><A NAME="646"></A> }
|
---|
664 | <FONT CLASS="LN">47</FONT><A NAME="647"></A>
|
---|
665 | <FONT CLASS="LN">48</FONT><A NAME="648"></A> <FONT CLASS="SingleLineComment">// XXX Move to Project ( so it is shared by all helpers )
|
---|
666 | <FONT CLASS="LN">49</FONT><A NAME="649"></A></FONT> String antFileProp = <FONT CLASS="StringLiteral">"ant.file."</FONT> + context.getCurrentProjectName();
|
---|
667 | <FONT CLASS="LN">50</FONT><A NAME="650"></A> String dup = project.getProperty(antFileProp);
|
---|
668 | <FONT CLASS="LN">51</FONT><A NAME="651"></A> <FONT CLASS="If">if</FONT> (dup != <FONT CLASS="Null">null</FONT> && nameAttributeSet) {
|
---|
669 | <FONT CLASS="LN">52</FONT><A NAME="652"></A> File dupFile = <FONT CLASS="New">new</FONT> File(dup);
|
---|
670 | <FONT CLASS="LN">53</FONT><A NAME="653"></A> <FONT CLASS="If">if</FONT> (context.isIgnoringProjectTag()
|
---|
671 | <FONT CLASS="LN">54</FONT><A NAME="654"></A> && !dupFile.equals(context.getBuildFile())) {
|
---|
672 | <FONT CLASS="LN">55</FONT><A NAME="655"></A> project.log(<FONT CLASS="StringLiteral">"Duplicated project name in import. Project "</FONT>
|
---|
673 | <FONT CLASS="LN">56</FONT><A NAME="656"></A> + context.getCurrentProjectName() + <FONT CLASS="StringLiteral">" defined first in "</FONT>
|
---|
674 | <FONT CLASS="LN">57</FONT><A NAME="657"></A> + dup + <FONT CLASS="StringLiteral">" and again in "</FONT> + context.getBuildFile(),
|
---|
675 | <FONT CLASS="LN">58</FONT><A NAME="658"></A> Project.MSG_WARN);
|
---|
676 | <FONT CLASS="LN">59</FONT><A NAME="659"></A> }
|
---|
677 | <FONT CLASS="LN">60</FONT><A NAME="660"></A> }
|
---|
678 | <FONT CLASS="LN">61</FONT><A NAME="661"></A>
|
---|
679 | <FONT CLASS="LN">62</FONT><A NAME="662"></A> <FONT CLASS="If">if</FONT> (context.getBuildFile() != <FONT CLASS="Null">null</FONT>) {
|
---|
680 | <FONT CLASS="LN">63</FONT><A NAME="663"></A> project.setUserProperty(<FONT CLASS="StringLiteral">"ant.file."</FONT>
|
---|
681 | <FONT CLASS="LN">64</FONT><A NAME="664"></A> + context.getCurrentProjectName(),
|
---|
682 | <FONT CLASS="LN">65</FONT><A NAME="665"></A> context.getBuildFile().toString());
|
---|
683 | <FONT CLASS="LN">66</FONT><A NAME="666"></A> }
|
---|
684 | <FONT CLASS="LN">67</FONT><A NAME="667"></A>
|
---|
685 | <FONT CLASS="LN">68</FONT><A NAME="668"></A> <FONT CLASS="If">if</FONT> (context.isIgnoringProjectTag()) {
|
---|
686 | <FONT CLASS="LN">69</FONT><A NAME="669"></A> <FONT CLASS="SingleLineComment">// no further processing
|
---|
687 | <FONT CLASS="LN">70</FONT><A NAME="670"></A></FONT> <FONT CLASS="Return">return</FONT>;
|
---|
688 | <FONT CLASS="LN">71</FONT><A NAME="671"></A> }
|
---|
689 | <FONT CLASS="LN">72</FONT><A NAME="672"></A> <FONT CLASS="SingleLineComment">// set explicitly before starting ?
|
---|
690 | <FONT CLASS="LN">73</FONT><A NAME="673"></A></FONT> <FONT CLASS="If">if</FONT> (project.getProperty(<FONT CLASS="StringLiteral">"basedir"</FONT>) != <FONT CLASS="Null">null</FONT>) {
|
---|
691 | <FONT CLASS="LN">74</FONT><A NAME="674"></A> project.setBasedir(project.getProperty(<FONT CLASS="StringLiteral">"basedir"</FONT>));
|
---|
692 | <FONT CLASS="LN">75</FONT><A NAME="675"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
693 | <FONT CLASS="LN">76</FONT><A NAME="676"></A> <FONT CLASS="SingleLineComment">// Default for baseDir is the location of the build file.
|
---|
694 | <FONT CLASS="LN">77</FONT><A NAME="677"></A></FONT> <FONT CLASS="If">if</FONT> (baseDir == <FONT CLASS="Null">null</FONT>) {
|
---|
695 | <FONT CLASS="LN">78</FONT><A NAME="678"></A> project.setBasedir(context.getBuildFileParent().getAbsolutePath());
|
---|
696 | <FONT CLASS="LN">79</FONT><A NAME="679"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
697 | <FONT CLASS="LN">80</FONT><A NAME="680"></A> <FONT CLASS="SingleLineComment">// check whether the user has specified an absolute path
|
---|
698 | <FONT CLASS="LN">81</FONT><A NAME="681"></A></FONT> <FONT CLASS="If">if</FONT> ((<FONT CLASS="New">new</FONT> File(baseDir)).isAbsolute()) {
|
---|
699 | <FONT CLASS="LN">82</FONT><A NAME="682"></A> project.setBasedir(baseDir);
|
---|
700 | <FONT CLASS="LN">83</FONT><A NAME="683"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
701 | <FONT CLASS="LN">84</FONT><A NAME="684"></A> project.setBaseDir(fu.resolveFile(
|
---|
702 | <FONT CLASS="LN">85</FONT><A NAME="685"></A> context.getBuildFileParent(), baseDir));
|
---|
703 | <FONT CLASS="LN">86</FONT><A NAME="686"></A> }
|
---|
704 | <FONT CLASS="LN">87</FONT><A NAME="687"></A> }
|
---|
705 | <FONT CLASS="LN">88</FONT><A NAME="688"></A> }
|
---|
706 | <FONT CLASS="LN">89</FONT><A NAME="689"></A>
|
---|
707 | <FONT CLASS="LN">90</FONT><A NAME="690"></A> project.addTarget(<FONT CLASS="StringLiteral">""</FONT>, context.getImplicitTarget());
|
---|
708 | <FONT CLASS="LN">91</FONT><A NAME="691"></A> context.setCurrentTarget(context.getImplicitTarget());
|
---|
709 | <FONT CLASS="LN">92</FONT><A NAME="692"></A> }
|
---|
710 | <FONT CLASS="LN">93</FONT><A NAME="693"></A>
|
---|
711 | <FONT CLASS="LN">94</FONT><A NAME="694"></A> <FONT CLASS="FormalComment">/**
|
---|
712 | <FONT CLASS="LN">95</FONT><A NAME="695"></A> * Handles the start of a top-level element within the project. An
|
---|
713 | <FONT CLASS="LN">96</FONT><A NAME="696"></A> * appropriate handler is created and initialised with the details
|
---|
714 | <FONT CLASS="LN">97</FONT><A NAME="697"></A> * of the element.
|
---|
715 | <FONT CLASS="LN">98</FONT><A NAME="698"></A> *
|
---|
716 | <FONT CLASS="LN">99</FONT><A NAME="699"></A> * @param uri The namespace URI for this element.
|
---|
717 | <FONT CLASS="LN">00</FONT><A NAME="700"></A> * @param name The name of the element being started.
|
---|
718 | <FONT CLASS="LN">01</FONT><A NAME="701"></A> * Will not be <code>null</code>.
|
---|
719 | <FONT CLASS="LN">02</FONT><A NAME="702"></A> * @param qname The qualified name for this element.
|
---|
720 | <FONT CLASS="LN">03</FONT><A NAME="703"></A> * @param attrs Attributes of the element being started.
|
---|
721 | <FONT CLASS="LN">04</FONT><A NAME="704"></A> * Will not be <code>null</code>.
|
---|
722 | <FONT CLASS="LN">05</FONT><A NAME="705"></A> * @param context The context for this element.
|
---|
723 | <FONT CLASS="LN">06</FONT><A NAME="706"></A> * @return a target or an element handler.
|
---|
724 | <FONT CLASS="LN">07</FONT><A NAME="707"></A> *
|
---|
725 | <FONT CLASS="LN">08</FONT><A NAME="708"></A> * @exception org.xml.sax.SAXParseException if the tag given is not
|
---|
726 | <FONT CLASS="LN">09</FONT><A NAME="709"></A> * <code>"taskdef"</code>, <code>"typedef"</code>,
|
---|
727 | <FONT CLASS="LN">10</FONT><A NAME="710"></A> * <code>"property"</code>, <code>"target"</code>
|
---|
728 | <FONT CLASS="LN">11</FONT><A NAME="711"></A> * or a data type definition
|
---|
729 | <FONT CLASS="LN">12</FONT><A NAME="712"></A> */</FONT>
|
---|
730 | <FONT CLASS="LN">13</FONT><A NAME="713"></A> <FONT CLASS="Public">public</FONT> AntHandler onStartChild(String uri, String name, String qname,
|
---|
731 | <FONT CLASS="LN">14</FONT><A NAME="714"></A> Attributes attrs,
|
---|
732 | <FONT CLASS="LN">15</FONT><A NAME="715"></A> AntXMLContext context)
|
---|
733 | <FONT CLASS="LN">16</FONT><A NAME="716"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
734 | <FONT CLASS="LN">17</FONT><A NAME="717"></A> <FONT CLASS="If">if</FONT> (name.equals(<FONT CLASS="StringLiteral">"target"</FONT>)
|
---|
735 | <FONT CLASS="LN">18</FONT><A NAME="718"></A> && (uri.equals(<FONT CLASS="StringLiteral">""</FONT>) || uri.equals(ANT_CORE_URI))) {
|
---|
736 | <FONT CLASS="LN">19</FONT><A NAME="719"></A> <FONT CLASS="Return">return</FONT> ProjectHelper3.targetHandler;
|
---|
737 | <FONT CLASS="LN">20</FONT><A NAME="720"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
738 | <FONT CLASS="LN">21</FONT><A NAME="721"></A> <FONT CLASS="Return">return</FONT> ProjectHelper3.elementHandler;
|
---|
739 | <FONT CLASS="LN">22</FONT><A NAME="722"></A> }
|
---|
740 | <FONT CLASS="LN">23</FONT><A NAME="723"></A> }
|
---|
741 | <FONT CLASS="LN">24</FONT><A NAME="724"></A>
|
---|
742 | <FONT CLASS="LN">25</FONT><A NAME="725"></A> }
|
---|
743 | <FONT CLASS="LN">26</FONT><A NAME="726"></A>
|
---|
744 | <FONT CLASS="LN">27</FONT><A NAME="727"></A> <FONT CLASS="FormalComment">/**
|
---|
745 | <FONT CLASS="LN">28</FONT><A NAME="728"></A> * Handler for "target" elements.
|
---|
746 | <FONT CLASS="LN">29</FONT><A NAME="729"></A> */</FONT>
|
---|
747 | <FONT CLASS="LN">30</FONT><A NAME="730"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Class">class</FONT> TargetHandler <FONT CLASS="Extends">extends</FONT> AntHandler {
|
---|
748 | <FONT CLASS="LN">31</FONT><A NAME="731"></A>
|
---|
749 | <FONT CLASS="LN">32</FONT><A NAME="732"></A> <FONT CLASS="FormalComment">/**
|
---|
750 | <FONT CLASS="LN">33</FONT><A NAME="733"></A> * Initialisation routine called after handler creation
|
---|
751 | <FONT CLASS="LN">34</FONT><A NAME="734"></A> * with the element name and attributes. The attributes which
|
---|
752 | <FONT CLASS="LN">35</FONT><A NAME="735"></A> * this handler can deal with are: <code>"name"</code>,
|
---|
753 | <FONT CLASS="LN">36</FONT><A NAME="736"></A> * <code>"depends"</code>, <code>"if"</code>,
|
---|
754 | <FONT CLASS="LN">37</FONT><A NAME="737"></A> * <code>"unless"</code>, <code>"id"</code> and
|
---|
755 | <FONT CLASS="LN">38</FONT><A NAME="738"></A> * <code>"description"</code>.
|
---|
756 | <FONT CLASS="LN">39</FONT><A NAME="739"></A> *
|
---|
757 | <FONT CLASS="LN">40</FONT><A NAME="740"></A> * @param uri The namespace URI for this element.
|
---|
758 | <FONT CLASS="LN">41</FONT><A NAME="741"></A> * @param tag Name of the element which caused this handler
|
---|
759 | <FONT CLASS="LN">42</FONT><A NAME="742"></A> * to be created. Should not be <code>null</code>.
|
---|
760 | <FONT CLASS="LN">43</FONT><A NAME="743"></A> * Ignored in this implementation.
|
---|
761 | <FONT CLASS="LN">44</FONT><A NAME="744"></A> * @param qname The qualified name for this element.
|
---|
762 | <FONT CLASS="LN">45</FONT><A NAME="745"></A> * @param attrs Attributes of the element which caused this
|
---|
763 | <FONT CLASS="LN">46</FONT><A NAME="746"></A> * handler to be created. Must not be <code>null</code>.
|
---|
764 | <FONT CLASS="LN">47</FONT><A NAME="747"></A> * @param context The current context.
|
---|
765 | <FONT CLASS="LN">48</FONT><A NAME="748"></A> *
|
---|
766 | <FONT CLASS="LN">49</FONT><A NAME="749"></A> * @exception SAXParseException if an unexpected attribute is encountered
|
---|
767 | <FONT CLASS="LN">50</FONT><A NAME="750"></A> * or if the <code>"name"</code> attribute is missing.
|
---|
768 | <FONT CLASS="LN">51</FONT><A NAME="751"></A> */</FONT>
|
---|
769 | <FONT CLASS="LN">52</FONT><A NAME="752"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> onStartElement(String uri, String tag, String qname,
|
---|
770 | <FONT CLASS="LN">53</FONT><A NAME="753"></A> Attributes attrs,
|
---|
771 | <FONT CLASS="LN">54</FONT><A NAME="754"></A> AntXMLContext context)
|
---|
772 | <FONT CLASS="LN">55</FONT><A NAME="755"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
773 | <FONT CLASS="LN">56</FONT><A NAME="756"></A> String name = <FONT CLASS="Null">null</FONT>;
|
---|
774 | <FONT CLASS="LN">57</FONT><A NAME="757"></A> String depends = <FONT CLASS="StringLiteral">""</FONT>;
|
---|
775 | <FONT CLASS="LN">58</FONT><A NAME="758"></A>
|
---|
776 | <FONT CLASS="LN">59</FONT><A NAME="759"></A> Project project = context.getProject();
|
---|
777 | <FONT CLASS="LN">60</FONT><A NAME="760"></A> Target target = <FONT CLASS="New">new</FONT> Target();
|
---|
778 | <FONT CLASS="LN">61</FONT><A NAME="761"></A> target.setProject(project);
|
---|
779 | <FONT CLASS="LN">62</FONT><A NAME="762"></A> context.addTarget(target);
|
---|
780 | <FONT CLASS="LN">63</FONT><A NAME="763"></A>
|
---|
781 | <FONT CLASS="LN">64</FONT><A NAME="764"></A> <FONT CLASS="For">for</FONT> (<FONT CLASS="Int">int</FONT> i = <FONT CLASS="IntegerLiteral">0</FONT>; i < attrs.getLength(); i++) {
|
---|
782 | <FONT CLASS="LN">65</FONT><A NAME="765"></A> String attrUri = attrs.getURI(i);
|
---|
783 | <FONT CLASS="LN">66</FONT><A NAME="766"></A> <FONT CLASS="If">if</FONT> (attrUri != <FONT CLASS="Null">null</FONT>
|
---|
784 | <FONT CLASS="LN">67</FONT><A NAME="767"></A> && !attrUri.equals(<FONT CLASS="StringLiteral">""</FONT>)
|
---|
785 | <FONT CLASS="LN">68</FONT><A NAME="768"></A> && !attrUri.equals(uri)) {
|
---|
786 | <FONT CLASS="LN">69</FONT><A NAME="769"></A> <FONT CLASS="Continue">continue</FONT>; <FONT CLASS="SingleLineComment">// Ignore attributes from unknown uris
|
---|
787 | <FONT CLASS="LN">70</FONT><A NAME="770"></A></FONT> }
|
---|
788 | <FONT CLASS="LN">71</FONT><A NAME="771"></A> String key = attrs.getLocalName(i);
|
---|
789 | <FONT CLASS="LN">72</FONT><A NAME="772"></A> String value = attrs.getValue(i);
|
---|
790 | <FONT CLASS="LN">73</FONT><A NAME="773"></A>
|
---|
791 | <FONT CLASS="LN">74</FONT><A NAME="774"></A> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"name"</FONT>)) {
|
---|
792 | <FONT CLASS="LN">75</FONT><A NAME="775"></A> name = value;
|
---|
793 | <FONT CLASS="LN">76</FONT><A NAME="776"></A> <FONT CLASS="If">if</FONT> (<FONT CLASS="StringLiteral">""</FONT>.equals(name)) {
|
---|
794 | <FONT CLASS="LN">77</FONT><A NAME="777"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"name attribute must "</FONT>
|
---|
795 | <FONT CLASS="LN">78</FONT><A NAME="778"></A> + <FONT CLASS="StringLiteral">"not be empty"</FONT>);
|
---|
796 | <FONT CLASS="LN">79</FONT><A NAME="779"></A> }
|
---|
797 | <FONT CLASS="LN">80</FONT><A NAME="780"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"depends"</FONT>)) {
|
---|
798 | <FONT CLASS="LN">81</FONT><A NAME="781"></A> depends = value;
|
---|
799 | <FONT CLASS="LN">82</FONT><A NAME="782"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"if"</FONT>)) {
|
---|
800 | <FONT CLASS="LN">83</FONT><A NAME="783"></A> target.setIf(value);
|
---|
801 | <FONT CLASS="LN">84</FONT><A NAME="784"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"unless"</FONT>)) {
|
---|
802 | <FONT CLASS="LN">85</FONT><A NAME="785"></A> target.setUnless(value);
|
---|
803 | <FONT CLASS="LN">86</FONT><A NAME="786"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"id"</FONT>)) {
|
---|
804 | <FONT CLASS="LN">87</FONT><A NAME="787"></A> <FONT CLASS="If">if</FONT> (value != <FONT CLASS="Null">null</FONT> && !value.equals(<FONT CLASS="StringLiteral">""</FONT>)) {
|
---|
805 | <FONT CLASS="LN">88</FONT><A NAME="788"></A> context.getProject().addReference(value, target);
|
---|
806 | <FONT CLASS="LN">89</FONT><A NAME="789"></A> }
|
---|
807 | <FONT CLASS="LN">90</FONT><A NAME="790"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (key.equals(<FONT CLASS="StringLiteral">"description"</FONT>)) {
|
---|
808 | <FONT CLASS="LN">91</FONT><A NAME="791"></A> target.setDescription(value);
|
---|
809 | <FONT CLASS="LN">92</FONT><A NAME="792"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
810 | <FONT CLASS="LN">93</FONT><A NAME="793"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> SAXParseException(<FONT CLASS="StringLiteral">"Unexpected attribute \""</FONT>
|
---|
811 | <FONT CLASS="LN">94</FONT><A NAME="794"></A> + key + <FONT CLASS="StringLiteral">"\""</FONT>, context.getLocator());
|
---|
812 | <FONT CLASS="LN">95</FONT><A NAME="795"></A> }
|
---|
813 | <FONT CLASS="LN">96</FONT><A NAME="796"></A> }
|
---|
814 | <FONT CLASS="LN">97</FONT><A NAME="797"></A>
|
---|
815 | <FONT CLASS="LN">98</FONT><A NAME="798"></A> <FONT CLASS="If">if</FONT> (name == <FONT CLASS="Null">null</FONT>) {
|
---|
816 | <FONT CLASS="LN">99</FONT><A NAME="799"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> SAXParseException(<FONT CLASS="StringLiteral">"target element appears without "</FONT>
|
---|
817 | <FONT CLASS="LN">00</FONT><A NAME="800"></A> + <FONT CLASS="StringLiteral">"a name attribute"</FONT>, context.getLocator());
|
---|
818 | <FONT CLASS="LN">01</FONT><A NAME="801"></A> }
|
---|
819 | <FONT CLASS="LN">02</FONT><A NAME="802"></A>
|
---|
820 | <FONT CLASS="LN">03</FONT><A NAME="803"></A> Hashtable currentTargets = project.getTargets();
|
---|
821 | <FONT CLASS="LN">04</FONT><A NAME="804"></A>
|
---|
822 | <FONT CLASS="LN">05</FONT><A NAME="805"></A> <FONT CLASS="SingleLineComment">// If the name has already been defined ( import for example )
|
---|
823 | <FONT CLASS="LN">06</FONT><A NAME="806"></A></FONT> <FONT CLASS="If">if</FONT> (currentTargets.containsKey(name)) {
|
---|
824 | <FONT CLASS="LN">07</FONT><A NAME="807"></A> <FONT CLASS="If">if</FONT> (!context.isIgnoringProjectTag()) {
|
---|
825 | <FONT CLASS="LN">08</FONT><A NAME="808"></A> <FONT CLASS="SingleLineComment">// not in a import'ed file
|
---|
826 | <FONT CLASS="LN">09</FONT><A NAME="809"></A></FONT> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(
|
---|
827 | <FONT CLASS="LN">10</FONT><A NAME="810"></A> <FONT CLASS="StringLiteral">"Duplicate target '"</FONT> + name + <FONT CLASS="StringLiteral">"'"</FONT>,
|
---|
828 | <FONT CLASS="LN">11</FONT><A NAME="811"></A> <FONT CLASS="New">new</FONT> Location(context.getLocator().getSystemId(),
|
---|
829 | <FONT CLASS="LN">12</FONT><A NAME="812"></A> context.getLocator().getLineNumber(),
|
---|
830 | <FONT CLASS="LN">13</FONT><A NAME="813"></A> context.getLocator().getColumnNumber()));
|
---|
831 | <FONT CLASS="LN">14</FONT><A NAME="814"></A> }
|
---|
832 | <FONT CLASS="LN">15</FONT><A NAME="815"></A> <FONT CLASS="SingleLineComment">// Alter the name.
|
---|
833 | <FONT CLASS="LN">16</FONT><A NAME="816"></A></FONT> <FONT CLASS="If">if</FONT> (context.getCurrentProjectName() != <FONT CLASS="Null">null</FONT>) {
|
---|
834 | <FONT CLASS="LN">17</FONT><A NAME="817"></A> String newName = context.getCurrentProjectName()
|
---|
835 | <FONT CLASS="LN">18</FONT><A NAME="818"></A> + <FONT CLASS="StringLiteral">"."</FONT> + name;
|
---|
836 | <FONT CLASS="LN">19</FONT><A NAME="819"></A> project.log(<FONT CLASS="StringLiteral">"Already defined in main or a previous import, "</FONT>
|
---|
837 | <FONT CLASS="LN">20</FONT><A NAME="820"></A> + <FONT CLASS="StringLiteral">"define "</FONT> + name + <FONT CLASS="StringLiteral">" as "</FONT> + newName,
|
---|
838 | <FONT CLASS="LN">21</FONT><A NAME="821"></A> Project.MSG_VERBOSE);
|
---|
839 | <FONT CLASS="LN">22</FONT><A NAME="822"></A> name = newName;
|
---|
840 | <FONT CLASS="LN">23</FONT><A NAME="823"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
841 | <FONT CLASS="LN">24</FONT><A NAME="824"></A> project.log(<FONT CLASS="StringLiteral">"Already defined in main or a previous import, "</FONT>
|
---|
842 | <FONT CLASS="LN">25</FONT><A NAME="825"></A> + <FONT CLASS="StringLiteral">"ignore "</FONT> + name, Project.MSG_VERBOSE);
|
---|
843 | <FONT CLASS="LN">26</FONT><A NAME="826"></A> name = <FONT CLASS="Null">null</FONT>;
|
---|
844 | <FONT CLASS="LN">27</FONT><A NAME="827"></A> }
|
---|
845 | <FONT CLASS="LN">28</FONT><A NAME="828"></A> }
|
---|
846 | <FONT CLASS="LN">29</FONT><A NAME="829"></A>
|
---|
847 | <FONT CLASS="LN">30</FONT><A NAME="830"></A> <FONT CLASS="If">if</FONT> (name != <FONT CLASS="Null">null</FONT>) {
|
---|
848 | <FONT CLASS="LN">31</FONT><A NAME="831"></A> target.setName(name);
|
---|
849 | <FONT CLASS="LN">32</FONT><A NAME="832"></A> project.addOrReplaceTarget(name, target);
|
---|
850 | <FONT CLASS="LN">33</FONT><A NAME="833"></A> }
|
---|
851 | <FONT CLASS="LN">34</FONT><A NAME="834"></A>
|
---|
852 | <FONT CLASS="LN">35</FONT><A NAME="835"></A> <FONT CLASS="SingleLineComment">// take care of dependencies
|
---|
853 | <FONT CLASS="LN">36</FONT><A NAME="836"></A></FONT> <FONT CLASS="If">if</FONT> (depends.length() > <FONT CLASS="IntegerLiteral">0</FONT>) {
|
---|
854 | <FONT CLASS="LN">37</FONT><A NAME="837"></A> target.setDepends(depends);
|
---|
855 | <FONT CLASS="LN">38</FONT><A NAME="838"></A> }
|
---|
856 | <FONT CLASS="LN">39</FONT><A NAME="839"></A> }
|
---|
857 | <FONT CLASS="LN">40</FONT><A NAME="840"></A>
|
---|
858 | <FONT CLASS="LN">41</FONT><A NAME="841"></A> <FONT CLASS="FormalComment">/**
|
---|
859 | <FONT CLASS="LN">42</FONT><A NAME="842"></A> * Handles the start of an element within a target.
|
---|
860 | <FONT CLASS="LN">43</FONT><A NAME="843"></A> *
|
---|
861 | <FONT CLASS="LN">44</FONT><A NAME="844"></A> * @param uri The namespace URI for this element.
|
---|
862 | <FONT CLASS="LN">45</FONT><A NAME="845"></A> * @param name The name of the element being started.
|
---|
863 | <FONT CLASS="LN">46</FONT><A NAME="846"></A> * Will not be <code>null</code>.
|
---|
864 | <FONT CLASS="LN">47</FONT><A NAME="847"></A> * @param qname The qualified name for this element.
|
---|
865 | <FONT CLASS="LN">48</FONT><A NAME="848"></A> * @param attrs Attributes of the element being started.
|
---|
866 | <FONT CLASS="LN">49</FONT><A NAME="849"></A> * Will not be <code>null</code>.
|
---|
867 | <FONT CLASS="LN">50</FONT><A NAME="850"></A> * @param context The current context.
|
---|
868 | <FONT CLASS="LN">51</FONT><A NAME="851"></A> * @return an element handler.
|
---|
869 | <FONT CLASS="LN">52</FONT><A NAME="852"></A> *
|
---|
870 | <FONT CLASS="LN">53</FONT><A NAME="853"></A> * @exception SAXParseException if an error occurs when initialising
|
---|
871 | <FONT CLASS="LN">54</FONT><A NAME="854"></A> * the appropriate child handler
|
---|
872 | <FONT CLASS="LN">55</FONT><A NAME="855"></A> */</FONT>
|
---|
873 | <FONT CLASS="LN">56</FONT><A NAME="856"></A> <FONT CLASS="Public">public</FONT> AntHandler onStartChild(String uri, String name, String qname,
|
---|
874 | <FONT CLASS="LN">57</FONT><A NAME="857"></A> Attributes attrs,
|
---|
875 | <FONT CLASS="LN">58</FONT><A NAME="858"></A> AntXMLContext context)
|
---|
876 | <FONT CLASS="LN">59</FONT><A NAME="859"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
877 | <FONT CLASS="LN">60</FONT><A NAME="860"></A> <FONT CLASS="Return">return</FONT> ProjectHelper3.elementHandler;
|
---|
878 | <FONT CLASS="LN">61</FONT><A NAME="861"></A> }
|
---|
879 | <FONT CLASS="LN">62</FONT><A NAME="862"></A>
|
---|
880 | <FONT CLASS="LN">63</FONT><A NAME="863"></A> <FONT CLASS="FormalComment">/**
|
---|
881 | <FONT CLASS="LN">64</FONT><A NAME="864"></A> * Handle the end of the project, sets the current target of the
|
---|
882 | <FONT CLASS="LN">65</FONT><A NAME="865"></A> * context to be the implicit target.
|
---|
883 | <FONT CLASS="LN">66</FONT><A NAME="866"></A> *
|
---|
884 | <FONT CLASS="LN">67</FONT><A NAME="867"></A> * @param uri The namespace URI of the element.
|
---|
885 | <FONT CLASS="LN">68</FONT><A NAME="868"></A> * @param tag The name of the element.
|
---|
886 | <FONT CLASS="LN">69</FONT><A NAME="869"></A> * @param context The current context.
|
---|
887 | <FONT CLASS="LN">70</FONT><A NAME="870"></A> */</FONT>
|
---|
888 | <FONT CLASS="LN">71</FONT><A NAME="871"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> onEndElement(String uri, String tag, AntXMLContext context) {
|
---|
889 | <FONT CLASS="LN">72</FONT><A NAME="872"></A> context.setCurrentTarget(context.getImplicitTarget());
|
---|
890 | <FONT CLASS="LN">73</FONT><A NAME="873"></A> }
|
---|
891 | <FONT CLASS="LN">74</FONT><A NAME="874"></A> }
|
---|
892 | <FONT CLASS="LN">75</FONT><A NAME="875"></A>
|
---|
893 | <FONT CLASS="LN">76</FONT><A NAME="876"></A> <FONT CLASS="FormalComment">/**
|
---|
894 | <FONT CLASS="LN">77</FONT><A NAME="877"></A> * Handler for all project elements ( tasks, data types )
|
---|
895 | <FONT CLASS="LN">78</FONT><A NAME="878"></A> */</FONT>
|
---|
896 | <FONT CLASS="LN">79</FONT><A NAME="879"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Class">class</FONT> ElementHandler <FONT CLASS="Extends">extends</FONT> AntHandler {
|
---|
897 | <FONT CLASS="LN">80</FONT><A NAME="880"></A>
|
---|
898 | <FONT CLASS="LN">81</FONT><A NAME="881"></A> <FONT CLASS="FormalComment">/**
|
---|
899 | <FONT CLASS="LN">82</FONT><A NAME="882"></A> * Constructor.
|
---|
900 | <FONT CLASS="LN">83</FONT><A NAME="883"></A> */</FONT>
|
---|
901 | <FONT CLASS="LN">84</FONT><A NAME="884"></A> <FONT CLASS="Public">public</FONT> ElementHandler() {
|
---|
902 | <FONT CLASS="LN">85</FONT><A NAME="885"></A> }
|
---|
903 | <FONT CLASS="LN">86</FONT><A NAME="886"></A>
|
---|
904 | <FONT CLASS="LN">87</FONT><A NAME="887"></A> <FONT CLASS="FormalComment">/**
|
---|
905 | <FONT CLASS="LN">88</FONT><A NAME="888"></A> * Initialisation routine called after handler creation
|
---|
906 | <FONT CLASS="LN">89</FONT><A NAME="889"></A> * with the element name and attributes. This configures
|
---|
907 | <FONT CLASS="LN">90</FONT><A NAME="890"></A> * the element with its attributes and sets it up with
|
---|
908 | <FONT CLASS="LN">91</FONT><A NAME="891"></A> * its parent container (if any). Nested elements are then
|
---|
909 | <FONT CLASS="LN">92</FONT><A NAME="892"></A> * added later as the parser encounters them.
|
---|
910 | <FONT CLASS="LN">93</FONT><A NAME="893"></A> *
|
---|
911 | <FONT CLASS="LN">94</FONT><A NAME="894"></A> * @param uri The namespace URI for this element.
|
---|
912 | <FONT CLASS="LN">95</FONT><A NAME="895"></A> * @param tag Name of the element which caused this handler
|
---|
913 | <FONT CLASS="LN">96</FONT><A NAME="896"></A> * to be created. Must not be <code>null</code>.
|
---|
914 | <FONT CLASS="LN">97</FONT><A NAME="897"></A> * @param qname The qualified name for this element.
|
---|
915 | <FONT CLASS="LN">98</FONT><A NAME="898"></A> * @param attrs Attributes of the element which caused this
|
---|
916 | <FONT CLASS="LN">99</FONT><A NAME="899"></A> * handler to be created. Must not be <code>null</code>.
|
---|
917 | <FONT CLASS="LN">00</FONT><A NAME="900"></A> * @param context The current context.
|
---|
918 | <FONT CLASS="LN">01</FONT><A NAME="901"></A> *
|
---|
919 | <FONT CLASS="LN">02</FONT><A NAME="902"></A> * @exception SAXParseException in case of error (not thrown in
|
---|
920 | <FONT CLASS="LN">03</FONT><A NAME="903"></A> * this implementation)
|
---|
921 | <FONT CLASS="LN">04</FONT><A NAME="904"></A> */</FONT>
|
---|
922 | <FONT CLASS="LN">05</FONT><A NAME="905"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> onStartElement(String uri, String tag, String qname,
|
---|
923 | <FONT CLASS="LN">06</FONT><A NAME="906"></A> Attributes attrs,
|
---|
924 | <FONT CLASS="LN">07</FONT><A NAME="907"></A> AntXMLContext context)
|
---|
925 | <FONT CLASS="LN">08</FONT><A NAME="908"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
926 | <FONT CLASS="LN">09</FONT><A NAME="909"></A> RuntimeConfigurable parentWrapper = context.currentWrapper();
|
---|
927 | <FONT CLASS="LN">10</FONT><A NAME="910"></A> Object parent = <FONT CLASS="Null">null</FONT>;
|
---|
928 | <FONT CLASS="LN">11</FONT><A NAME="911"></A>
|
---|
929 | <FONT CLASS="LN">12</FONT><A NAME="912"></A> <FONT CLASS="If">if</FONT> (parentWrapper != <FONT CLASS="Null">null</FONT>) {
|
---|
930 | <FONT CLASS="LN">13</FONT><A NAME="913"></A> parent = parentWrapper.getProxy();
|
---|
931 | <FONT CLASS="LN">14</FONT><A NAME="914"></A> }
|
---|
932 | <FONT CLASS="LN">15</FONT><A NAME="915"></A>
|
---|
933 | <FONT CLASS="LN">16</FONT><A NAME="916"></A> <FONT CLASS="MultiLineComment">/* UnknownElement is used for tasks and data types - with
|
---|
934 | <FONT CLASS="LN">17</FONT><A NAME="917"></A> delayed eval */</FONT>
|
---|
935 | <FONT CLASS="LN">18</FONT><A NAME="918"></A> UnknownElement task = <FONT CLASS="New">new</FONT> UnknownElement(tag);
|
---|
936 | <FONT CLASS="LN">19</FONT><A NAME="919"></A> task.setProject(context.getProject());
|
---|
937 | <FONT CLASS="LN">20</FONT><A NAME="920"></A> task.setNamespace(uri);
|
---|
938 | <FONT CLASS="LN">21</FONT><A NAME="921"></A> task.setQName(qname);
|
---|
939 | <FONT CLASS="LN">22</FONT><A NAME="922"></A> task.setTaskType(
|
---|
940 | <FONT CLASS="LN">23</FONT><A NAME="923"></A> ProjectHelper.genComponentName(task.getNamespace(), tag));
|
---|
941 | <FONT CLASS="LN">24</FONT><A NAME="924"></A> task.setTaskName(qname);
|
---|
942 | <FONT CLASS="LN">25</FONT><A NAME="925"></A>
|
---|
943 | <FONT CLASS="LN">26</FONT><A NAME="926"></A> Location location = <FONT CLASS="New">new</FONT> Location(context.getLocator().getSystemId(),
|
---|
944 | <FONT CLASS="LN">27</FONT><A NAME="927"></A> context.getLocator().getLineNumber(),
|
---|
945 | <FONT CLASS="LN">28</FONT><A NAME="928"></A> context.getLocator().getColumnNumber());
|
---|
946 | <FONT CLASS="LN">29</FONT><A NAME="929"></A> task.setLocation(location);
|
---|
947 | <FONT CLASS="LN">30</FONT><A NAME="930"></A> task.setOwningTarget(context.getCurrentTarget());
|
---|
948 | <FONT CLASS="LN">31</FONT><A NAME="931"></A>
|
---|
949 | <FONT CLASS="LN">32</FONT><A NAME="932"></A> context.configureId(task, attrs);
|
---|
950 | <FONT CLASS="LN">33</FONT><A NAME="933"></A>
|
---|
951 | <FONT CLASS="LN">34</FONT><A NAME="934"></A> <FONT CLASS="If">if</FONT> (parent != <FONT CLASS="Null">null</FONT>) {
|
---|
952 | <FONT CLASS="LN">35</FONT><A NAME="935"></A> <FONT CLASS="SingleLineComment">// Nested element
|
---|
953 | <FONT CLASS="LN">36</FONT><A NAME="936"></A></FONT> ((UnknownElement) parent).addChild(task);
|
---|
954 | <FONT CLASS="LN">37</FONT><A NAME="937"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
955 | <FONT CLASS="LN">38</FONT><A NAME="938"></A> <FONT CLASS="SingleLineComment">// Task included in a target ( including the default one ).
|
---|
956 | <FONT CLASS="LN">39</FONT><A NAME="939"></A></FONT> context.getCurrentTarget().addTask(task);
|
---|
957 | <FONT CLASS="LN">40</FONT><A NAME="940"></A> }
|
---|
958 | <FONT CLASS="LN">41</FONT><A NAME="941"></A>
|
---|
959 | <FONT CLASS="LN">42</FONT><A NAME="942"></A> <FONT CLASS="SingleLineComment">// container.addTask(task);
|
---|
960 | <FONT CLASS="LN">43</FONT><A NAME="943"></A></FONT> <FONT CLASS="SingleLineComment">// This is a nop in UE: task.init();
|
---|
961 | <FONT CLASS="LN">44</FONT><A NAME="944"></A></FONT>
|
---|
962 | <FONT CLASS="LN">45</FONT><A NAME="945"></A> RuntimeConfigurable wrapper
|
---|
963 | <FONT CLASS="LN">46</FONT><A NAME="946"></A> = <FONT CLASS="New">new</FONT> RuntimeConfigurable(task, task.getTaskName());
|
---|
964 | <FONT CLASS="LN">47</FONT><A NAME="947"></A>
|
---|
965 | <FONT CLASS="LN">48</FONT><A NAME="948"></A> <FONT CLASS="For">for</FONT> (<FONT CLASS="Int">int</FONT> i = <FONT CLASS="IntegerLiteral">0</FONT>; i < attrs.getLength(); i++) {
|
---|
966 | <FONT CLASS="LN">49</FONT><A NAME="949"></A> String name = attrs.getLocalName(i);
|
---|
967 | <FONT CLASS="LN">50</FONT><A NAME="950"></A> String attrUri = attrs.getURI(i);
|
---|
968 | <FONT CLASS="LN">51</FONT><A NAME="951"></A> <FONT CLASS="If">if</FONT> (attrUri != <FONT CLASS="Null">null</FONT>
|
---|
969 | <FONT CLASS="LN">52</FONT><A NAME="952"></A> && !attrUri.equals(<FONT CLASS="StringLiteral">""</FONT>)
|
---|
970 | <FONT CLASS="LN">53</FONT><A NAME="953"></A> && !attrUri.equals(uri)) {
|
---|
971 | <FONT CLASS="LN">54</FONT><A NAME="954"></A> name = attrUri + <FONT CLASS="StringLiteral">":"</FONT> + attrs.getQName(i);
|
---|
972 | <FONT CLASS="LN">55</FONT><A NAME="955"></A> }
|
---|
973 | <FONT CLASS="LN">56</FONT><A NAME="956"></A> String value = attrs.getValue(i);
|
---|
974 | <FONT CLASS="LN">57</FONT><A NAME="957"></A> <FONT CLASS="SingleLineComment">// PR: Hack for ant-type value
|
---|
975 | <FONT CLASS="LN">58</FONT><A NAME="958"></A></FONT> <FONT CLASS="SingleLineComment">// an ant-type is a component name which can
|
---|
976 | <FONT CLASS="LN">59</FONT><A NAME="959"></A></FONT> <FONT CLASS="SingleLineComment">// be namespaced, need to extract the name
|
---|
977 | <FONT CLASS="LN">60</FONT><A NAME="960"></A></FONT> <FONT CLASS="SingleLineComment">// and convert from qualified name to uri/name
|
---|
978 | <FONT CLASS="LN">61</FONT><A NAME="961"></A></FONT> <FONT CLASS="If">if</FONT> (ANT_TYPE.equals(name)
|
---|
979 | <FONT CLASS="LN">62</FONT><A NAME="962"></A> || (ANT_CORE_URI.equals(attrUri)
|
---|
980 | <FONT CLASS="LN">63</FONT><A NAME="963"></A> && ANT_TYPE.equals(attrs.getLocalName(i)))) {
|
---|
981 | <FONT CLASS="LN">64</FONT><A NAME="964"></A> name = ANT_TYPE;
|
---|
982 | <FONT CLASS="LN">65</FONT><A NAME="965"></A> <FONT CLASS="Int">int</FONT> index = value.indexOf(<FONT CLASS="StringLiteral">":"</FONT>);
|
---|
983 | <FONT CLASS="LN">66</FONT><A NAME="966"></A> <FONT CLASS="If">if</FONT> (index != -<FONT CLASS="IntegerLiteral">1</FONT>) {
|
---|
984 | <FONT CLASS="LN">67</FONT><A NAME="967"></A> String prefix = value.substring(<FONT CLASS="IntegerLiteral">0</FONT>, index);
|
---|
985 | <FONT CLASS="LN">68</FONT><A NAME="968"></A> String mappedUri = context.getPrefixMapping(prefix);
|
---|
986 | <FONT CLASS="LN">69</FONT><A NAME="969"></A> <FONT CLASS="If">if</FONT> (mappedUri == <FONT CLASS="Null">null</FONT>) {
|
---|
987 | <FONT CLASS="LN">70</FONT><A NAME="970"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(
|
---|
988 | <FONT CLASS="LN">71</FONT><A NAME="971"></A> <FONT CLASS="StringLiteral">"Unable to find XML NS prefix "</FONT> + prefix);
|
---|
989 | <FONT CLASS="LN">72</FONT><A NAME="972"></A> }
|
---|
990 | <FONT CLASS="LN">73</FONT><A NAME="973"></A> value = ProjectHelper.genComponentName(
|
---|
991 | <FONT CLASS="LN">74</FONT><A NAME="974"></A> mappedUri, value.substring(index + <FONT CLASS="IntegerLiteral">1</FONT>));
|
---|
992 | <FONT CLASS="LN">75</FONT><A NAME="975"></A> }
|
---|
993 | <FONT CLASS="LN">76</FONT><A NAME="976"></A> }
|
---|
994 | <FONT CLASS="LN">77</FONT><A NAME="977"></A> wrapper.setAttribute(name, value);
|
---|
995 | <FONT CLASS="LN">78</FONT><A NAME="978"></A> }
|
---|
996 | <FONT CLASS="LN">79</FONT><A NAME="979"></A>
|
---|
997 | <FONT CLASS="LN">80</FONT><A NAME="980"></A> <FONT CLASS="If">if</FONT> (parentWrapper != <FONT CLASS="Null">null</FONT>) {
|
---|
998 | <FONT CLASS="LN">81</FONT><A NAME="981"></A> parentWrapper.addChild(wrapper);
|
---|
999 | <FONT CLASS="LN">82</FONT><A NAME="982"></A> }
|
---|
1000 | <FONT CLASS="LN">83</FONT><A NAME="983"></A>
|
---|
1001 | <FONT CLASS="LN">84</FONT><A NAME="984"></A> context.pushWrapper(wrapper);
|
---|
1002 | <FONT CLASS="LN">85</FONT><A NAME="985"></A> }
|
---|
1003 | <FONT CLASS="LN">86</FONT><A NAME="986"></A>
|
---|
1004 | <FONT CLASS="LN">87</FONT><A NAME="987"></A> <FONT CLASS="FormalComment">/**
|
---|
1005 | <FONT CLASS="LN">88</FONT><A NAME="988"></A> * Adds text to the task, using the wrapper
|
---|
1006 | <FONT CLASS="LN">89</FONT><A NAME="989"></A> *
|
---|
1007 | <FONT CLASS="LN">90</FONT><A NAME="990"></A> * @param buf A character array of the text within the element.
|
---|
1008 | <FONT CLASS="LN">91</FONT><A NAME="991"></A> * Will not be <code>null</code>.
|
---|
1009 | <FONT CLASS="LN">92</FONT><A NAME="992"></A> * @param start The start element in the array.
|
---|
1010 | <FONT CLASS="LN">93</FONT><A NAME="993"></A> * @param count The number of characters to read from the array.
|
---|
1011 | <FONT CLASS="LN">94</FONT><A NAME="994"></A> * @param context The current context.
|
---|
1012 | <FONT CLASS="LN">95</FONT><A NAME="995"></A> *
|
---|
1013 | <FONT CLASS="LN">96</FONT><A NAME="996"></A> * @exception SAXParseException if the element doesn't support text
|
---|
1014 | <FONT CLASS="LN">97</FONT><A NAME="997"></A> *
|
---|
1015 | <FONT CLASS="LN">98</FONT><A NAME="998"></A> * @see ProjectHelper#addText(Project,java.lang.Object,char[],int,int)
|
---|
1016 | <FONT CLASS="LN">99</FONT><A NAME="999"></A> */</FONT>
|
---|
1017 | <FONT CLASS="LN">00</FONT><A NAME="1000"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> characters(<FONT CLASS="Char">char</FONT>[] buf, <FONT CLASS="Int">int</FONT> start, <FONT CLASS="Int">int</FONT> count,
|
---|
1018 | <FONT CLASS="LN">01</FONT><A NAME="1001"></A> AntXMLContext context)
|
---|
1019 | <FONT CLASS="LN">02</FONT><A NAME="1002"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
1020 | <FONT CLASS="LN">03</FONT><A NAME="1003"></A> RuntimeConfigurable wrapper = context.currentWrapper();
|
---|
1021 | <FONT CLASS="LN">04</FONT><A NAME="1004"></A> wrapper.addText(buf, start, count);
|
---|
1022 | <FONT CLASS="LN">05</FONT><A NAME="1005"></A> }
|
---|
1023 | <FONT CLASS="LN">06</FONT><A NAME="1006"></A>
|
---|
1024 | <FONT CLASS="LN">07</FONT><A NAME="1007"></A> <FONT CLASS="FormalComment">/**
|
---|
1025 | <FONT CLASS="LN">08</FONT><A NAME="1008"></A> * Handles the start of an element within a target. Task containers
|
---|
1026 | <FONT CLASS="LN">09</FONT><A NAME="1009"></A> * will always use another task handler, and all other tasks
|
---|
1027 | <FONT CLASS="LN">10</FONT><A NAME="1010"></A> * will always use a nested element handler.
|
---|
1028 | <FONT CLASS="LN">11</FONT><A NAME="1011"></A> *
|
---|
1029 | <FONT CLASS="LN">12</FONT><A NAME="1012"></A> * @param uri The namespace URI for this element.
|
---|
1030 | <FONT CLASS="LN">13</FONT><A NAME="1013"></A> * @param tag The name of the element being started.
|
---|
1031 | <FONT CLASS="LN">14</FONT><A NAME="1014"></A> * Will not be <code>null</code>.
|
---|
1032 | <FONT CLASS="LN">15</FONT><A NAME="1015"></A> * @param qname The qualified name for this element.
|
---|
1033 | <FONT CLASS="LN">16</FONT><A NAME="1016"></A> * @param attrs Attributes of the element being started.
|
---|
1034 | <FONT CLASS="LN">17</FONT><A NAME="1017"></A> * Will not be <code>null</code>.
|
---|
1035 | <FONT CLASS="LN">18</FONT><A NAME="1018"></A> * @param context The current context.
|
---|
1036 | <FONT CLASS="LN">19</FONT><A NAME="1019"></A> * @return The handler for elements.
|
---|
1037 | <FONT CLASS="LN">20</FONT><A NAME="1020"></A> *
|
---|
1038 | <FONT CLASS="LN">21</FONT><A NAME="1021"></A> * @exception SAXParseException if an error occurs when initialising
|
---|
1039 | <FONT CLASS="LN">22</FONT><A NAME="1022"></A> * the appropriate child handler
|
---|
1040 | <FONT CLASS="LN">23</FONT><A NAME="1023"></A> */</FONT>
|
---|
1041 | <FONT CLASS="LN">24</FONT><A NAME="1024"></A> <FONT CLASS="Public">public</FONT> AntHandler onStartChild(String uri, String tag, String qname,
|
---|
1042 | <FONT CLASS="LN">25</FONT><A NAME="1025"></A> Attributes attrs,
|
---|
1043 | <FONT CLASS="LN">26</FONT><A NAME="1026"></A> AntXMLContext context)
|
---|
1044 | <FONT CLASS="LN">27</FONT><A NAME="1027"></A> <FONT CLASS="Throws">throws</FONT> SAXParseException {
|
---|
1045 | <FONT CLASS="LN">28</FONT><A NAME="1028"></A> <FONT CLASS="Return">return</FONT> ProjectHelper3.elementHandler;
|
---|
1046 | <FONT CLASS="LN">29</FONT><A NAME="1029"></A> }
|
---|
1047 | <FONT CLASS="LN">30</FONT><A NAME="1030"></A>
|
---|
1048 | <FONT CLASS="LN">31</FONT><A NAME="1031"></A> <FONT CLASS="FormalComment">/**
|
---|
1049 | <FONT CLASS="LN">32</FONT><A NAME="1032"></A> * Handles the end of the element. This pops the wrapper from
|
---|
1050 | <FONT CLASS="LN">33</FONT><A NAME="1033"></A> * the context.
|
---|
1051 | <FONT CLASS="LN">34</FONT><A NAME="1034"></A> *
|
---|
1052 | <FONT CLASS="LN">35</FONT><A NAME="1035"></A> * @param uri The namespace URI for the element.
|
---|
1053 | <FONT CLASS="LN">36</FONT><A NAME="1036"></A> * @param tag The name of the element.
|
---|
1054 | <FONT CLASS="LN">37</FONT><A NAME="1037"></A> * @param context The current context.
|
---|
1055 | <FONT CLASS="LN">38</FONT><A NAME="1038"></A> */</FONT>
|
---|
1056 | <FONT CLASS="LN">39</FONT><A NAME="1039"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> onEndElement(String uri, String tag, AntXMLContext context) {
|
---|
1057 | <FONT CLASS="LN">40</FONT><A NAME="1040"></A> context.popWrapper();
|
---|
1058 | <FONT CLASS="LN">41</FONT><A NAME="1041"></A> }
|
---|
1059 | <FONT CLASS="LN">42</FONT><A NAME="1042"></A> }
|
---|
1060 | <FONT CLASS="LN">43</FONT><A NAME="1043"></A>}
|
---|
1061 | <FONT CLASS="LN">44</FONT><A NAME="1044"></A></pre>
|
---|
1062 | </BODY>
|
---|
1063 | </HTML> |
---|