Skip to content

Commit 543ea16

Browse files
committed
Further remove references to xpp3
1 parent 04d6bd0 commit 543ea16

File tree

23 files changed

+232
-286
lines changed

23 files changed

+232
-286
lines changed

Diff for: maven-compat/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package org.apache.maven.project.interpolation;
2020

2121
import javax.inject.Inject;
22+
import javax.xml.stream.XMLStreamException;
2223

2324
import java.io.File;
2425
import java.io.IOException;
@@ -32,8 +33,8 @@
3233
import java.util.Properties;
3334

3435
import org.apache.maven.model.Model;
35-
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
36-
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
36+
import org.apache.maven.model.v4.MavenStaxReader;
37+
import org.apache.maven.model.v4.MavenStaxWriter;
3738
import org.apache.maven.project.DefaultProjectBuilderConfiguration;
3839
import org.apache.maven.project.ProjectBuilderConfiguration;
3940
import org.apache.maven.project.path.PathTranslator;
@@ -52,7 +53,6 @@
5253
import org.codehaus.plexus.logging.Logger;
5354
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
5455
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
55-
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
5656

5757
/**
5858
* Use a regular expression search to find and resolve expressions within the POM.
@@ -130,10 +130,10 @@ public Model interpolate(Model model, File projectDir, ProjectBuilderConfigurati
130130
throws ModelInterpolationException {
131131
StringWriter sWriter = new StringWriter(1024);
132132

133-
MavenXpp3Writer writer = new MavenXpp3Writer();
133+
MavenStaxWriter writer = new MavenStaxWriter();
134134
try {
135-
writer.write(sWriter, model);
136-
} catch (IOException e) {
135+
writer.write(sWriter, model.getDelegate());
136+
} catch (IOException | XMLStreamException e) {
137137
throw new ModelInterpolationException("Cannot serialize project model for interpolation.", e);
138138
}
139139

@@ -142,10 +142,10 @@ public Model interpolate(Model model, File projectDir, ProjectBuilderConfigurati
142142

143143
StringReader sReader = new StringReader(serializedModel);
144144

145-
MavenXpp3Reader modelReader = new MavenXpp3Reader();
145+
MavenStaxReader modelReader = new MavenStaxReader();
146146
try {
147-
model = modelReader.read(sReader);
148-
} catch (IOException | XmlPullParserException e) {
147+
model = new Model(modelReader.read(sReader));
148+
} catch (XMLStreamException e) {
149149
throw new ModelInterpolationException(
150150
"Cannot read project model from interpolating filter of serialized version.", e);
151151
}

Diff for: maven-compat/src/main/java/org/apache/maven/toolchain/DefaultToolchainsBuilder.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
import javax.inject.Singleton;
2323

2424
import java.io.File;
25-
import java.io.Reader;
25+
import java.io.InputStream;
26+
import java.nio.file.Files;
2627

2728
import org.apache.maven.toolchain.model.PersistedToolchains;
28-
import org.apache.maven.toolchain.v4.MavenToolchainsXpp3Reader;
29-
import org.codehaus.plexus.util.ReaderFactory;
29+
import org.apache.maven.toolchain.v4.MavenToolchainsStaxReader;
3030
import org.slf4j.Logger;
3131
import org.slf4j.LoggerFactory;
3232

@@ -44,8 +44,8 @@ public PersistedToolchains build(File userToolchainsFile) throws MisconfiguredTo
4444
PersistedToolchains toolchains = null;
4545

4646
if (userToolchainsFile != null && userToolchainsFile.isFile()) {
47-
try (Reader in = ReaderFactory.newXmlReader(userToolchainsFile)) {
48-
toolchains = new PersistedToolchains(new MavenToolchainsXpp3Reader().read(in));
47+
try (InputStream in = Files.newInputStream(userToolchainsFile.toPath())) {
48+
toolchains = new PersistedToolchains(new MavenToolchainsStaxReader().read(in));
4949
} catch (Exception e) {
5050
throw new MisconfiguredToolchainException(
5151
"Cannot read toolchains file at " + userToolchainsFile.getAbsolutePath(), e);

Diff for: maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ public DefaultRepositorySystemSession newRepositorySession(MavenExecutionRequest
236236
authSelector.add(server.getId(), authBuilder.build());
237237

238238
if (server.getConfiguration() != null) {
239-
XmlNode dom = ((org.codehaus.plexus.util.xml.Xpp3Dom) server.getConfiguration()).getDom();
239+
XmlNode dom = server.getDelegate().getConfiguration();
240240
List<XmlNode> children = dom.getChildren().stream()
241241
.filter(c -> !"wagonProvider".equals(c.getName()))
242242
.collect(Collectors.toList());

Diff for: maven-core/src/main/java/org/apache/maven/internal/impl/DefaultModelXmlFactory.java

+16-12
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@
3838
import org.apache.maven.api.services.xml.XmlWriterException;
3939
import org.apache.maven.api.services.xml.XmlWriterRequest;
4040
import org.apache.maven.model.v4.MavenStaxReader;
41-
import org.apache.maven.model.v4.MavenXpp3WriterEx;
42-
import org.codehaus.plexus.util.xml.XmlStreamReader;
41+
import org.apache.maven.model.v4.MavenStaxWriter;
4342

4443
import static org.apache.maven.internal.impl.Utils.nonNull;
4544

@@ -63,14 +62,19 @@ public Model read(@Nonnull XmlReaderRequest request) throws XmlReaderException {
6362
}
6463
MavenStaxReader xml = new MavenStaxReader();
6564
xml.setAddDefaultEntities(request.isAddDefaultEntities());
66-
if (path != null) {
67-
reader = new XmlStreamReader(path.toFile());
68-
} else if (url != null) {
69-
reader = new XmlStreamReader(url);
70-
} else if (inputStream != null) {
71-
reader = new XmlStreamReader(inputStream);
65+
if (inputStream != null) {
66+
return xml.read(inputStream, request.isStrict(), source);
67+
} else if (reader != null) {
68+
return xml.read(reader, request.isStrict(), source);
69+
} else if (path != null) {
70+
try (InputStream is = Files.newInputStream(path)) {
71+
return xml.read(is, request.isStrict(), source);
72+
}
73+
} else {
74+
try (InputStream is = url.openStream()) {
75+
return xml.read(is, request.isStrict(), source);
76+
}
7277
}
73-
return xml.read(reader, request.isStrict(), source);
7478
} catch (Exception e) {
7579
throw new XmlReaderException("Unable to read model", e);
7680
}
@@ -88,12 +92,12 @@ public void write(XmlWriterRequest<Model> request) throws XmlWriterException {
8892
}
8993
try {
9094
if (writer != null) {
91-
new MavenXpp3WriterEx().write(writer, content);
95+
new MavenStaxWriter().write(writer, content);
9296
} else if (outputStream != null) {
93-
new MavenXpp3WriterEx().write(outputStream, content);
97+
new MavenStaxWriter().write(outputStream, content);
9498
} else {
9599
try (OutputStream os = Files.newOutputStream(path)) {
96-
new MavenXpp3WriterEx().write(outputStream, content);
100+
new MavenStaxWriter().write(outputStream, content);
97101
}
98102
}
99103
} catch (Exception e) {

Diff for: maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import javax.inject.Inject;
2222
import javax.inject.Named;
2323
import javax.inject.Singleton;
24+
import javax.xml.stream.XMLStreamException;
2425

2526
import java.io.IOException;
2627
import java.util.ArrayList;
@@ -60,7 +61,6 @@
6061
import org.apache.maven.plugin.version.PluginVersionResolutionException;
6162
import org.apache.maven.project.MavenProject;
6263
import org.codehaus.plexus.util.StringUtils;
63-
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
6464

6565
/**
6666
* <strong>NOTE:</strong> This class is not part of any public api and can be changed or deleted without prior notice.
@@ -290,8 +290,9 @@ private Map<String, List<MojoExecution>> calculateLifecycleMappings(
290290
private void finalizeMojoConfiguration(MojoExecution mojoExecution) {
291291
MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
292292

293-
org.codehaus.plexus.util.xml.Xpp3Dom config = mojoExecution.getConfiguration();
294-
XmlNode executionConfiguration = config != null ? config.getDom() : null;
293+
XmlNode executionConfiguration = mojoExecution.getConfiguration() != null
294+
? mojoExecution.getConfiguration().getDom()
295+
: null;
295296
if (executionConfiguration == null) {
296297
executionConfiguration = new XmlNodeImpl("configuration");
297298
}
@@ -462,7 +463,7 @@ private void injectLifecycleOverlay(
462463

463464
try {
464465
lifecycleOverlay = pluginDescriptor.getLifecycleMapping(forkedLifecycle);
465-
} catch (IOException | XmlPullParserException e) {
466+
} catch (IOException | XMLStreamException e) {
466467
throw new PluginDescriptorParsingException(pluginDescriptor.getPlugin(), pluginDescriptor.getSource(), e);
467468
}
468469

Diff for: maven-core/src/main/java/org/apache/maven/project/ExtensionDescriptorBuilder.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,21 @@
1818
*/
1919
package org.apache.maven.project;
2020

