1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.mortbay.jetty.ant.types;
16
17 import java.io.File;
18 import java.util.ArrayList;
19 import java.util.Arrays;
20 import java.util.Enumeration;
21 import java.util.Iterator;
22 import java.util.List;
23
24 import org.apache.tools.ant.BuildException;
25 import org.apache.tools.ant.DirectoryScanner;
26 import org.apache.tools.ant.Project;
27 import org.apache.tools.ant.types.FileSet;
28
29
30
31
32
33
34 public class WebApp
35 {
36
37
38 private List libraries = new ArrayList();
39
40
41 private List classes = new ArrayList();
42
43
44 private Project project;
45
46
47 private String contextPath;
48
49
50 private String name;
51
52
53 private File warFile;
54
55
56 private File webXmlFile;
57
58
59 private File jettyEnvXml;
60
61
62 private FileSet scanTargets;
63
64
65 private ContextHandlers contextHandlers;
66
67 private File webDefaultXmlFile;
68
69
70
71
72
73 private int scanIntervalSeconds = 0;
74
75 public WebApp(Project project)
76 {
77 this.project = project;
78 }
79
80 public File getWebDefaultXmlFile()
81 {
82 return this.webDefaultXmlFile;
83 }
84
85 public void setWebDefaultXmlFile(File webDefaultXmlfile)
86 {
87 this.webDefaultXmlFile = webDefaultXmlfile;
88 }
89
90 public void addLib(FileSet lib)
91 {
92 libraries.add(lib);
93 }
94
95 public List getLibraries()
96 {
97 return libraries;
98 }
99
100 public void addClasses(FileSet classes)
101 {
102 this.classes.add(classes);
103 }
104
105 public List getClasses()
106 {
107 return classes;
108 }
109
110 public File getWarFile()
111 {
112 return warFile;
113 }
114
115 public void setWarFile(File warFile)
116 {
117 this.warFile = warFile;
118 }
119
120 public String getContextPath()
121 {
122 return contextPath;
123 }
124
125 public void setContextPath(String contextPath)
126 {
127 this.contextPath = contextPath;
128 }
129
130 public String getName()
131 {
132 return name;
133 }
134
135 public void setName(String name)
136 {
137 this.name = name;
138 }
139
140
141
142
143 public List getClassPathFiles()
144 {
145 List classPathFiles = new ArrayList();
146 Iterator classesIterator = classes.iterator();
147 while (classesIterator.hasNext())
148 {
149 FileSet clazz = (FileSet) classesIterator.next();
150 classPathFiles.add(clazz.getDirectoryScanner(project).getBasedir());
151 }
152
153 Iterator iterator = libraries.iterator();
154 while (iterator.hasNext())
155 {
156 FileSet library = (FileSet) iterator.next();
157 String[] includedFiles = library.getDirectoryScanner(project).getIncludedFiles();
158 File baseDir = library.getDirectoryScanner(project).getBasedir();
159
160 for (int i = 0; i < includedFiles.length; i++)
161 {
162 classPathFiles.add(new File(baseDir, includedFiles[i]));
163 }
164 }
165
166
167 return classPathFiles;
168 }
169
170
171
172
173
174
175 public FileMatchingConfiguration getLibrariesConfiguration()
176 {
177 FileMatchingConfiguration config = new FileMatchingConfiguration();
178
179 Iterator classesIterator = classes.iterator();
180 while (classesIterator.hasNext())
181 {
182 FileSet clazz = (FileSet) classesIterator.next();
183 config.addDirectoryScanner(clazz.getDirectoryScanner(project));
184 }
185
186 Iterator librariesIterator = libraries.iterator();
187 while (librariesIterator.hasNext())
188 {
189 FileSet library = (FileSet) librariesIterator.next();
190 config.addDirectoryScanner(library.getDirectoryScanner(project));
191 }
192
193 return config;
194 }
195
196 public FileMatchingConfiguration getScanTargetsConfiguration()
197 {
198 FileMatchingConfiguration configuration = new FileMatchingConfiguration();
199
200 if (scanTargets != null)
201 {
202 configuration.addDirectoryScanner(scanTargets.getDirectoryScanner(project));
203 }
204
205 return configuration;
206 }
207
208
209
210
211
212 public File getWebXmlFile()
213 {
214 if (webXmlFile == null)
215 {
216 File webInf = new File(warFile, "WEB-INF");
217 return new File(webInf, "web.xml");
218 }
219
220 return webXmlFile;
221 }
222
223 public void setWebXmlFile(File webXmlFile)
224 {
225 this.webXmlFile = webXmlFile;
226 }
227
228 public void addScanTargets(FileSet scanTargets)
229 {
230 if (this.scanTargets != null)
231 {
232 throw new BuildException("Only one <scanTargets> tag is allowed!");
233 }
234
235 this.scanTargets = scanTargets;
236 }
237
238 public void addContextHandlers(ContextHandlers contextHandlers)
239 {
240 if (this.contextHandlers != null)
241 {
242 throw new BuildException("Only one <contextHandlers> tag is allowed!");
243 }
244
245 this.contextHandlers = contextHandlers;
246 }
247
248 public int getScanIntervalSeconds()
249 {
250 return scanIntervalSeconds;
251 }
252
253 public void setScanIntervalSeconds(int scanIntervalSeconds)
254 {
255 this.scanIntervalSeconds = scanIntervalSeconds;
256 }
257
258 public File getJettyEnvXml()
259 {
260 return jettyEnvXml;
261 }
262
263 public void setJettyEnvXml(File jettyEnvXml)
264 {
265 this.jettyEnvXml = jettyEnvXml;
266 }
267
268 public List getContextHandlers()
269 {
270 return (contextHandlers != null ? contextHandlers.getContextHandlers() : new ArrayList());
271 }
272 }