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