Return-Path: Delivered-To: apmail-ant-dev-archive@www.apache.org Received: (qmail 60975 invoked from network); 31 Aug 2008 16:17:04 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 31 Aug 2008 16:17:03 -0000 Received: (qmail 67406 invoked by uid 500); 31 Aug 2008 16:17:01 -0000 Delivered-To: apmail-ant-dev-archive@ant.apache.org Received: (qmail 67343 invoked by uid 500); 31 Aug 2008 16:17:01 -0000 Mailing-List: contact dev-help@ant.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Ant Developers List" Reply-To: "Ant Developers List" Delivered-To: mailing list dev@ant.apache.org Received: (qmail 67332 invoked by uid 99); 31 Aug 2008 16:17:00 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 31 Aug 2008 09:17:00 -0700 X-ASF-Spam-Status: No, hits=1.2 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [209.85.146.178] (HELO wa-out-1112.google.com) (209.85.146.178) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 31 Aug 2008 16:16:01 +0000 Received: by wa-out-1112.google.com with SMTP id k17so977821waf.0 for ; Sun, 31 Aug 2008 09:16:30 -0700 (PDT) Received: by 10.114.169.2 with SMTP id r2mr4581354wae.132.1220199390823; Sun, 31 Aug 2008 09:16:30 -0700 (PDT) Received: by 10.115.77.2 with HTTP; Sun, 31 Aug 2008 09:16:30 -0700 (PDT) Message-ID: <7b49bb2e0808310916n60c63991hc5946e142b37876f@mail.gmail.com> Date: Sun, 31 Aug 2008 17:16:30 +0100 From: "Alex Radeski" To: dev@ant.apache.org Subject: OSGi friendly LatestRevisionStrategy patch MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_29669_21879089.1220199390820" X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_29669_21879089.1220199390820 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, While working on the Bushel project (http://code.google.com/p/bushel/) to add OSGi bundle support to Ivy, I stumbled across a limitation in the LatestRevisionStrategy. The current implementation sorts OSGi major.minor.micro[.qualifier] in what I think is the wrong order. For example, from the LatestRevisionStrategyTest.testComparator() test, the natural order of both OSGi and non-OSGi versions is: 0.2a, 0.2_b, 0.2rc1, 0.2-final, 1.0-dev1, 1.0-dev2, 1.0-alpha1, 1.0-alpha2, 1.0-beta1, 1.0-beta2, 1.0-gamma, 1.0-rc1, 1.0-rc2, 1.0, 1.0.1, 2.0, 2.0.0, 2.0.0.b006, 2.0.0.b012, 2.0.0.xyz However, the current implementation produces the following, where the last four elements are in the wrong order: 0.2a, 0.2_b, 0.2rc1, 0.2-final, 1.0-dev1, 1.0-dev2, 1.0-alpha1, 1.0-alpha2, 1.0-beta1, 1.0-beta2, 1.0-gamma, 1.0-rc1, 1.0-rc2, 1.0, 1.0.1, 2.0, 2.0.0.b006, 2.0.0.b012, 2.0.0.xyz, 2.0.0 This is because it currently gives equal weighting to the [._-+] characters, instead of giving the '.' character precedence. I have attached a patch the fixes this limitation, as well as updating the unit test. I have also fixed a minor bug in the test where it assumed the versions were shuffled, but they weren't. The current way to work around this is to override all the latest-strategies in the ivysettings.xml, which I'd like to avoid if possible. For example: ... ... I hope you can use this patch. Cheers, Alex ------=_Part_29669_21879089.1220199390820 Content-Type: text/x-patch; name=osgi-friendly-latest-rev-strategy-aradeski.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fkjuddeo0 Content-Disposition: attachment; filename=osgi-friendly-latest-rev-strategy-aradeski.patch SW5kZXg6IHRlc3QvamF2YS9vcmcvYXBhY2hlL2l2eS9wbHVnaW5zL2xhdGVzdC9MYXRlc3RSZXZp c2lvblN0cmF0ZWd5VGVzdC5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3QvamF2YS9vcmcvYXBhY2hl L2l2eS9wbHVnaW5zL2xhdGVzdC9MYXRlc3RSZXZpc2lvblN0cmF0ZWd5VGVzdC5qYXZhCShyZXZp c2lvbiA2ODQyMTApCisrKyB0ZXN0L2phdmEvb3JnL2FwYWNoZS9pdnkvcGx1Z2lucy9sYXRlc3Qv TGF0ZXN0UmV2aXNpb25TdHJhdGVneVRlc3QuamF2YQkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr MjksOCBAQAogICAgIHB1YmxpYyB2b2lkIHRlc3RDb21wYXJhdG9yKCkgewogICAgICAgICBBcnRp ZmFjdEluZm9bXSByZXZzID0gdG9Nb2NrQUkobmV3IFN0cmluZ1tdIHsiMC4yYSIsICIwLjJfYiIs ICIwLjJyYzEiLCAiMC4yLWZpbmFsIiwKICAgICAgICAgICAgICAgICAiMS4wLWRldjEiLCAiMS4w LWRldjIiLCAiMS4wLWFscGhhMSIsICIxLjAtYWxwaGEyIiwgIjEuMC1iZXRhMSIsICIxLjAtYmV0 YTIiLAotICAgICAgICAgICAgICAgICIxLjAtZ2FtbWEiLCAiMS4wLXJjMSIsICIxLjAtcmMyIiwg IjEuMCIsICIxLjAuMSIsICIyLjAifSk7CisgICAgICAgICAgICAgICAgIjEuMC1nYW1tYSIsICIx LjAtcmMxIiwgIjEuMC1yYzIiLCAiMS4wIiwgIjEuMC4xIiwgCisgICAgICAgICAgICAgICAgIjIu MCIsICIyLjAuMCIsICIyLjAuMC5iMDA2IiwiMi4wLjAuYjAxMiIsIjIuMC4wLnh5eiJ9KTsKIAog ICAgICAgICBMaXN0IHNodWZmbGVkID0gbmV3IEFycmF5TGlzdChBcnJheXMuYXNMaXN0KHJldnMp KTsKICAgICAgICAgQ29sbGVjdGlvbnMuc2h1ZmZsZShzaHVmZmxlZCk7CkBAIC01Nyw2ICs1OCw3 IEBACiAgICAgICAgICAgICAgICAgIjEuMC1nYW1tYSIsICIxLjAtcmMxIiwgIjEuMC1yYzIiLCAi MS4wIiwgIjEuMC4xIiwgIjIuMCJ9KTsKIAogICAgICAgICBMaXN0IHNodWZmbGVkID0gbmV3IEFy cmF5TGlzdChBcnJheXMuYXNMaXN0KHJldnMpKTsKKyAgICAgICAgQ29sbGVjdGlvbnMuc2h1ZmZs ZShzaHVmZmxlZCk7CiAgICAgICAgIEFydGlmYWN0SW5mb1tdIHNodWZmbGVkUmV2cyA9IChBcnRp ZmFjdEluZm9bXSkgc2h1ZmZsZWQKICAgICAgICAgICAgICAgICAudG9BcnJheShuZXcgQXJ0aWZh Y3RJbmZvW3JldnMubGVuZ3RoXSk7CiAKSW5kZXg6IHNyYy9qYXZhL29yZy9hcGFjaGUvaXZ5L3Bs dWdpbnMvbGF0ZXN0L0xhdGVzdFJldmlzaW9uU3RyYXRlZ3kuamF2YQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz cmMvamF2YS9vcmcvYXBhY2hlL2l2eS9wbHVnaW5zL2xhdGVzdC9MYXRlc3RSZXZpc2lvblN0cmF0 ZWd5LmphdmEJKHJldmlzaW9uIDY4NDIxMCkKKysrIHNyYy9qYXZhL29yZy9hcGFjaGUvaXZ5L3Bs dWdpbnMvbGF0ZXN0L0xhdGVzdFJldmlzaW9uU3RyYXRlZ3kuamF2YQkod29ya2luZyBjb3B5KQpA QCAtMjEsMTIgKzIxLDE4IEBACiBpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2 YS51dGlsLkxvY2FsZTsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5y ZWdleC5QYXR0ZXJuOwogCiBpbXBvcnQgb3JnLmFwYWNoZS5pdnkuY29yZS5JdnlDb250ZXh0Owog aW1wb3J0IG9yZy5hcGFjaGUuaXZ5LmNvcmUubW9kdWxlLmlkLk1vZHVsZVJldmlzaW9uSWQ7CiBp bXBvcnQgb3JnLmFwYWNoZS5pdnkucGx1Z2lucy52ZXJzaW9uLlZlcnNpb25NYXRjaGVyOwogCiBw dWJsaWMgY2xhc3MgTGF0ZXN0UmV2aXNpb25TdHJhdGVneSBleHRlbmRzIENvbXBhcmF0b3JMYXRl c3RTdHJhdGVneSB7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgUGF0dGVybiBBTFBI QV9OVU1fUkVHRVggPSBQYXR0ZXJuLmNvbXBpbGUoIihbYS16QS1aXSkoXFxkKSIpOworICAgIHBy aXZhdGUgc3RhdGljIGZpbmFsIFBhdHRlcm4gTlVNX0FMUEhBX1JFR0VYID0gUGF0dGVybi5jb21w aWxlKCIoXFxkKShbYS16QS1aXSkiKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBQYXR0ZXJu IExBQkVMX1JFR0VYID0gUGF0dGVybi5jb21waWxlKCJbX1xcLVxcK10iKTsKKyAgICAKICAgICAv KioKICAgICAgKiBDb21wYXJlcyB0d28gTW9kdWxlUmV2aXNpb25JZCBieSB0aGVpciByZXZpc2lv bi4gUmV2aXNpb25zIGFyZSBjb21wYXJlZCB1c2luZyBhbiBhbGdvcml0aG0KICAgICAgKiBpbnNw aXJlZCBieSBQSFAgdmVyc2lvbl9jb21wYXJlIG9uZS4KQEAgLTM1LDUwICs0MSw2OCBAQAogICAg ICAgICBwdWJsaWMgaW50IGNvbXBhcmUoT2JqZWN0IG8xLCBPYmplY3QgbzIpIHsKICAgICAgICAg ICAgIFN0cmluZyByZXYxID0gKChNb2R1bGVSZXZpc2lvbklkKSBvMSkuZ2V0UmV2aXNpb24oKTsK ICAgICAgICAgICAgIFN0cmluZyByZXYyID0gKChNb2R1bGVSZXZpc2lvbklkKSBvMikuZ2V0UmV2 aXNpb24oKTsKLSAgICAgICAgCi0gICAgICAgICAgICByZXYxID0gcmV2MS5yZXBsYWNlQWxsKCIo W2EtekEtWl0pKFxcZCkiLCAiJDEuJDIiKTsKLSAgICAgICAgICAgIHJldjEgPSByZXYxLnJlcGxh Y2VBbGwoIihcXGQpKFthLXpBLVpdKSIsICIkMS4kMiIpOwotICAgICAgICAgICAgcmV2MiA9IHJl djIucmVwbGFjZUFsbCgiKFthLXpBLVpdKShcXGQpIiwgIiQxLiQyIik7Ci0gICAgICAgICAgICBy ZXYyID0gcmV2Mi5yZXBsYWNlQWxsKCIoXFxkKShbYS16QS1aXSkiLCAiJDEuJDIiKTsKLSAgICAg ICAgCi0gICAgICAgICAgICBTdHJpbmdbXSBwYXJ0czEgPSByZXYxLnNwbGl0KCJbXFwuX1xcLVxc K10iKTsKLSAgICAgICAgICAgIFN0cmluZ1tdIHBhcnRzMiA9IHJldjIuc3BsaXQoIltcXC5fXFwt XFwrXSIpOwotICAgICAgICAKLSAgICAgICAgICAgIGludCBpID0gMDsKLSAgICAgICAgICAgIGZv ciAoOyBpIDwgcGFydHMxLmxlbmd0aCAmJiBpIDwgcGFydHMyLmxlbmd0aDsgaSsrKSB7Ci0gICAg ICAgICAgICAgICAgaWYgKHBhcnRzMVtpXS5lcXVhbHMocGFydHMyW2ldKSkgeworCisgICAgICAg ICAgICBTdHJpbmdbXSBvdXRlclBhcnRzMSA9IHJldjEuc3BsaXQoIltcXC5dIik7CisgICAgICAg ICAgICBTdHJpbmdbXSBvdXRlclBhcnRzMiA9IHJldjIuc3BsaXQoIltcXC5dIik7CisgICAgICAg ICAgICAKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IG91dGVyUGFydHMxLmxlbmd0aCAm JiBpIDwgb3V0ZXJQYXJ0czIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcg b3V0ZXJQYXJ0MSA9IG91dGVyUGFydHMxW2ldOworICAgICAgICAgICAgICAgIFN0cmluZyBvdXRl clBhcnQyID0gb3V0ZXJQYXJ0czJbaV07CisKKyAgICAgICAgICAgICAgICBpZiAob3V0ZXJQYXJ0 MS5lcXVhbHMob3V0ZXJQYXJ0MikpIHsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJvb2xlYW4gaXMxTnVtYmVyID0gaXNO dW1iZXIocGFydHMxW2ldKTsKLSAgICAgICAgICAgICAgICBib29sZWFuIGlzMk51bWJlciA9IGlz TnVtYmVyKHBhcnRzMltpXSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzMU51bWJlciAmJiAhaXMy TnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAgICAgICAg ICAgb3V0ZXJQYXJ0MSA9IEFMUEhBX05VTV9SRUdFWC5tYXRjaGVyKG91dGVyUGFydDEpLnJlcGxh Y2VBbGwoIiQxXyQyIik7CisgICAgICAgICAgICAgICAgb3V0ZXJQYXJ0MSA9IE5VTV9BTFBIQV9S RUdFWC5tYXRjaGVyKG91dGVyUGFydDEpLnJlcGxhY2VBbGwoIiQxXyQyIik7CisgICAgICAgICAg ICAgICAgb3V0ZXJQYXJ0MiA9IEFMUEhBX05VTV9SRUdFWC5tYXRjaGVyKG91dGVyUGFydDIpLnJl cGxhY2VBbGwoIiQxXyQyIik7CisgICAgICAgICAgICAgICAgb3V0ZXJQYXJ0MiA9IE5VTV9BTFBI QV9SRUdFWC5tYXRjaGVyKG91dGVyUGFydDIpLnJlcGxhY2VBbGwoIiQxXyQyIik7CisgICAgICAg ICAgICAgICAgCisgICAgICAgICAgICAgICAgU3RyaW5nW10gaW5uZXJQYXJ0czEgPSBMQUJFTF9S RUdFWC5zcGxpdChvdXRlclBhcnQxKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdbXSBpbm5lclBh cnRzMiA9IExBQkVMX1JFR0VYLnNwbGl0KG91dGVyUGFydDIpOworICAgICAgICAgICAgCisgICAg ICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqIDwgaW5uZXJQYXJ0czEubGVuZ3RoICYmIGogPCBp bm5lclBhcnRzMi5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXJQ YXJ0czFbal0uZXF1YWxzKGlubmVyUGFydHMyW2pdKSkgeworICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg Ym9vbGVhbiBpczFOdW1iZXIgPSBpc051bWJlcihpbm5lclBhcnRzMVtqXSk7CisgICAgICAgICAg ICAgICAgICAgIGJvb2xlYW4gaXMyTnVtYmVyID0gaXNOdW1iZXIoaW5uZXJQYXJ0czJbal0pOwor ICAgICAgICAgICAgICAgICAgICBpZiAoaXMxTnVtYmVyICYmICFpczJOdW1iZXIpIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIGlmIChpczJOdW1iZXIgJiYgIWlzMU51bWJlcikgeworICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgIGlmIChpczFOdW1iZXIgJiYgaXMyTnVtYmVyKSB7CisgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gTG9uZy52YWx1ZU9mKGlubmVyUGFydHMxW2pdKS5jb21wYXJlVG8o TG9uZy52YWx1ZU9mKGlubmVyUGFydHMyW2pdKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgLy8gYm90aCBhcmUgc3RyaW5ncywgd2UgY29tcGFyZSB0aGVtIHRh a2luZyBpbnRvIGFjY291bnQgc3BlY2lhbCBtZWFuaW5nCisgICAgICAgICAgICAgICAgICAgIE1h cCBzcGVjaWFsTWVhbmluZ3MgPSBnZXRTcGVjaWFsTWVhbmluZ3MoKTsKKyAgICAgICAgICAgICAg ICAgICAgSW50ZWdlciBzbTEgPSAoSW50ZWdlcikgc3BlY2lhbE1lYW5pbmdzLmdldChpbm5lclBh cnRzMVtqXS50b0xvd2VyQ2FzZShMb2NhbGUuVVMpKTsKKyAgICAgICAgICAgICAgICAgICAgSW50 ZWdlciBzbTIgPSAoSW50ZWdlcikgc3BlY2lhbE1lYW5pbmdzLmdldChpbm5lclBhcnRzMltqXS50 b0xvd2VyQ2FzZShMb2NhbGUuVVMpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNtMSAhPSBu dWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbTIgPSBzbTIgPT0gbnVsbCA/IG5ldyBJ bnRlZ2VyKDApIDogc20yOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNtMS5jb21w YXJlVG8oc20yKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp ZiAoc20yICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW50 ZWdlcigwKS5jb21wYXJlVG8oc20yKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICByZXR1cm4gaW5uZXJQYXJ0czFbal0uY29tcGFyZVRvKGlubmVyUGFydHMyW2pd KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlzMk51bWJlciAmJiAh aXMxTnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAg ICAgICBpZiAoaSA8IGlubmVyUGFydHMxLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaXNOdW1iZXIoaW5uZXJQYXJ0czFbaV0pID8gMSA6IC0xOwogICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgICBpZiAoaXMxTnVtYmVyICYmIGlzMk51bWJlcikgewotICAgICAg ICAgICAgICAgICAgICByZXR1cm4gTG9uZy52YWx1ZU9mKHBhcnRzMVtpXSkuY29tcGFyZVRvKExv bmcudmFsdWVPZihwYXJ0czJbaV0pKTsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IGlubmVyUGFy dHMyLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNOdW1iZXIoaW5uZXJQ YXJ0czJbaV0pID8gLTEgOiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAv LyBib3RoIGFyZSBzdHJpbmdzLCB3ZSBjb21wYXJlIHRoZW0gdGFraW5nIGludG8gYWNjb3VudCBz cGVjaWFsIG1lYW5pbmcKLSAgICAgICAgICAgICAgICBNYXAgc3BlY2lhbE1lYW5pbmdzID0gZ2V0 U3BlY2lhbE1lYW5pbmdzKCk7Ci0gICAgICAgICAgICAgICAgSW50ZWdlciBzbTEgPSAoSW50ZWdl cikgc3BlY2lhbE1lYW5pbmdzLmdldChwYXJ0czFbaV0udG9Mb3dlckNhc2UoTG9jYWxlLlVTKSk7 Ci0gICAgICAgICAgICAgICAgSW50ZWdlciBzbTIgPSAoSW50ZWdlcikgc3BlY2lhbE1lYW5pbmdz LmdldChwYXJ0czJbaV0udG9Mb3dlckNhc2UoTG9jYWxlLlVTKSk7Ci0gICAgICAgICAgICAgICAg aWYgKHNtMSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNtMiA9IHNtMiA9PSBudWxs ID8gbmV3IEludGVnZXIoMCkgOiBzbTI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzbTEu Y29tcGFyZVRvKHNtMik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChz bTIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEludGVnZXIoMCku Y29tcGFyZVRvKHNtMik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVy biBwYXJ0czFbaV0uY29tcGFyZVRvKHBhcnRzMltpXSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICBpZiAoaSA8IHBhcnRzMS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaXNO dW1iZXIocGFydHMxW2ldKSA/IDEgOiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm IChpIDwgcGFydHMyLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHJldHVybiBpc051bWJlcihw YXJ0czJbaV0pID8gLTEgOiAxOwotICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZihvdXRl clBhcnRzMS5sZW5ndGggPiBvdXRlclBhcnRzMi5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gMTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihvdXRlclBhcnRzMS5sZW5ndGggPCBvdXRl clBhcnRzMi5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAg ICB9IAorICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkBA IC04Niw3ICsxMTAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHN0ci5tYXRjaGVzKCJcXGQrIik7 CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKICAgICAvKioKICAgICAgKiBDb21wYXJlcyB0d28g QXJ0aWZhY3RJbmZvIGJ5IHRoZWlyIHJldmlzaW9uLiBSZXZpc2lvbnMgYXJlIGNvbXBhcmVkIHVz aW5nIGFuIGFsZ29yaXRobQogICAgICAqIGluc3BpcmVkIGJ5IFBIUCB2ZXJzaW9uX2NvbXBhcmUg b25lLCB1bmxlc3MgYSBkeW5hbWljIHJldmlzaW9uIGlzIGdpdmVuLCBpbiB3aGljaCBjYXNlIHRo ZQo= ------=_Part_29669_21879089.1220199390820 Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org For additional commands, e-mail: dev-help@ant.apache.org ------=_Part_29669_21879089.1220199390820--