[
https://issues.apache.org/jira/browse/IVY-615?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Adrian Woodhead closed IVY-615.
-------------------------------
Resolution: Fixed
Problem wasn't in IVY but in my extended code where the resource exists()
method wasn't properly implemented.
> problems with download() method when extending BasicResolver
> ------------------------------------------------------------
>
> Key: IVY-615
> URL: https://issues.apache.org/jira/browse/IVY-615
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.0.0-alpha-2
> Reporter: Adrian Woodhead
>
> When trying to create a SvnResolver I have run into an issue which seems to
> originate in BasicResolver. I extend RepositoryResolver which ultimately
> extends BasicResolver. I implement various methods in my classes to have
> dependent files downloaded from subversion over the svn+ssh protocol which
> works OK, however files are downloaded into the local ivy repository as
> FILENAME.EXT.part and never renamed to have the .part removed even though
> they are completely downloaded. I tracked the issue down to this method in
> BasicResolver:
> public DownloadReport download(Artifact[] artifacts, DownloadOptions options)
> The code on line 808 is executed:
> adr.setSize(getAndCheck(artifactRef.getResource(), tmp));
> This in turn tries to download a .sha1 file for my resource which fails
> (there isn't one) which throws an IOException. This means that the code
> following where the file is renamed to have the .part removed is never
> executed. I don't know enough about the internals of Ivy to say what the best
> way to fix this is so I did the following which almost certainly is not the
> best solution:
> try {
> adr.setSize(getAndCheck(artifactRef.getResource(), tmp));
> } catch (IOException e) {
> Message.warn(e.getMessage());
> }
> I didn't want to change the Ivy code so I moved the entire download method
> into my class and then noticed it wouldn't compile due to the object defined
> at line 104:
> private URLRepository extartifactrep = new URLRepository(); // used only
> to download
> I'm not sure why URLRepository is hardcoded here, surely this should use a
> method like getRepository() in RepositoryResolver to get the actual
> repository in use, which in my case is not a URLRepository but my own
> SvnRepository. My suggestion would be to move the Repository member variable
> and getter and setter from RepositoryResolver up into BasicResolver and
> change line 805 in BasicResolver from
> extartifactrep.get(artifactRef.getResource().getName(), tmp);
> to
> getRepository().get(artifactRef.getResource().getName(), tmp);
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.