Skip to content

Commit 4e0114f

Browse files
author
Vincent Potucek
committed
Pull apache#2287: Modernize codebase with Java improvements - functional DefaultModelProcessor#read
1 parent d65c375 commit 4e0114f

File tree

1 file changed

+14
-26
lines changed

1 file changed

+14
-26
lines changed

impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelProcessor.java

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.nio.file.Files;
2323
import java.nio.file.Path;
2424
import java.nio.file.Paths;
25-
import java.util.ArrayList;
2625
import java.util.List;
2726
import java.util.Map;
2827
import java.util.Objects;
@@ -37,7 +36,6 @@
3736
import org.apache.maven.api.services.xml.ModelXmlFactory;
3837
import org.apache.maven.api.services.xml.XmlReaderRequest;
3938
import org.apache.maven.api.spi.ModelParser;
40-
import org.apache.maven.api.spi.ModelParserException;
4139

4240
/**
4341
*
@@ -97,30 +95,20 @@ public Path locateExistingPom(Path projectDirectory) {
9795
@Override
9896
public Model read(XmlReaderRequest request) throws IOException {
9997
Objects.requireNonNull(request, "source cannot be null");
100-
Path pomFile = request.getPath();
101-
if (pomFile != null) {
102-
Path projectDirectory = pomFile.getParent();
103-
List<ModelParserException> exceptions = new ArrayList<>();
104-
for (ModelParser parser : modelParsers) {
105-
try {
106-
Optional<Model> model =
107-
parser.locateAndParse(projectDirectory, Map.of(ModelParser.STRICT, request.isStrict()));
108-
if (model.isPresent()) {
109-
return model.get().withPomFile(pomFile);
110-
}
111-
} catch (ModelParserException e) {
112-
exceptions.add(e);
113-
}
114-
}
115-
try {
116-
return doRead(request);
117-
} catch (IOException e) {
118-
exceptions.forEach(e::addSuppressed);
119-
throw e;
120-
}
121-
} else {
122-
return doRead(request);
123-
}
98+
return read(request, request.getPath());
99+
}
100+
101+
private Model read(XmlReaderRequest request, Path pomFile) throws IOException {
102+
return pomFile == null
103+
? doRead(request)
104+
: modelParsers.stream()
105+
.map(parser -> parser.locateAndParse(
106+
pomFile.getParent(), Map.of(ModelParser.STRICT, request.isStrict())))
107+
.filter(Optional::isPresent)
108+
.map(Optional::get)
109+
.map(model -> model.withPomFile(pomFile))
110+
.findFirst()
111+
.orElse(doRead(request));
124112
}
125113

126114
private Path doLocateExistingPom(Path project) {

0 commit comments

Comments
 (0)