git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GitHub] ant-ivy pull request #73: Enable XML report parser to produce qualified extr...


GitHub user aprelev opened a pull request:

    https://github.com/apache/ant-ivy/pull/73

    Enable XML report parser to produce qualified extra attributes

    ### Issue
    `${ivy.deps.changed}` is always `true` for dependencies with extra attributes.
    
    ### Problem
    `XmlReportParser::startElement()` creates revision IDs [as follows](https://github.com/apache/ant-ivy/blob/5918182e0d6836d89c42260da9de4428d4cbcec0/src/java/org/apache/ivy/plugins/report/XmlReportParser.java#L96):
    ```Java
    mrid = ModuleRevisionId.newInstance(organisation, module, branch, revision,
        ExtendableItemHelper.getExtraAttributes(attributes, "extra-"));
    ```
    Here, `ExtendableItemHelper::getExtraAttributes()` method returns *unqualified* attributes of previously resolved dependencies, which are then compared with *qualified* attributes of currently resolved dependencies in `ConfigurationResolveReport::checkIfChanged()` [as follows](https://github.com/apache/ant-ivy/blob/5918182e0d6836d89c42260da9de4428d4cbcec0/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java#L101):
    ```Java
    Set<ModuleRevisionId> previousDepSet = new HashSet<>(
        Arrays.asList(parser.getDependencyRevisionIds()));
    hasChanged = !previousDepSet.equals(getModuleRevisionIds());
    ```
    which effectively renders sets of dependecies *unequal*.
    
    ### Solutions
    One solution would be to compare unqualified attributes when [testing revision IDs for equality](https://github.com/apache/ant-ivy/blob/5918182e0d6836d89c42260da9de4428d4cbcec0/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java#L237); another one would be to [produce qualified attributes](https://github.com/aprelev/ant-ivy/blob/1d508c14bbc68411b9b215f2e4e552fe20d3ae1a/src/java/org/apache/ivy/util/extendable/ExtendableItemHelper.java#L37) when parsing XML report.
    I've implemented second solution (it seemed cleaner to me), and included unit-test to demonstrate the issue. 

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/aprelev/ant-ivy master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/ant-ivy/pull/73.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #73
    
----
commit 1d508c14bbc68411b9b215f2e4e552fe20d3ae1a
Author: aprelev <arseny.aprelev@...>
Date:   2018-07-31T14:15:26Z

    Enable XML report parser to produce qualified extra attributes

----


---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xxxxxxxxxxxxxx
For additional commands, e-mail: dev-help@xxxxxxxxxxxxxx




( ! ) Warning: include(msgfooter.php): failed to open stream: No such file or directory in /var/www/git/apache-ant-development/msg02286.html on line 125
Call Stack
#TimeMemoryFunctionLocation
10.0007368728{main}( ).../msg02286.html:0

( ! ) Warning: include(): Failed opening 'msgfooter.php' for inclusion (include_path='.:/var/www/git') in /var/www/git/apache-ant-development/msg02286.html on line 125
Call Stack
#TimeMemoryFunctionLocation
10.0007368728{main}( ).../msg02286.html:0