Arnaud Jeansen commented on IVY-1565:

Hello [~jaikiran], thanks for the quick reply.

I fully agree with you that the version check is useful and may prevent parsing 
problems later in the class. My suggestion is really to provide a non-default 
configuration knob to override the check, kind of like an "I know what I'm 
doing" setting.
This doesn't seem too far fetched from my (admittedly limited) understanding of 
the code. XML validation is also a tuneable that people may opt out of, and 
that might also lead to problems later in the parsing process.

After some more thinking on my end, a tuneable / configuration may be too 
invasive for the limited benefit... Maybe just making XmlModuleDescriptorParser 
and XmlModuleDescriptorParser.Parser easily inheritable would be enough. What 
would you think of just making ALLOWED_VERSIONS non final or making it a real 
List (LinkedList rather than AbstractList)?

On the topic of workarounds, I found out that XmlModuleDescriptorParser.java 
can be easily duplicated and renamed, it is nicely separated from the rest of 
the package so at least I have a workaround if I don't manage to convince you 

Thanks again for taking the time.

> Enable XmlModuleDescriptorParser to skip the ivy-module version check
> ---------------------------------------------------------------------
>                 Key: IVY-1565
>                 URL: https://issues.apache.org/jira/browse/IVY-1565
>             Project: Ivy
>          Issue Type: Improvement
>            Reporter: Arnaud Jeansen
>            Priority: Minor
> I have a very specific use case where I rewrite ivy files to pom files on the 
> fly on a binary repository manager (artifactory).
> Basically, when an ivy-$version.xml file is published, I launch the 
> equivalent of the Ant makePom task and save a pom file in the same directory 
> as the ivy file.
> I am relying on an interesting feature from Artifactory called "user 
> plugins", where groovy scripts are executed on some specific events (e.g. 
> upload of a file)
> A sample implementation even exists at 
> https://github.com/JFrogDev/artifactory-user-plugins/tree/master/descriptors/ivy2pom
> However, my problem is that the binary repository manager has ivy-2.2 as its 
> library. So any attempt to transform later ivy module descriptors (versions 
> 2.3 and 2.4) fail with:
> {noformat}
> java.text.ParseException: [invalid version 2.4 in 
> file:/tmp/foo-5.15.9-2436013575810429206.ivy]
> {noformat}
> Is there any interest in providing a way to skip the version check in 
> XmlModuleDescriptorParser$Parser#ivyModuleStarted or enable callers to modify 
> ALLOWED_VERSIONS and authorize later versions?
> I have looked for a workaround for quite some time but:
> * ALLOWED_VERSIONS is final, so there is no way to switch to a new List with 
> the versions I want
> * ALLOWED_VERSIONS is an AbstractList, so _add_ and _addAll_ are unimplemented
> * Subclassing and overriding ivyModuleStarted fails because it works with a 
> lot of private fields directly

This message was sent by Atlassian JIRA

Reply via email to