21-
import java.io.BufferedInputStream;
21+
import javax.xml.stream.XMLStreamException;
22+
import javax.xml.stream.XMLStreamReader;
23+
2224
import java.io.File;
23-
import java.io.FileInputStream;
2425
import java.io.IOException;
2526
import java.io.InputStream;
27+
import java.nio.file.Files;
2628
import java.util.ArrayList;
2729
import java.util.List;
2830
import java.util.jar.JarFile;
2931
import java.util.zip.ZipEntry;
3032

33+
import com.ctc.wstx.stax.WstxInputFactory;
3134
import org.apache.maven.api.xml.XmlNode;
3235
import org.apache.maven.internal.xml.XmlNodeBuilder;
33-
import org.codehaus.plexus.util.ReaderFactory;
34-
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
3536

3637
/**
3738
* Creates an extension descriptor from some XML stream.
@@ -71,7 +72,7 @@ public ExtensionDescriptor build(File extensionJar) throws IOException {
7172
File pluginXml = new File(extensionJar, getExtensionDescriptorLocation());
7273

7374
if (pluginXml.canRead()) {
74-
try (InputStream is = new BufferedInputStream(new FileInputStream(pluginXml))) {
75+
try (InputStream is = Files.newInputStream(pluginXml.toPath())) {
7576
extensionDescriptor = build(is);
7677
}
7778
}
@@ -88,8 +89,9 @@ public ExtensionDescriptor build(InputStream is) throws IOException {
8889

8990
XmlNode dom;
9091
try {
91-
dom = XmlNodeBuilder.build(ReaderFactory.newXmlReader(is));
92-
} catch (XmlPullParserException e) {
92+
XMLStreamReader reader = WstxInputFactory.newFactory().createXMLStreamReader(is);
93+
dom = XmlNodeBuilder.build(reader);
94+
} catch (XMLStreamException e) {
9395
throw new IOException(e.getMessage(), e);
9496
}
9597

Diff for: maven-core/src/test/java/org/apache/maven/configuration/DefaultBeanConfiguratorPathTest.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@
1818
*/
1919
package org.apache.maven.configuration;
2020

