Return-Path: Delivered-To: apmail-ant-notifications-archive@minotaur.apache.org Received: (qmail 58517 invoked from network); 10 Sep 2009 00:50:20 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 10 Sep 2009 00:50:20 -0000 Received: (qmail 1785 invoked by uid 500); 10 Sep 2009 00:50:20 -0000 Delivered-To: apmail-ant-notifications-archive@ant.apache.org Received: (qmail 1748 invoked by uid 500); 10 Sep 2009 00:50:19 -0000 Mailing-List: contact notifications-help@ant.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ant.apache.org Delivered-To: mailing list notifications@ant.apache.org Received: (qmail 1739 invoked by uid 99); 10 Sep 2009 00:50:19 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Sep 2009 00:50:19 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Sep 2009 00:50:17 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 871D5234C1EA for ; Wed, 9 Sep 2009 17:49:57 -0700 (PDT) Message-ID: <1979646248.1252543797552.JavaMail.jira@brutus> Date: Wed, 9 Sep 2009 17:49:57 -0700 (PDT) From: "Michael Scheetz (JIRA)" To: notifications@ant.apache.org Subject: [jira] Updated: (IVY-1115) ResolveEngine.getDependencies does not work using extra attributes. In-Reply-To: <2066401860.1251303359395.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/IVY-1115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Michael Scheetz updated IVY-1115: --------------------------------- Description: I wrote these two tests for 'test/java/org/apache/ivy/core/resolve/ResolveEngineTest.java'. The one using extra attributes to build a dependency list does not return the complete set of dependencies. public void testBuildDependencyList_ExtraAtt() throws Exception { System.setProperty("ivy.local.default.root", new File("test/repositories/extra-attributes").getAbsolutePath()); System.setProperty("ivy.settings.file", "test/repositories/extra-attributes/ivysettings.xml"); String org = "apache"; String mod = "mymodule"; String rev = "1749"; Map extraAttributes = new HashMap(); extraAttributes.put("eatt", "task2"); extraAttributes.put("eatt2", "test"); ResolveEngine engine = new ResolveEngine(ivy.getSettings(), ivy.getEventManager(), ivy.getSortEngine()); ModuleRevisionId mRevId = ModuleRevisionId.newInstance(org, mod, rev, extraAttributes); DefaultModuleDescriptor md = DefaultModuleDescriptor.newCallerInstance(mRevId, new String[] {"*"}, true, false); String resolveId = ResolveOptions.getDefaultResolveId(md); ResolveOptions options = new ResolveOptions(); options.setConfs(new String[] {"*"}); options.setResolveId(resolveId); ResolveReport report = new ResolveReport(md, options.getResolveId()); IvyNode[] deps = engine.getDependencies(md, options, report); assertEquals(2, deps.length); assertTrue(Arrays.toString(deps).contains("apache#mymodule;1749")); assertTrue(Arrays.toString(deps).contains("apache#module2;1976")); } public void testBuildDependencyList_MultiDeps() throws Exception { System.setProperty("ivy.local.default.root", new File("test/repositories/1").getAbsolutePath()); System.setProperty("ivy.settings.file", "test/repositories/ivysettings-1.xml"); String org = "org2"; String mod = "mod2.3"; String rev = "0.4"; ResolveEngine engine = new ResolveEngine(ivy.getSettings(), ivy.getEventManager(), ivy.getSortEngine()); ModuleRevisionId mRevId = ModuleRevisionId.newInstance(org, mod, rev); DefaultModuleDescriptor md = DefaultModuleDescriptor.newCallerInstance(mRevId, new String[] {"*"}, true, false); String resolveId = ResolveOptions.getDefaultResolveId(md); ResolveOptions options = new ResolveOptions(); options.setConfs(new String[] {"*"}); options.setResolveId(resolveId); ResolveReport report = new ResolveReport(md, options.getResolveId()); IvyNode[] deps = engine.getDependencies(md, options, report); assertEquals(4, deps.length); } Update: There seems to be parsing issue using extra attributes on the artifact. Lookup with only module level extra attributes seems to work. java.text.ParseException: [xml parsing: ivy.xml.original:28:60: cvc-complex-type.3.2.2: Attribute 'platform' is not allowed to appear in element 'artifact'. in file:/Project/ivy/test/repositories/extra-attributes/cache/apache/mymodule/task2/1749/ivy.xml.original , xml parsing: ivy.xml.original:29:58: cvc-complex-type.3.2.2: Attribute 'platform' is not allowed to appear in element 'artifact'. in file:/Project/ivy/test/repositories/extra-attributes/cache/apache/mymodule/task2/1749/ivy.xml.original ] at org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractParser.checkErrors(AbstractModuleDescriptorParser.java:89) at org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractParser.getModuleDescriptor(AbstractModuleDescriptorParser.java:342) at org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser.parseDescriptor(XmlModuleDescriptorParser.java:103) at org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser.parseDescriptor(AbstractModuleDescriptorParser.java:48) at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:638) at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68) at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:655) at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:942) at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:542) at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:263) at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:170) at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:274) at org.apache.ivy.core.resolve.VisitNodeTest.testLoadData_ExtraAtt_artifact(VisitNodeTest.java:84) was: I wrote these two tests for 'test/java/org/apache/ivy/core/resolve/ResolveEngineTest.java'. The one using extra attributes to build a dependency list does not return the complete set of dependencies. public void testBuildDependencyList_ExtraAtt() throws Exception { System.setProperty("ivy.local.default.root", new File("test/repositories/extra-attributes").getAbsolutePath()); System.setProperty("ivy.settings.file", "test/repositories/extra-attributes/ivysettings.xml"); String org = "apache"; String mod = "mymodule"; String rev = "1749"; Map extraAttributes = new HashMap(); extraAttributes.put("eatt", "task2"); extraAttributes.put("eatt2", "test"); ResolveEngine engine = new ResolveEngine(ivy.getSettings(), ivy.getEventManager(), ivy.getSortEngine()); ModuleRevisionId mRevId = ModuleRevisionId.newInstance(org, mod, rev, extraAttributes); DefaultModuleDescriptor md = DefaultModuleDescriptor.newCallerInstance(mRevId, new String[] {"*"}, true, false); String resolveId = ResolveOptions.getDefaultResolveId(md); ResolveOptions options = new ResolveOptions(); options.setConfs(new String[] {"*"}); options.setResolveId(resolveId); ResolveReport report = new ResolveReport(md, options.getResolveId()); IvyNode[] deps = engine.getDependencies(md, options, report); assertEquals(2, deps.length); assertTrue(Arrays.toString(deps).contains("apache#mymodule;1749")); assertTrue(Arrays.toString(deps).contains("apache#module2;1976")); } public void testBuildDependencyList_MultiDeps() throws Exception { System.setProperty("ivy.local.default.root", new File("test/repositories/1").getAbsolutePath()); System.setProperty("ivy.settings.file", "test/repositories/ivysettings-1.xml"); String org = "org2"; String mod = "mod2.3"; String rev = "0.4"; ResolveEngine engine = new ResolveEngine(ivy.getSettings(), ivy.getEventManager(), ivy.getSortEngine()); ModuleRevisionId mRevId = ModuleRevisionId.newInstance(org, mod, rev); DefaultModuleDescriptor md = DefaultModuleDescriptor.newCallerInstance(mRevId, new String[] {"*"}, true, false); String resolveId = ResolveOptions.getDefaultResolveId(md); ResolveOptions options = new ResolveOptions(); options.setConfs(new String[] {"*"}); options.setResolveId(resolveId); ResolveReport report = new ResolveReport(md, options.getResolveId()); IvyNode[] deps = engine.getDependencies(md, options, report); assertEquals(4, deps.length); } Update: So far, I have traced the issue down to the VisitNode.loadData(String[], boolean) method. This method returns false when extra attributes are used, even if there are additional dependencies to follow. >From there a call is made to module = resolver.getDependency(dependencyDescriptor, data); which returns a null module. Within the resolver, the call ResolvedResource ivyRef = findIvyFileRef(nsDd, data); returns a null ivyRef. > ResolveEngine.getDependencies does not work using extra attributes. > ------------------------------------------------------------------- > > Key: IVY-1115 > URL: https://issues.apache.org/jira/browse/IVY-1115 > Project: Ivy > Issue Type: Bug > Components: Core > Affects Versions: 2.1.0-RC2 > Environment: Ivy SVN version 808087 > Apache Ant version 1.7.0 compiled on December 13 2006 > Reporter: Michael Scheetz > Fix For: 2.1.0-RC2 > > Attachments: IVY-1115.tests.svn.patch > > Original Estimate: 48h > Remaining Estimate: 48h > > I wrote these two tests for 'test/java/org/apache/ivy/core/resolve/ResolveEngineTest.java'. The one using extra attributes to build a dependency list does not return the complete set of dependencies. > public void testBuildDependencyList_ExtraAtt() throws Exception { > System.setProperty("ivy.local.default.root", new File("test/repositories/extra-attributes").getAbsolutePath()); > System.setProperty("ivy.settings.file", "test/repositories/extra-attributes/ivysettings.xml"); > String org = "apache"; > String mod = "mymodule"; > String rev = "1749"; > Map extraAttributes = new HashMap(); > extraAttributes.put("eatt", "task2"); > extraAttributes.put("eatt2", "test"); > > ResolveEngine engine = new ResolveEngine(ivy.getSettings(), > ivy.getEventManager(), ivy.getSortEngine()); > ModuleRevisionId mRevId = ModuleRevisionId.newInstance(org, mod, rev, extraAttributes); > DefaultModuleDescriptor md = DefaultModuleDescriptor.newCallerInstance(mRevId, new String[] {"*"}, true, false); > String resolveId = ResolveOptions.getDefaultResolveId(md); > ResolveOptions options = new ResolveOptions(); > options.setConfs(new String[] {"*"}); > options.setResolveId(resolveId); > ResolveReport report = new ResolveReport(md, options.getResolveId()); > IvyNode[] deps = engine.getDependencies(md, options, report); > assertEquals(2, deps.length); > assertTrue(Arrays.toString(deps).contains("apache#mymodule;1749")); > assertTrue(Arrays.toString(deps).contains("apache#module2;1976")); > } > > public void testBuildDependencyList_MultiDeps() throws Exception { > System.setProperty("ivy.local.default.root", new File("test/repositories/1").getAbsolutePath()); > System.setProperty("ivy.settings.file", "test/repositories/ivysettings-1.xml"); > String org = "org2"; > String mod = "mod2.3"; > String rev = "0.4"; > ResolveEngine engine = new ResolveEngine(ivy.getSettings(), > ivy.getEventManager(), ivy.getSortEngine()); > ModuleRevisionId mRevId = ModuleRevisionId.newInstance(org, mod, rev); > DefaultModuleDescriptor md = DefaultModuleDescriptor.newCallerInstance(mRevId, new String[] {"*"}, true, false); > String resolveId = ResolveOptions.getDefaultResolveId(md); > ResolveOptions options = new ResolveOptions(); > options.setConfs(new String[] {"*"}); > options.setResolveId(resolveId); > ResolveReport report = new ResolveReport(md, options.getResolveId()); > IvyNode[] deps = engine.getDependencies(md, options, report); > assertEquals(4, deps.length); > } > Update: > There seems to be parsing issue using extra attributes on the artifact. Lookup with only module level extra attributes seems to work. > java.text.ParseException: [xml parsing: ivy.xml.original:28:60: cvc-complex-type.3.2.2: Attribute 'platform' is not allowed to appear in element 'artifact'. in file:/Project/ivy/test/repositories/extra-attributes/cache/apache/mymodule/task2/1749/ivy.xml.original > , xml parsing: ivy.xml.original:29:58: cvc-complex-type.3.2.2: Attribute 'platform' is not allowed to appear in element 'artifact'. in file:/Project/ivy/test/repositories/extra-attributes/cache/apache/mymodule/task2/1749/ivy.xml.original > ] > at org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractParser.checkErrors(AbstractModuleDescriptorParser.java:89) > at org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractParser.getModuleDescriptor(AbstractModuleDescriptorParser.java:342) > at org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser.parseDescriptor(XmlModuleDescriptorParser.java:103) > at org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser.parseDescriptor(AbstractModuleDescriptorParser.java:48) > at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:638) > at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68) > at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:655) > at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:942) > at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:542) > at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:263) > at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:170) > at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:274) > at org.apache.ivy.core.resolve.VisitNodeTest.testLoadData_ExtraAtt_artifact(VisitNodeTest.java:84) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.