[MNG-8250] [Maven4] ModelParser#parse is not called for custom model source
- Dominant language
- Java
- Stars
- 5.3k
- Forks
- 3.1k
- Avg merge
- 20h 42m
- Merged PRs (30d)
- 297
Description
**[Christoph Läubrich](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=laeubi)** opened **[MNG-8250](https://issues.apache.org/jira/browse/MNG-8250?redirect=false)** and commented
I have created an example to explore the new model reader here
https://github.com/laeubi/tycho/commit/f0b053487e5ea7ed50232c225cc99b20884b3b9e
my ModelReader is called for locate, but I can't see its Modelreader#parse it called instead I get
```
Caused by: java.io.IOException: Ist ein Verzeichnis
at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
at sun.nio.ch.FileDispatcherImpl.read(FileDispatcherImpl.java:48)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:330)
at sun.nio.ch.IOUtil.read(IOUtil.java:296)
at sun.nio.ch.IOUtil.read(IOUtil.java:273)
at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:232)
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65)
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:107)
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:101)
at com.ctc.wstx.io.StreamBootstrapper.ensureLoaded(StreamBootstrapper.java:492)
at com.ctc.wstx.io.StreamBootstrapper.resolveStreamEncoding(StreamBootstrapper.java:317)
at com.ctc.wstx.io.StreamBootstrapper.bootstrapInput(StreamBootstrapper.java:169)
at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:575)
at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:628)
at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:821)
at com.ctc.wstx.stax.WstxInputFactory.createXMLStreamReader(WstxInputFactory.java:360)
at org.apache.maven.model.v4.MavenStaxReader.read(MavenStaxReader.java:430)
at org.apache.maven.internal.impl.DefaultModelXmlFactory.read(DefaultModelXmlFactory.java:69)
at org.apache.maven.internal.impl.DefaultModelXmlFactory.read(DefaultModelXmlFactory.java:47)
at org.apache.maven.internal.impl.model.DefaultModelProcessor.doRead(DefaultModelProcessor.java:140)
at org.apache.maven.internal.impl.model.DefaultModelProcessor.read(DefaultModelProcessor.java:115)
at org.apache.maven.internal.impl.model.DefaultModelBuilder.doReadFileModel(DefaultModelBuilder.java:671)
at org.apache.maven.internal.impl.model.DefaultModelBuilder.lambda$readFileModel$2(DefaultModelBuilder.java:644)
at org.apache.maven.internal.impl.model.DefaultModelBuilder.lambda$asSupplier$10(DefaultModelBuilder.java:1460)
at org.apache.maven.internal.impl.resolver.DefaultModelCache$CachingSupplier.get(DefaultModelCache.java:194)
at org.apache.maven.internal.impl.resolver.DefaultModelCache.computeIfAbsent(DefaultModelCache.java:81)
at org.apache.maven.internal.impl.resolver.DefaultModelCache.computeIfAbsent(DefaultModelCache.java:77)
at org.apache.maven.internal.impl.model.DefaultModelBuilder.cache(DefaultModelBuilder.java:1453)
at org.apache.maven.internal.impl.model.DefaultModelBuilder.readFileModel(DefaultModelBuilder.java:644)
at org.apache.maven.internal.impl.model.DefaultModelBuilder.build(DefaultModelBuilder.java:229)
at org.apache.maven.internal.impl.model.DefaultModelBuilder.build(DefaultModelBuilder.java:200)
at org.apache.maven.project.DefaultProjectBuilder$BuildSession.build(DefaultProjectBuilder.java:612)
at org.apache.maven.project.DefaultProjectBuilder$BuildSession.lambda$build$4(DefaultProjectBuilder.java:565)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.lang.Thread.run(Thread.java:833)
```
It looks like maven try to parse it by the standard XML reader.
---
No further details from [MNG-8250](https://issues.apache.org/jira/browse/MNG-8250?redirect=false)
Contributor guide
Research direction
Start with the custom ModelReader example in commit f0b053487e5ea7ed50232c225cc99b20884b3b9e and trace DefaultModelProcessor.doRead through DefaultModelXmlFactory.read and MavenStaxReader.read. Reproduce the failure and determine why the custom source reaches the standard XML reader instead of ModelReader#parse. Done means the custom model source invokes parse without the directory-read IOException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100