1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.settings.io.xpp3;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.io.Reader;
24
25 import org.apache.maven.settings.Settings;
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 SettingsXpp3Reader {
33 private boolean addDefaultEntities = true;
34
35 private final ContentTransformer contentTransformer;
36
37 public SettingsXpp3Reader() {
38 this((source, fieldName) -> source);
39 }
40
41 public SettingsXpp3Reader(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 Settings read(Reader reader, boolean strict) throws IOException, XmlPullParserException {
65 XmlPullParser parser =
66 addDefaultEntities ? new MXParser(EntityReplacementMap.defaultEntityReplacementMap) : new MXParser();
67 parser.setInput(reader);
68 return read(parser, strict);
69 }
70
71
72
73
74
75
76
77
78
79
80 public Settings read(Reader reader) throws IOException, XmlPullParserException {
81 return read(reader, true);
82 }
83
84
85
86
87
88
89
90
91
92
93
94 public Settings read(InputStream in, boolean strict) throws IOException, XmlPullParserException {
95 return read(ReaderFactory.newXmlReader(in), strict);
96 }
97
98
99
100
101
102
103
104
105
106
107 public Settings read(InputStream in) throws IOException, XmlPullParserException {
108 return read(ReaderFactory.newXmlReader(in));
109 }
110
111
112
113
114
115
116
117
118
119
120
121 public Settings read(XmlPullParser parser, boolean strict) throws IOException, XmlPullParserException {
122 org.apache.maven.settings.v4.SettingsXpp3Reader reader = contentTransformer != null
123 ? new org.apache.maven.settings.v4.SettingsXpp3Reader(contentTransformer::transform)
124 : new org.apache.maven.settings.v4.SettingsXpp3Reader();
125 reader.setAddDefaultEntities(addDefaultEntities);
126 org.apache.maven.api.settings.Settings settings = reader.read(parser, strict);
127 return new Settings(settings);
128 }
129
130
131
132
133
134
135 public void setAddDefaultEntities(boolean addDefaultEntities) {
136 this.addDefaultEntities = addDefaultEntities;
137 }
138
139 public interface ContentTransformer {
140
141
142
143
144
145
146
147 String transform(String source, String fieldName);
148 }
149 }