1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.model.transform;
20
21 import java.util.List;
22 import java.util.regex.Pattern;
23
24 import org.apache.maven.model.transform.pull.NodeBufferingParser;
25 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
26
27
28
29
30
31
32
33
34 public class RelativePathXMLFilter extends NodeBufferingParser {
35
36 private static final Pattern S_FILTER = Pattern.compile("\\s+");
37
38 public RelativePathXMLFilter(XmlPullParser xmlPullParser) {
39 super(xmlPullParser, "parent");
40 }
41
42 protected void process(List<Event> buffer) {
43 boolean skip = false;
44 Event prev = null;
45 for (Event event : buffer) {
46 if (event.event == START_TAG && "relativePath".equals(event.name)) {
47 skip = true;
48 if (prev != null
49 && prev.event == TEXT
50 && S_FILTER.matcher(prev.text).matches()) {
51 prev = null;
52 }
53 event = null;
54 } else if (event.event == END_TAG && "relativePath".equals(event.name)) {
55 skip = false;
56 event = null;
57 } else if (skip) {
58 event = null;
59 }
60 if (prev != null) {
61 pushEvent(prev);
62 }
63 prev = event;
64 }
65 pushEvent(prev);
66 }
67 }