1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.model.io.xpp3;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.io.Reader;
24
25 import org.apache.maven.model.InputSource;
26 import org.apache.maven.model.Model;
27 import org.codehaus.plexus.util.ReaderFactory;
28 import org.codehaus.plexus.util.xml.pull.EntityReplacementMap;
29 import org.codehaus.plexus.util.xml.pull.MXParser;
30 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
31 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
32
33 public class MavenXpp3ReaderEx {
34 private boolean addDefaultEntities = true;
35
36 private final ContentTransformer contentTransformer;
37
38 public MavenXpp3ReaderEx() {
39 this((source, fieldName) -> source);
40 }
41
42 public MavenXpp3ReaderEx(ContentTransformer contentTransformer) {
43 this.contentTransformer = contentTransformer;
44 }
45
46
47
48
49
50
51 public boolean getAddDefaultEntities() {
52 return addDefaultEntities;
53 }
54
55
56
57
58
59
60
61
62
63
64
65 public Model read(Reader reader, boolean strict, InputSource source) throws IOException, XmlPullParserException {
66 XmlPullParser parser =
67 addDefaultEntities ? new MXParser(EntityReplacementMap.defaultEntityReplacementMap) : new MXParser();
68 parser.setInput(reader);
69 return read(parser, strict, source);
70 }
71
72
73
74
75
76
77
78
79
80
81 public Model read(Reader reader, InputSource source) throws IOException, XmlPullParserException {
82 return read(reader, true, source);
83 }
84
85
86
87
88
89
90
91
92
93
94
95 public Model read(InputStream in, boolean strict, InputSource source) throws IOException, XmlPullParserException {
96 return read(ReaderFactory.newXmlReader(in), strict, source);
97 }
98
99
100
101
102
103
104
105
106
107
108 public Model read(InputStream in, InputSource source) throws IOException, XmlPullParserException {
109 return read(ReaderFactory.newXmlReader(in), source);
110 }
111
112
113
114
115
116
117
118
119
120
121
122 public Model read(XmlPullParser parser, boolean strict, InputSource source)
123 throws IOException, XmlPullParserException {
124 org.apache.maven.model.v4.MavenXpp3ReaderEx reader = contentTransformer != null
125 ? new org.apache.maven.model.v4.MavenXpp3ReaderEx(contentTransformer::transform)
126 : new org.apache.maven.model.v4.MavenXpp3ReaderEx();
127 reader.setAddDefaultEntities(addDefaultEntities);
128 org.apache.maven.api.model.Model model = reader.read(
129 parser, strict, new org.apache.maven.api.model.InputSource(source.getModelId(), source.getLocation()));
130 return new Model(model);
131 }
132
133
134
135
136
137
138 public void setAddDefaultEntities(boolean addDefaultEntities) {
139 this.addDefaultEntities = addDefaultEntities;
140 }
141
142 public interface ContentTransformer {
143
144
145
146
147
148
149
150 String transform(String source, String fieldName);
151 }
152 }