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 private boolean overwrite = false;
66
67
68
69
70
71
72 private boolean includeEmptyDirs = false;
73
74
75
76
77
78
79 private boolean supportMultiLineFiltering;
80
81
82
83
84 public MavenResourcesExecution()
85 {
86
87 }
88
89
90
91
92
93
94
95
96
97
98
99
100 public MavenResourcesExecution( List<Resource> resources, File outputDirectory, MavenProject mavenProject,
101 String encoding, List<String> fileFilters, List<String> nonFilteredFileExtensions,
102 MavenSession mavenSession )
103 {
104 super( mavenProject, fileFilters, mavenSession );
105 this.encoding = encoding;
106 this.resources = resources;
107 this.outputDirectory = outputDirectory;
108 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
109 this.useDefaultFilterWrappers = true;
110 this.resourcesBaseDirectory = mavenProject.getBasedir();
111 }
112
113
114
115
116
117
118
119
120
121 public MavenResourcesExecution( List<Resource> resources, File outputDirectory, String encoding,
122 List<FileUtils.FilterWrapper> filterWrappers, File resourcesBaseDirectory,
123 List<String> nonFilteredFileExtensions )
124 {
125 this();
126 this.resources = resources;
127 this.outputDirectory = outputDirectory;
128 this.filterWrappers = filterWrappers;
129 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
130 this.resourcesBaseDirectory = resourcesBaseDirectory;
131 this.useDefaultFilterWrappers = false;
132 setEncoding( encoding );
133 }
134
135
136
137
138
139
140 public String getEncoding()
141 {
142 return encoding;
143 }
144
145
146
147
148
149
150 public void setEncoding( String encoding )
151 {
152 this.encoding = encoding;
153 }
154
155
156
157
158 public List<Resource> getResources()
159 {
160 return resources;
161 }
162
163
164
165
166 public void setResources( List<Resource> resources )
167 {
168 this.resources = resources;
169 }
170
171
172
173
174 public File getOutputDirectory()
175 {
176 return outputDirectory;
177 }
178
179
180
181
182 public void setOutputDirectory( File outputDirectory )
183 {
184 this.outputDirectory = outputDirectory;
185 }
186
187
188
189
190 public List<String> getNonFilteredFileExtensions()
191 {
192 return nonFilteredFileExtensions;
193 }
194
195
196
197
198 public void setNonFilteredFileExtensions( List<String> nonFilteredFileExtensions )
199 {
200 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
201 }
202
203
204
205
206 public List<FileUtils.FilterWrapper> getFilterWrappers()
207 {
208 return filterWrappers;
209 }
210
211
212
213
214 public void setFilterWrappers( List<FileUtils.FilterWrapper> filterWrappers )
215 {
216 this.filterWrappers = filterWrappers;
217 }
218
219
220
221
222 public void addFilterWrapper( FilterWrapper filterWrapper )
223 {
224 if ( this.filterWrappers == null )
225 {
226 this.filterWrappers = new ArrayList<FilterWrapper>();
227 }
228 this.filterWrappers.add( filterWrapper );
229 }
230
231
232
233
234
235
236
237
238
239 public void addFilerWrapperWithEscaping( final ValueSource valueSource, final String startExp, final String endExp,
240 final String escapeString, final boolean multiLineFiltering )
241 {
242 addFilterWrapper( new FileUtils.FilterWrapper()
243 {
244 public Reader getReader( Reader reader )
245 {
246 StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator( startExp, endExp );
247 propertiesInterpolator.addValueSource( valueSource );
248 propertiesInterpolator.setEscapeString( escapeString );
249 InterpolatorFilterReaderLineEnding interpolatorFilterReader =
250 new InterpolatorFilterReaderLineEnding( reader, propertiesInterpolator, startExp, endExp,
251 multiLineFiltering );
252 interpolatorFilterReader.setInterpolateWithPrefixPattern( false );
253 return interpolatorFilterReader;
254 }
255 } );
256 }
257
258
259
260
261 public File getResourcesBaseDirectory()
262 {
263 return resourcesBaseDirectory;
264 }
265
266
267
268
269 public void setResourcesBaseDirectory( File resourcesBaseDirectory )
270 {
271 this.resourcesBaseDirectory = resourcesBaseDirectory;
272 }
273
274
275
276
277 public boolean isUseDefaultFilterWrappers()
278 {
279 return useDefaultFilterWrappers;
280 }
281
282
283
284
285 public void setUseDefaultFilterWrappers( boolean useDefaultFilterWrappers )
286 {
287 this.useDefaultFilterWrappers = useDefaultFilterWrappers;
288 }
289
290
291
292
293
294
295
296 public boolean isOverwrite()
297 {
298 return overwrite;
299 }
300
301
302
303
304
305
306
307 public void setOverwrite( boolean overwrite )
308 {
309 this.overwrite = overwrite;
310 }
311
312
313
314
315
316
317
318 public boolean isIncludeEmptyDirs()
319 {
320 return includeEmptyDirs;
321 }
322
323
324
325
326
327
328
329 public void setIncludeEmptyDirs( boolean includeEmptyDirs )
330 {
331 this.includeEmptyDirs = includeEmptyDirs;
332 }
333
334
335
336
337
338 public boolean isFilterFilenames()
339 {
340 return filterFilenames;
341 }
342
343
344
345
346
347 public void setFilterFilenames( boolean filterFilenames )
348 {
349 this.filterFilenames = filterFilenames;
350 }
351
352
353
354
355 public MavenResourcesExecution copyOf()
356 {
357 MavenResourcesExecution mre = new MavenResourcesExecution();
358 mre.setAdditionalProperties( mre.getAdditionalProperties() );
359 mre.setEncoding( mre.getEncoding() );
360 mre.setEscapedBackslashesInFilePath( mre.isEscapedBackslashesInFilePath() );
361 mre.setEscapeString( mre.getEscapeString() );
362 mre.setFileFilters( copyList( mre.getFileFilters() ) );
363 mre.setFilterWrappers( copyList( mre.getFilterWrappers() ) );
364 mre.setIncludeEmptyDirs( mre.isIncludeEmptyDirs() );
365 mre.setInjectProjectBuildFilters( mre.isInjectProjectBuildFilters() );
366 mre.setMavenProject( mre.getMavenProject() );
367 mre.setMavenSession( mre.getMavenSession() );
368 mre.setNonFilteredFileExtensions( copyList( mre.getNonFilteredFileExtensions() ) );
369 mre.setOutputDirectory( mre.getOutputDirectory() );
370 mre.setOverwrite( mre.isOverwrite() );
371 mre.setProjectStartExpressions( copyList( mre.getProjectStartExpressions() ) );
372 mre.setResources( copyList( mre.getResources() ) );
373 mre.setResourcesBaseDirectory( mre.getResourcesBaseDirectory() );
374 mre.setUseDefaultFilterWrappers( mre.isUseDefaultFilterWrappers() );
375 mre.setSupportMultiLineFiltering( mre.isSupportMultiLineFiltering() );
376 return mre;
377 }
378
379 private <T> List<T> copyList( List<T> lst )
380 {
381 if ( lst == null )
382 {
383 return null;
384 }
385 else if ( lst.isEmpty() )
386 {
387 return new ArrayList<T>();
388 }
389 else
390 {
391 return new ArrayList<T>( lst );
392 }
393 }
394
395
396 public boolean isSupportMultiLineFiltering()
397 {
398 return supportMultiLineFiltering;
399 }
400
401
402 public void setSupportMultiLineFiltering( boolean supportMultiLineFiltering )
403 {
404 this.supportMultiLineFiltering = supportMultiLineFiltering;
405 }
406 }