ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aprelev <...@git.apache.org>
Subject [GitHub] ant-ivy issue #73: Enable XML report parser to produce qualified extra attri...
Date Wed, 01 Aug 2018 12:26:29 GMT
Github user aprelev commented on the issue:

    https://github.com/apache/ant-ivy/pull/73
  
    As of now, two sets of dependencies are constructed in a different ways:
    
    - *currently resolved dependecies* are produced by Ivy resolve engine, with **both qualified
and unqualified attributes** (`super.qualifiedExtraAttributes != super.extraAttributes`),
and
    - *previously resolved dependencies* are parsed from last report by `XmlReportParser`,
with **unqualified attributes only** (`super.qualifiedExtraAttributes == super.extraAttributes`).
    
    Set comparison at `ConfigurationResolveReport::checkIfChanged()` invokes `ModuleRevisionId::equals()`
for individual dependencies comparison, which compares `super.qualifiedExtraAttributes` maps
as in:
    ```Java
    @Override
    public boolean equals(Object obj) {
      ...
      return other.getRevision().equals(getRevision())
        && !(other.getBranch() == null && getBranch() != null)
        && !(other.getBranch() != null && !other.getBranch().equals(getBranch()))
        && other.getModuleId().equals(getModuleId())
        && other.getQualifiedExtraAttributes().equals(getQualifiedExtraAttributes());
//< here
    }
    ```
    which, obviously, yields a `false`, since keys in `other.getQualifiedExtraAttributes()`
map are stripped of qualifiers as explained above.
    
    That is why I introduced parameterised version of `ExtendableItemHelper::getExtraAttributes()`
used by `XmlReportParser`, this way parsed dependencies have both versions of qualifiers,
same as resolved dependencies.
    
    As I pointed out in original PR message, issue may instead be solved by modifying `ModuleRevisionId::equals()`
to use `super.extraAttributes`, provided attributes namespaces cannot clash, of course, which
will result in ignoring qualifiers:
    ```Java
    @Override
    public boolean equals(Object obj) {
      ...
      return other.getRevision().equals(getRevision())
        && !(other.getBranch() == null && getBranch() != null)
        && !(other.getBranch() != null && !other.getBranch().equals(getBranch()))
        && other.getModuleId().equals(getModuleId())
        && other.getExtraAttributes().equals(getExtraAttributes()); //< ignoring
qualifiers
    }
    ```
    At what point do you suggest we check for presense of `':'` in the names of attributes?



---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message