1 package org.apache.maven.shared.filtering;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.io.Reader;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import org.apache.maven.execution.MavenSession;
28 import org.apache.maven.model.Resource;
29 import org.apache.maven.project.MavenProject;
30 import org.apache.maven.shared.utils.io.FileUtils;
31 import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;
32 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
33 import org.codehaus.plexus.interpolation.ValueSource;
34
35
36
37
38
39
40 public class MavenResourcesExecution
41 extends AbstractMavenFilteringRequest
42 {
43
44 private List<Resource> resources;
45
46 private File outputDirectory;
47
48 private List<String> nonFilteredFileExtensions;
49
50 private List<FileUtils.FilterWrapper> filterWrappers;
51
52 private File resourcesBaseDirectory;
53
54 private boolean useDefaultFilterWrappers = false;
55
56 private boolean filterFilenames = false;
57
58 private String encoding;
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 private boolean addDefaultExcludes = true;
88
89
90
91
92
93
94 private boolean overwrite = false;
95
96
97
98
99
100
101 private boolean includeEmptyDirs = false;
102
103
104
105
106
107
108 private boolean supportMultiLineFiltering;
109
110
111
112
113 public MavenResourcesExecution()
114 {
115
116 }
117
118
119
120
121
122
123
124
125
126
127
128
129
130 public MavenResourcesExecution( List<Resource> resources, File outputDirectory, MavenProject mavenProject,
131 String encoding, List<String> fileFilters, List<String> nonFilteredFileExtensions,
132 MavenSession mavenSession )
133 {
134 super( mavenProject, fileFilters, mavenSession );
135 this.encoding = encoding;
136 this.resources = resources;
137 this.outputDirectory = outputDirectory;
138 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
139 this.useDefaultFilterWrappers = true;
140 this.addDefaultExcludes = true;
141 this.resourcesBaseDirectory = mavenProject.getBasedir();
142 }
143
144
145
146
147
148
149
150
151
152 public MavenResourcesExecution( List<Resource> resources, File outputDirectory, String encoding,
153 List<FileUtils.FilterWrapper> filterWrappers, File resourcesBaseDirectory,
154 List<String> nonFilteredFileExtensions )
155 {
156 this();
157 this.resources = resources;
158 this.outputDirectory = outputDirectory;
159 this.filterWrappers = filterWrappers;
160 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
161 this.resourcesBaseDirectory = resourcesBaseDirectory;
162 this.useDefaultFilterWrappers = false;
163 setEncoding( encoding );
164 }
165
166
167
168
169
170
171 public String getEncoding()
172 {
173 return encoding;
174 }
175
176
177
178
179
180
181 public void setEncoding( String encoding )
182 {
183 this.encoding = encoding;
184 }
185
186
187
188
189 public List<Resource> getResources()
190 {
191 return resources;
192 }
193
194
195
196
197 public void setResources( List<Resource> resources )
198 {
199 this.resources = resources;
200 }
201
202
203
204
205 public File getOutputDirectory()
206 {
207 return outputDirectory;
208 }
209
210
211
212
213 public void setOutputDirectory( File outputDirectory )
214 {
215 this.outputDirectory = outputDirectory;
216 }
217
218
219
220
221 public List<String> getNonFilteredFileExtensions()
222 {
223 return nonFilteredFileExtensions;
224 }
225
226
227
228
229 public void setNonFilteredFileExtensions( List<String> nonFilteredFileExtensions )
230 {
231 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
232 }
233
234
235
236
237 public List<FileUtils.FilterWrapper> getFilterWrappers()
238 {
239 return filterWrappers;
240 }
241
242
243
244
245 public void setFilterWrappers( List<FileUtils.FilterWrapper> filterWrappers )
246 {
247 this.filterWrappers = filterWrappers;
248 }
249
250
251
252
253 public void addFilterWrapper( FilterWrapper filterWrapper )
254 {
255 if ( this.filterWrappers == null )
256 {
257 this.filterWrappers = new ArrayList<FilterWrapper>();
258 }
259 this.filterWrappers.add( filterWrapper );
260 }
261
262
263
264
265
266
267
268
269
270 public void addFilerWrapperWithEscaping( final ValueSource valueSource, final String startExp, final String endExp,
271 final String escapeString, final boolean multiLineFiltering )
272 {
273 addFilterWrapper( new FileUtils.FilterWrapper()
274 {
275 public Reader getReader( Reader reader )
276 {
277 StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator( startExp, endExp );
278 propertiesInterpolator.addValueSource( valueSource );
279 propertiesInterpolator.setEscapeString( escapeString );
280 InterpolatorFilterReaderLineEnding interpolatorFilterReader =
281 new InterpolatorFilterReaderLineEnding( reader, propertiesInterpolator, startExp, endExp,
282 multiLineFiltering );
283 interpolatorFilterReader.setInterpolateWithPrefixPattern( false );
284 return interpolatorFilterReader;
285 }
286 } );
287 }
288
289
290
291
292 public File getResourcesBaseDirectory()
293 {
294 return resourcesBaseDirectory;
295 }
296
297
298
299
300 public void setResourcesBaseDirectory( File resourcesBaseDirectory )
301 {
302 this.resourcesBaseDirectory = resourcesBaseDirectory;
303 }
304
305
306
307
308 public boolean isUseDefaultFilterWrappers()
309 {
310 return useDefaultFilterWrappers;
311 }
312
313
314
315
316 public void setUseDefaultFilterWrappers( boolean useDefaultFilterWrappers )
317 {
318 this.useDefaultFilterWrappers = useDefaultFilterWrappers;
319 }
320
321
322
323
324 public boolean isAddDefaultExcludes()
325 {
326 return addDefaultExcludes;
327 }
328
329
330
331
332 public void setAddDefaultExcludes( boolean addDefaultExcludes )
333 {
334 this.addDefaultExcludes = addDefaultExcludes;
335 }
336
337
338
339
340
341
342
343 public boolean isOverwrite()
344 {
345 return overwrite;
346 }
347
348
349
350
351
352
353
354 public void setOverwrite( boolean overwrite )
355 {
356 this.overwrite = overwrite;
357 }
358
359
360
361
362
363
364
365 public boolean isIncludeEmptyDirs()
366 {
367 return includeEmptyDirs;
368 }
369
370
371
372
373
374
375
376 public void setIncludeEmptyDirs( boolean includeEmptyDirs )
377 {
378 this.includeEmptyDirs = includeEmptyDirs;
379 }
380
381
382
383
384
385 public boolean isFilterFilenames()
386 {
387 return filterFilenames;
388 }
389
390
391
392
393
394 public void setFilterFilenames( boolean filterFilenames )
395 {
396 this.filterFilenames = filterFilenames;
397 }
398
399
400
401
402 public MavenResourcesExecution copyOf()
403 {
404 MavenResourcesExecution mre = new MavenResourcesExecution();
405 mre.setAdditionalProperties( mre.getAdditionalProperties() );
406 mre.setEncoding( mre.getEncoding() );
407 mre.setEscapedBackslashesInFilePath( mre.isEscapedBackslashesInFilePath() );
408 mre.setEscapeString( mre.getEscapeString() );
409 mre.setFileFilters( copyList( mre.getFileFilters() ) );
410 mre.setFilterWrappers( copyList( mre.getFilterWrappers() ) );
411 mre.setIncludeEmptyDirs( mre.isIncludeEmptyDirs() );
412 mre.setInjectProjectBuildFilters( mre.isInjectProjectBuildFilters() );
413 mre.setMavenProject( mre.getMavenProject() );
414 mre.setMavenSession( mre.getMavenSession() );
415 mre.setNonFilteredFileExtensions( copyList( mre.getNonFilteredFileExtensions() ) );
416 mre.setOutputDirectory( mre.getOutputDirectory() );
417 mre.setOverwrite( mre.isOverwrite() );
418 mre.setProjectStartExpressions( copyList( mre.getProjectStartExpressions() ) );
419 mre.setResources( copyList( mre.getResources() ) );
420 mre.setResourcesBaseDirectory( mre.getResourcesBaseDirectory() );
421 mre.setUseDefaultFilterWrappers( mre.isUseDefaultFilterWrappers() );
422 mre.setAddDefaultExcludes( mre.isAddDefaultExcludes() );
423 mre.setSupportMultiLineFiltering( mre.isSupportMultiLineFiltering() );
424 return mre;
425 }
426
427 private <T> List<T> copyList( List<T> lst )
428 {
429 if ( lst == null )
430 {
431 return null;
432 }
433 else if ( lst.isEmpty() )
434 {
435 return new ArrayList<T>();
436 }
437 else
438 {
439 return new ArrayList<T>( lst );
440 }
441 }
442
443
444 public boolean isSupportMultiLineFiltering()
445 {
446 return supportMultiLineFiltering;
447 }
448
449
450 public void setSupportMultiLineFiltering( boolean supportMultiLineFiltering )
451 {
452 this.supportMultiLineFiltering = supportMultiLineFiltering;
453 }
454 }