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.project.MavenProject;
29 import org.codehaus.plexus.interpolation.Interpolator;
30 import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
31 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
32 import org.codehaus.plexus.interpolation.ValueSource;
33 import org.codehaus.plexus.util.FileUtils;
34 import org.codehaus.plexus.util.FileUtils.FilterWrapper;
35
36
37
38
39
40
41
42 public class MavenResourcesExecution
43 extends AbstractMavenFilteringRequest
44 {
45
46
47 private List resources;
48
49 private File outputDirectory;
50
51 private List nonFilteredFileExtensions;
52
53
54 private List filterWrappers;
55
56 private File resourcesBaseDirectory;
57
58 private boolean useDefaultFilterWrappers = false;
59
60
61
62
63
64
65
66 private boolean overwrite = false;
67
68
69
70
71
72
73 private boolean includeEmptyDirs = false;
74
75
76
77
78
79
80 private boolean supportMultiLineFiltering;
81
82 public MavenResourcesExecution()
83 {
84
85 }
86
87
88
89
90
91
92
93
94
95
96
97
98 public MavenResourcesExecution( List resources, File outputDirectory, MavenProject mavenProject, String encoding,
99 List fileFilters, List nonFilteredFileExtensions, MavenSession mavenSession )
100 {
101 super( mavenProject, fileFilters, encoding, mavenSession );
102 this.resources = resources;
103 this.outputDirectory = outputDirectory;
104 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
105 this.useDefaultFilterWrappers = true;
106 this.resourcesBaseDirectory = mavenProject.getBasedir();
107 }
108
109 public MavenResourcesExecution( List resources, File outputDirectory, String encoding, List filterWrappers,
110 File resourcesBaseDirectory, List nonFilteredFileExtensions )
111 {
112 this();
113 this.resources = resources;
114 this.outputDirectory = outputDirectory;
115 this.filterWrappers = filterWrappers;
116 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
117 this.resourcesBaseDirectory = resourcesBaseDirectory;
118 this.useDefaultFilterWrappers = false;
119 setEncoding( encoding );
120 }
121
122
123
124
125
126 public List getResources()
127 {
128 return resources;
129 }
130
131
132
133
134 public void setResources( List resources )
135 {
136 this.resources = resources;
137 }
138
139 public File getOutputDirectory()
140 {
141 return outputDirectory;
142 }
143
144 public void setOutputDirectory( File outputDirectory )
145 {
146 this.outputDirectory = outputDirectory;
147 }
148
149
150
151
152 public List getNonFilteredFileExtensions()
153 {
154 return nonFilteredFileExtensions;
155 }
156
157
158
159
160 public void setNonFilteredFileExtensions( List nonFilteredFileExtensions )
161 {
162 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
163 }
164
165
166
167
168 public List getFilterWrappers()
169 {
170 return filterWrappers;
171 }
172
173
174
175
176 public void setFilterWrappers( List filterWrappers )
177 {
178 this.filterWrappers = filterWrappers;
179 }
180
181 public void addFilterWrapper( FilterWrapper filterWrapper )
182 {
183 if ( this.filterWrappers == null )
184 {
185 this.filterWrappers = new ArrayList();
186 }
187 this.filterWrappers.add( filterWrapper );
188 }
189
190
191
192
193
194
195
196
197 public void addFilerWrapper( final ValueSource valueSource )
198 {
199 addFilterWrapper( new FileUtils.FilterWrapper()
200 {
201 public Reader getReader( Reader reader )
202 {
203 Interpolator propertiesInterpolator = new RegexBasedInterpolator();
204 propertiesInterpolator.addValueSource( valueSource );
205 return new InterpolatorFilterReaderLineEnding( reader, propertiesInterpolator,
206 InterpolatorFilterReaderLineEnding.DEFAULT_BEGIN_TOKEN,
207 InterpolatorFilterReaderLineEnding.DEFAULT_END_TOKEN,
208 false );
209 }
210 } );
211 }
212
213
214
215
216
217
218
219
220
221 public void addFilerWrapper( final ValueSource valueSource, final String startRegExp, final String endRegExp,
222 final String startToken, final String endToken )
223 {
224 addFilterWrapper( new FileUtils.FilterWrapper()
225 {
226 public Reader getReader( Reader reader )
227 {
228 Interpolator propertiesInterpolator = new RegexBasedInterpolator( startRegExp, endRegExp );
229 propertiesInterpolator.addValueSource( valueSource );
230 return new InterpolatorFilterReaderLineEnding( reader, propertiesInterpolator, startToken, endToken,
231 false );
232 }
233 } );
234 }
235
236
237
238
239
240
241
242
243
244 public void addFilerWrapperWithEscaping( final ValueSource valueSource, final String startExp, final String endExp,
245 final String escapeString )
246 {
247 addFilterWrapper( new FileUtils.FilterWrapper()
248 {
249 public Reader getReader( Reader reader )
250 {
251 StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator( startExp, endExp );
252 propertiesInterpolator.addValueSource( valueSource );
253 propertiesInterpolator.setEscapeString( escapeString );
254 InterpolatorFilterReaderLineEnding interpolatorFilterReader
255 = new InterpolatorFilterReaderLineEnding( reader,
256 propertiesInterpolator,
257 startExp, endExp, false );
258 interpolatorFilterReader.setInterpolateWithPrefixPattern( false );
259 return interpolatorFilterReader;
260 }
261 } );
262 }
263
264
265
266
267
268
269
270
271
272 public void addFilerWrapperWithEscaping( final ValueSource valueSource, final String startExp, final String endExp,
273 final String escapeString, final boolean supportMultiLineFiltering )
274 {
275 addFilterWrapper( new FileUtils.FilterWrapper()
276 {
277 public Reader getReader( Reader reader )
278 {
279 StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator( startExp, endExp );
280 propertiesInterpolator.addValueSource( valueSource );
281 propertiesInterpolator.setEscapeString( escapeString );
282 InterpolatorFilterReaderLineEnding interpolatorFilterReader
283 = new InterpolatorFilterReaderLineEnding( reader,
284 propertiesInterpolator,
285 startExp, endExp, supportMultiLineFiltering );
286 interpolatorFilterReader.setInterpolateWithPrefixPattern( false );
287 return interpolatorFilterReader;
288 }
289 } );
290 }
291
292
293 public File getResourcesBaseDirectory()
294 {
295 return resourcesBaseDirectory;
296 }
297
298 public void setResourcesBaseDirectory( File resourcesBaseDirectory )
299 {
300 this.resourcesBaseDirectory = resourcesBaseDirectory;
301 }
302
303 public boolean isUseDefaultFilterWrappers()
304 {
305 return useDefaultFilterWrappers;
306 }
307
308 public void setUseDefaultFilterWrappers( boolean useDefaultFilterWrappers )
309 {
310 this.useDefaultFilterWrappers = useDefaultFilterWrappers;
311 }
312
313
314
315
316
317
318 public boolean isOverwrite()
319 {
320 return overwrite;
321 }
322
323
324
325
326
327
328
329 public void setOverwrite( boolean overwrite )
330 {
331 this.overwrite = overwrite;
332 }
333
334
335
336
337
338
339 public boolean isIncludeEmptyDirs()
340 {
341 return includeEmptyDirs;
342 }
343
344
345
346
347
348
349
350 public void setIncludeEmptyDirs( boolean includeEmptyDirs )
351 {
352 this.includeEmptyDirs = includeEmptyDirs;
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 List copyList( List lst )
380 {
381 if ( lst == null )
382 {
383 return null;
384 }
385 else if ( lst.isEmpty() )
386 {
387 return new ArrayList();
388 }
389 else
390 {
391 return new ArrayList( lst );
392 }
393 }
394
395 public boolean isSupportMultiLineFiltering()
396 {
397 return supportMultiLineFiltering;
398 }
399
400 public void setSupportMultiLineFiltering( boolean supportMultiLineFiltering )
401 {
402 this.supportMultiLineFiltering = supportMultiLineFiltering;
403 }
404 }