elharo commented on code in PR #2292:
URL: https://github.com/apache/maven/pull/2292#discussion_r2080293469
##########
impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelProcessor.java:
##########
@@ -69,75 +71,74 @@
public class DefaultModelProcessor implements ModelProcessor {
private final ModelXmlFactory modelXmlFactory;
- private final List<ModelParser> modelParsers;
+ private final @Nullable List<ModelParser> modelParsers;
- @Inject
public DefaultModelProcessor(ModelXmlFactory modelXmlFactory, @Nullable
List<ModelParser> modelParsers) {
this.modelXmlFactory = modelXmlFactory;
this.modelParsers = modelParsers;
}
+ /**
+ * @implNote The ModelProcessor#locatePom never returns null while the
ModelParser#locatePom needs to return an existing path!
+ */
@Override
public Path locateExistingPom(Path projectDirectory) {
- // Note that the ModelProcessor#locatePom never returns null
- // while the ModelParser#locatePom needs to return an existing path!
- Path pom = modelParsers.stream()
- .map(m -> m.locate(projectDirectory)
- .map(org.apache.maven.api.services.Source::getPath)
- .orElse(null))
- .filter(Objects::nonNull)
+ return modelParsers.stream()
+ .map(parser -> parser.locate(projectDirectory))
+ .filter(Optional::isPresent)
+ .map(Optional::get)
+ .map(Source::getPath)
+ .peek(path -> throwIfWrongProjectDirLocation(path,
projectDirectory))
.findFirst()
- .orElseGet(() -> doLocateExistingPom(projectDirectory));
+ .orElseGet(() ->
locateExistingPomWithUserDirDefault(projectDirectory));
+ }
+
+ private static void throwIfWrongProjectDirLocation(Path pom, Path
projectDirectory) {
if (pom != null && !pom.equals(projectDirectory) &&
!pom.getParent().equals(projectDirectory)) {
throw new IllegalArgumentException("The POM found does not belong
to the given directory: " + pom);
}
- return pom;
+ }
+
+ private Path locateExistingPomWithUserDirDefault(Path project) {
+ return locateExistingPomInDirOrFile(project != null ? project :
Paths.get(System.getProperty("user.dir")));
+ }
+
+ private static Path locateExistingPomInDirOrFile(Path project) {
+ return Files.isDirectory(project) ?
isRegularFileOrNull(project.resolve("pom.xml")) : project;
+ }
+
+ private static Path isRegularFileOrNull(Path pom) {
+ return Files.isRegularFile(pom) ? pom : null;
}
@Override
public Model read(XmlReaderRequest request) throws IOException {
Objects.requireNonNull(request, "source cannot be null");
Review Comment:
source --> request
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]