21+
import javax.xml.stream.XMLStreamException;
22+
2123
import java.io.File;
22-
import java.io.IOException;
2324
import java.io.StringReader;
2425
import java.nio.file.Path;
2526
import java.nio.file.Paths;
2627

2728
import org.apache.maven.configuration.internal.DefaultBeanConfigurator;
2829
import org.apache.maven.internal.xml.XmlNodeBuilder;
2930
import org.codehaus.plexus.util.xml.Xpp3Dom;
30-
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
3131
import org.junit.jupiter.api.AfterEach;
3232
import org.junit.jupiter.api.BeforeEach;
3333
import org.junit.jupiter.api.Test;
@@ -53,8 +53,10 @@ void tearDown() throws Exception {
5353

5454
private Xpp3Dom toConfig(String xml) {
5555
try {
56-
return new Xpp3Dom(XmlNodeBuilder.build(new StringReader("<configuration>" + xml + "</configuration>")));
57-
} catch (XmlPullParserException | IOException e) {
56+
return new Xpp3Dom(XmlNodeBuilder.build(
57+
new StringReader("<configuration>" + xml + "</configuration>"),
58+
(XmlNodeBuilder.InputLocationBuilderStax) null));
59+
} catch (XMLStreamException e) {
5860
throw new IllegalArgumentException(e);
5961
}
6062
}

Diff for: maven-core/src/test/java/org/apache/maven/configuration/DefaultBeanConfiguratorTest.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
*/
1919
package org.apache.maven.configuration;
2020

21+
import javax.xml.stream.XMLStreamException;
22+
2123
import java.io.File;
22-
import java.io.IOException;
2324
import java.io.StringReader;
2425

2526
import org.apache.maven.configuration.internal.DefaultBeanConfigurator;
2627
import org.apache.maven.internal.xml.XmlNodeBuilder;
2728
import org.codehaus.plexus.util.xml.Xpp3Dom;
28-
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
2929
import org.junit.jupiter.api.AfterEach;
3030
import org.junit.jupiter.api.BeforeEach;
3131
import org.junit.jupiter.api.Test;
@@ -51,8 +51,10 @@ void tearDown() throws Exception {
5151

5252
private Xpp3Dom toConfig(String xml) {
5353
try {
54-
return new Xpp3Dom(XmlNodeBuilder.build(new StringReader("<configuration>" + xml + "</configuration>")));
55-
} catch (XmlPullParserException | IOException e) {
54+
return new Xpp3Dom(XmlNodeBuilder.build(
55+
new StringReader("<configuration>" + xml + "</configuration>"),
56+
(XmlNodeBuilder.InputLocationBuilderStax) null));
57+
} catch (XMLStreamException e) {
5658
throw new IllegalArgumentException(e);
5759
}
5860
}

Diff for: maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java

+34-6
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.io.IOException;
3131
import java.io.InputStream;
3232
import java.io.Reader;
33+
import java.nio.file.Files;
3334
import java.nio.file.Path;
3435
import java.util.Map;
3536
import java.util.Objects;
@@ -39,8 +40,6 @@
3940
import org.apache.maven.model.building.ModelSourceTransformer;
4041
import org.apache.maven.model.building.TransformerContext;
4142
import org.apache.maven.model.v4.MavenStaxReader;
42-
import org.codehaus.plexus.util.ReaderFactory;
43-
import org.codehaus.plexus.util.xml.XmlStreamReader;
4443

4544
/**
4645
* Handles deserialization of a model from some kind of textual format like XML.
@@ -61,7 +60,7 @@ public DefaultModelReader(ModelSourceTransformer transformer) {
6160
public Model read(File input, Map<String, ?> options) throws IOException {
6261
Objects.requireNonNull(input, "input cannot be null");
6362

64-
try (XmlStreamReader in = ReaderFactory.newXmlReader(input)) {
63+
try (InputStream in = Files.newInputStream(input.toPath())) {
6564
Model model = read(in, input.toPath(), options);
6665

6766
model.setPomFile(input);
@@ -83,9 +82,7 @@ public Model read(Reader input, Map<String, ?> options) throws IOException {
8382
public Model read(InputStream input, Map<String, ?> options) throws IOException {
8483
Objects.requireNonNull(input, "input cannot be null");
8584

86-
try (XmlStreamReader in = ReaderFactory.newXmlReader(input)) {
87-
return read(in, null, options);
88-
}
85+
return read(input, null, options);
8986
}
9087

9188
private boolean isStrict(Map<String, ?> options) {
@@ -103,6 +100,37 @@ private TransformerContext getTransformerContext(Map<String, ?> options) {
103100
return (TransformerContext) value;
104101
}
105102

103+
private Model read(InputStream input, Path pomFile, Map<String, ?> options) throws IOException {
104+
try {
105+
XMLInputFactory factory = new com.ctc.wstx.stax.WstxInputFactory();
106+
factory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, false);
107+
XMLStreamReader parser = factory.createXMLStreamReader(input);
108+
109+
TransformerContext context = getTransformerContext(options);
110+
XMLStreamReader transformingParser =
111+
context != null ? transformer.transform(parser, pomFile, context) : parser;
112+
113+
InputSource source = getSource(options);
114+
boolean strict = isStrict(options);
115+
if (source != null) {
116+
return readModelEx(transformingParser, source, strict);
117+
} else {
118+
return readModel(transformingParser, strict);
119+
}
120+
} catch (XMLStreamException e) {
121+
Location location = e.getLocation();
122+
throw new ModelParseException(
123+
e.getMessage(),
124+
location != null ? location.getLineNumber() : -1,
125+
location != null ? location.getColumnNumber() : -1,
126+
e);
127+
} catch (IOException e) {
128+
throw e;
129+
} catch (Exception e) {
130+
throw new IOException("Unable to transform pom", e);
131+
}
132+
}
133+
106134
private Model read(Reader reader, Path pomFile, Map<String, ?> options) throws IOException {
107135
try {
108136
XMLInputFactory factory = new com.ctc.wstx.stax.WstxInputFactory();

0 commit comments

Comments
 (0)