1 package org.apache.maven.model.transform;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.List;
23 import java.util.function.Function;
24
25 import org.apache.maven.model.transform.pull.NodeBufferingParser;
26 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
27
28
29
30
31
32
33
34
35 class CiFriendlyXMLFilter
36 extends NodeBufferingParser
37 {
38 private final boolean replace;
39
40 private Function<String, String> replaceChain = Function.identity();
41
42 CiFriendlyXMLFilter( XmlPullParser xmlPullParser, boolean replace )
43 {
44 super( xmlPullParser, "version" );
45 this.replace = replace;
46 }
47
48 public CiFriendlyXMLFilter setChangelist( String changelist )
49 {
50 replaceChain = replaceChain.andThen( t -> t.replace( "${changelist}", changelist ) );
51 return this;
52 }
53
54 public CiFriendlyXMLFilter setRevision( String revision )
55 {
56 replaceChain = replaceChain.andThen( t -> t.replace( "${revision}", revision ) );
57 return this;
58 }
59
60 public CiFriendlyXMLFilter setSha1( String sha1 )
61 {
62 replaceChain = replaceChain.andThen( t -> t.replace( "${sha1}", sha1 ) );
63 return this;
64 }
65
66
67
68
69 public boolean isSet()
70 {
71 return !replaceChain.equals( Function.identity() );
72 }
73
74 @Override
75 protected void process( List<Event> buffer )
76 {
77 for ( Event event : buffer )
78 {
79 if ( event.event == TEXT && replace && event.text.contains( "${" ) )
80 {
81 event.text = replaceChain.apply( event.text );
82 }
83 pushEvent( event );
84 }
85 }
86
87 }