You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by ma...@apache.org on 2010/06/09 20:40:35 UTC

svn commit: r953111 - in /ant/ivy/core/trunk: ./ src/java/org/apache/ivy/core/cache/ src/java/org/apache/ivy/core/settings/ src/java/org/apache/ivy/plugins/parser/ src/java/org/apache/ivy/plugins/parser/m2/ src/java/org/apache/ivy/plugins/parser/xml/ s...

Author: maartenc
Date: Wed Jun  9 18:40:35 2010
New Revision: 953111

URL: http://svn.apache.org/viewvc?rev=953111&view=rev
Log:
FIX: Namespace rules not properly applied to parent projects (IVY-1186)

Added:
    ant/ivy/core/trunk/test/repositories/parentPom/ivysettings-namespace.xml   (with props)
Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ModuleDescriptorParser.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ParserSettings.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Wed Jun  9 18:40:35 2010
@@ -126,6 +126,7 @@ for detailed view of each issue, please 
 - IMPROVEMENT: Trace a message when a property file referenced from the settings doesn't exixts (IVY-1074)
 - IMPROVEMENT: use defaultconf in combination with defaultconfmapping (IVY-1135) (thanks to Jon Schneider)
 
+- FIX: Namespace rules not properly applied to parent projects (IVY-1186)
 - FIX: LatestVersionMatcher.needModuleDescriptor() does not honor custom statuses (IVY-1170) (thanks to Carl Quinn)
 - FIX: Proxy authentication could fail when using commons-httpclient 
 - FIX: Packager resolver always extracts all files from archives even when the packaging instructions contains include tags (IVY-1179) (thanks to Stefan De Boey)

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java Wed Jun  9 18:40:35 2010
@@ -52,6 +52,7 @@ import org.apache.ivy.plugins.repository
 import org.apache.ivy.plugins.repository.Resource;
 import org.apache.ivy.plugins.repository.ResourceDownloader;
 import org.apache.ivy.plugins.repository.ResourceHelper;
+import org.apache.ivy.plugins.resolver.AbstractResolver;
 import org.apache.ivy.plugins.resolver.DependencyResolver;
 import org.apache.ivy.plugins.resolver.util.ResolvedResource;
 import org.apache.ivy.util.Checks;
@@ -646,14 +647,16 @@ public class DefaultRepositoryCacheManag
     private class MyModuleDescriptorProvider implements ModuleDescriptorProvider {
         
         private final ModuleDescriptorParser mdParser;
+        private final ParserSettings settings;
 
-        public MyModuleDescriptorProvider(ModuleDescriptorParser mdParser) {
-            this.mdParser = mdParser;            
+        public MyModuleDescriptorProvider(ModuleDescriptorParser mdParser, ParserSettings settings) {
+            this.mdParser = mdParser;
+            this.settings = settings;
         }
         
         public ModuleDescriptor provideModule(ParserSettings ivySettings, 
                 File descriptorURL, boolean validate) throws ParseException, IOException {
-            return mdParser.parseDescriptor(ivySettings, descriptorURL.toURI().toURL(), validate);
+            return mdParser.parseDescriptor(settings, descriptorURL.toURI().toURL(), validate);
         }
     }
     
@@ -661,15 +664,15 @@ public class DefaultRepositoryCacheManag
             CacheMetadataOptions options, File ivyFile) 
             throws ParseException, IOException {
         ModuleDescriptorMemoryCache cache = getMemoryCache();
-        ModuleDescriptorProvider mdProvider = new MyModuleDescriptorProvider(mdParser); 
+        ModuleDescriptorProvider mdProvider = new MyModuleDescriptorProvider(mdParser, settings); 
         return cache.get(ivyFile, settings, options.isValidate(), mdProvider);
     }
 
     private ModuleDescriptor getStaledMd(ModuleDescriptorParser mdParser, 
-            CacheMetadataOptions options, File ivyFile) 
+            CacheMetadataOptions options, File ivyFile, ParserSettings parserSettings) 
             throws ParseException, IOException {
         ModuleDescriptorMemoryCache cache = getMemoryCache();
-        ModuleDescriptorProvider mdProvider = new MyModuleDescriptorProvider(mdParser); 
+        ModuleDescriptorProvider mdProvider = new MyModuleDescriptorProvider(mdParser, parserSettings); 
         return cache.getStale(ivyFile, settings, options.isValidate(), mdProvider);
     }
 
@@ -983,7 +986,11 @@ public class DefaultRepositoryCacheManag
             try {
                 ModuleDescriptorParser parser = ModuleDescriptorParserRegistry
                         .getInstance().getParser(mdRef.getResource());
-                ModuleDescriptor md = getStaledMd(parser, options, report.getLocalFile()); 
+                ParserSettings parserSettings = settings;
+                if (resolver instanceof AbstractResolver) {
+                    parserSettings = ((AbstractResolver) resolver).getParserSettings();
+                }
+                ModuleDescriptor md = getStaledMd(parser, options, report.getLocalFile(), parserSettings); 
                 if (md == null) {
                     throw new IllegalStateException(
                         "module descriptor parser returned a null module descriptor, " 

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java Wed Jun  9 18:40:35 2010
@@ -131,6 +131,10 @@ class ParserSettingsMonitor {
             return delegatedSettings.getDefaultBranch(moduleId);
         }
 
+        public Namespace getContextNamespace() {
+            return delegatedSettings.getContextNamespace();
+        }
+        
         public Map substitute(Map strings) {
             Map substituted = new LinkedHashMap();
             for (Iterator it = strings.entrySet().iterator(); it.hasNext();) {

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java Wed Jun  9 18:40:35 2010
@@ -1460,5 +1460,8 @@ public class IvySettings implements Sort
         }
     }
 
-    
+    public Namespace getContextNamespace() {
+        return Namespace.SYSTEM_NAMESPACE;
+    }
+
 }

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ModuleDescriptorParser.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ModuleDescriptorParser.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ModuleDescriptorParser.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ModuleDescriptorParser.java Wed Jun  9 18:40:35 2010
@@ -34,7 +34,7 @@ public interface ModuleDescriptorParser 
 
     public ModuleDescriptor parseDescriptor(ParserSettings ivySettings, URL descriptorURL,
             Resource res, boolean validate) throws ParseException, IOException;
-
+    
     /**
      * Convert a module descriptor to an ivy file. This method MUST close the given input stream
      * when job is finished

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ParserSettings.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ParserSettings.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ParserSettings.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/ParserSettings.java Wed Jun  9 18:40:35 2010
@@ -28,6 +28,7 @@ import org.apache.ivy.core.module.status
 import org.apache.ivy.plugins.conflict.ConflictManager;
 import org.apache.ivy.plugins.matcher.PatternMatcher;
 import org.apache.ivy.plugins.namespace.Namespace;
+import org.apache.ivy.plugins.namespace.NamespaceTransformer;
 import org.apache.ivy.plugins.resolver.DependencyResolver;
 
 public interface ParserSettings {
@@ -53,5 +54,10 @@ public interface ParserSettings {
     File resolveFile(String filename);
     
     String getDefaultBranch(ModuleId moduleId);
+    
+    /**
+     * Returns the namespace context in which the current descriptor is parsed.
+     */
+    Namespace getContextNamespace();
 
 }

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java Wed Jun  9 18:40:35 2010
@@ -41,6 +41,7 @@ import org.apache.ivy.core.resolve.Resol
 import org.apache.ivy.core.resolve.ResolveEngine;
 import org.apache.ivy.core.resolve.ResolveOptions;
 import org.apache.ivy.core.resolve.ResolvedModuleRevision;
+import org.apache.ivy.plugins.namespace.NameSpaceHelper;
 import org.apache.ivy.plugins.parser.ModuleDescriptorParser;
 import org.apache.ivy.plugins.parser.ParserSettings;
 import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter;
@@ -114,7 +115,7 @@ public final class PomModuleDescriptorPa
                                                                     this, res, ivySettings);
         
         try {           
-            PomReader domReader = new PomReader(res);            
+            PomReader domReader = new PomReader(descriptorURL, res);            
             domReader.setProperty("parent.version", domReader.getParentVersion());
             domReader.setProperty("parent.groupId", domReader.getParentGroupId());
             domReader.setProperty("project.parent.version", domReader.getParentVersion());
@@ -348,6 +349,7 @@ public final class PomModuleDescriptorPa
             // TODO: Throw exception here?
             return null;
         } else {
+            dd = NameSpaceHelper.toSystem(dd, ivySettings.getContextNamespace());
             ResolvedModuleRevision otherModule = resolver.getDependency(dd, data);
             return otherModule;
         }

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java Wed Jun  9 18:40:35 2010
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.LineNumberReader;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -37,6 +38,7 @@ import org.apache.ivy.core.module.id.Mod
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.plugins.repository.Resource;
 import org.apache.ivy.util.XMLHelper;
+import org.apache.ivy.util.url.URLHandlerRegistry;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -87,8 +89,8 @@ public class PomReader {
     private final Element projectElement;
     private final Element parentElement;
     
-    public PomReader(Resource res) throws IOException, SAXException {
-        InputStream stream = new AddDTDFilterInputStream(res.openStream());
+    public PomReader(URL descriptorURL, Resource res) throws IOException, SAXException {
+        InputStream stream = new AddDTDFilterInputStream(URLHandlerRegistry.getDefault().openStream(descriptorURL));
         try {
             Document pomDomDoc = XMLHelper.parseToDom(stream, res, new EntityResolver() {
                 public InputSource resolveEntity(String publicId, String systemId) 

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java Wed Jun  9 18:40:35 2010
@@ -44,6 +44,7 @@ import org.apache.ivy.core.resolve.Resol
 import org.apache.ivy.plugins.conflict.ConflictManager;
 import org.apache.ivy.plugins.conflict.FixedConflictManager;
 import org.apache.ivy.plugins.matcher.PatternMatcher;
+import org.apache.ivy.plugins.namespace.NameSpaceHelper;
 import org.apache.ivy.plugins.namespace.Namespace;
 import org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser;
 import org.apache.ivy.plugins.parser.ModuleDescriptorParser;
@@ -572,6 +573,7 @@ public class XmlModuleDescriptorParser e
                 // TODO: Throw exception here?
                 return null;
             } else {
+                dd = NameSpaceHelper.toSystem(dd, getSettings().getContextNamespace());
                 ResolvedModuleRevision otherModule = resolver.getDependency(dd, data);
                 if (otherModule == null) {
                     throw new ParseException("Unable to find " + parentMrid.toString(), 0);

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java Wed Jun  9 18:40:35 2010
@@ -25,11 +25,13 @@ import java.util.Map;
 
 import org.apache.ivy.core.IvyContext;
 import org.apache.ivy.core.LogOptions;
+import org.apache.ivy.core.RelativeUrlResolver;
 import org.apache.ivy.core.cache.ArtifactOrigin;
 import org.apache.ivy.core.cache.CacheDownloadOptions;
 import org.apache.ivy.core.cache.CacheMetadataOptions;
 import org.apache.ivy.core.cache.DownloadListener;
 import org.apache.ivy.core.cache.RepositoryCacheManager;
+import org.apache.ivy.core.cache.ResolutionCacheManager;
 import org.apache.ivy.core.event.EventManager;
 import org.apache.ivy.core.event.download.EndArtifactDownloadEvent;
 import org.apache.ivy.core.event.download.NeedArtifactEvent;
@@ -37,7 +39,9 @@ import org.apache.ivy.core.event.downloa
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
+import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.core.module.status.StatusManager;
 import org.apache.ivy.core.report.ArtifactDownloadReport;
 import org.apache.ivy.core.report.DownloadReport;
 import org.apache.ivy.core.report.DownloadStatus;
@@ -51,10 +55,13 @@ import org.apache.ivy.core.search.Module
 import org.apache.ivy.core.search.OrganisationEntry;
 import org.apache.ivy.core.search.RevisionEntry;
 import org.apache.ivy.core.settings.Validatable;
+import org.apache.ivy.plugins.conflict.ConflictManager;
 import org.apache.ivy.plugins.latest.ArtifactInfo;
 import org.apache.ivy.plugins.latest.LatestStrategy;
+import org.apache.ivy.plugins.matcher.PatternMatcher;
 import org.apache.ivy.plugins.namespace.NameSpaceHelper;
 import org.apache.ivy.plugins.namespace.Namespace;
+import org.apache.ivy.plugins.parser.ParserSettings;
 import org.apache.ivy.plugins.resolver.ChainResolver.ResolvedModuleRevisionArtifactInfo;
 import org.apache.ivy.plugins.resolver.util.HasLatestStrategy;
 import org.apache.ivy.plugins.resolver.util.ResolvedResource;
@@ -107,6 +114,10 @@ public abstract class AbstractResolver 
     public ResolverSettings getSettings() {
         return settings;
     }
+    
+    public ParserSettings getParserSettings() {
+        return new ResolverParserSettings();
+    }
 
     public void setSettings(ResolverSettings ivy) {
         settings = ivy;
@@ -551,4 +562,55 @@ public abstract class AbstractResolver 
             + rmr.getResolver().getName();
     }
 
+    private class ResolverParserSettings implements ParserSettings {
+
+        public ConflictManager getConflictManager(String name) {
+            return AbstractResolver.this.getSettings().getConflictManager(name);
+        }
+
+        public Namespace getContextNamespace() {
+            return AbstractResolver.this.getNamespace();
+        }
+
+        public String getDefaultBranch(ModuleId moduleId) {
+            return AbstractResolver.this.getSettings().getDefaultBranch(moduleId);
+        }
+
+        public PatternMatcher getMatcher(String matcherName) {
+            return AbstractResolver.this.getSettings().getMatcher(matcherName);
+        }
+
+        public Namespace getNamespace(String namespace) {
+            return AbstractResolver.this.getSettings().getNamespace(namespace);
+        }
+
+        public RelativeUrlResolver getRelativeUrlResolver() {
+            return AbstractResolver.this.getSettings().getRelativeUrlResolver();
+        }
+
+        public ResolutionCacheManager getResolutionCacheManager() {
+            return AbstractResolver.this.getSettings().getResolutionCacheManager();
+        }
+
+        public DependencyResolver getResolver(ModuleRevisionId mRevId) {
+            return AbstractResolver.this.getSettings().getResolver(mRevId);
+        }
+
+        public StatusManager getStatusManager() {
+            return AbstractResolver.this.getSettings().getStatusManager();
+        }
+
+        public File resolveFile(String filename) {
+            return AbstractResolver.this.getSettings().resolveFile(filename);
+        }
+
+        public Map substitute(Map strings) {
+            return AbstractResolver.this.getSettings().substitute(strings);
+        }
+
+        public String substitute(String value) {
+            return AbstractResolver.this.getSettings().substitute(value);
+        }
+        
+    }
 }

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java Wed Jun  9 18:40:35 2010
@@ -101,7 +101,7 @@ public class RepositoryResolver extends 
                                 ModuleDescriptorParserRegistry.getInstance().getParser(res);
                             ModuleDescriptor md = 
                                 parser.parseDescriptor(
-                                    getSettings(), temp.toURI().toURL(), res, false);
+                                    getParserSettings(), temp.toURI().toURL(), res, false);
                             revision = md.getRevision();
                             if ((revision == null) || (revision.length() == 0)) {
                                 revision = "working@" + name;

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java?rev=953111&r1=953110&r2=953111&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java (original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java Wed Jun  9 18:40:35 2010
@@ -4305,6 +4305,54 @@ public class ResolveTest extends TestCas
             "test3", "jar", "jar").exists());
     }
     
+    public void testResolveMaven2ParentPomWithNamespace() throws Exception {
+        // Cfr IVY-1186
+        Ivy ivy = new Ivy();
+        ivy.configure(new File("test/repositories/parentPom/ivysettings-namespace.xml"));
+        
+        ResolveReport report = ivy.resolve(ModuleRevisionId.newInstance("org.apache.systemDm", "test", "1.0"),
+            getResolveOptions(new String[] {"*(public)"}), true);
+        assertNotNull(report);
+        ModuleDescriptor md = report.getModuleDescriptor();
+        assertNotNull(md);
+//        assertEquals(mrid, md.getModuleRevisionId());
+//        assertTrue(getResolvedIvyFileInCache(mrid).exists());
+
+        //test the report to make sure the right dependencies are listed
+        List dependencies = report.getDependencies();
+        assertEquals(3, dependencies.size()); // the test module + it's 2 dependencies
+
+        IvyNode ivyNode = (IvyNode) dependencies.get(0);
+        assertNotNull(ivyNode);
+        ModuleRevisionId mrid = ModuleRevisionId.newInstance("org.apache.systemDm", "test", "1.0");
+        assertEquals(mrid, ivyNode.getId());
+        // dependencies
+        assertTrue(getIvyFileInCache(
+            ModuleRevisionId.newInstance("org.apache.systemDm", "test", "1.0")).exists());
+        assertTrue(getArchiveFileInCache(ivy, "org.apache.systemDm", "test", "1.0",
+            "test", "jar", "jar").exists());
+
+        ivyNode = (IvyNode) dependencies.get(1);
+        assertNotNull(ivyNode);
+        mrid = ModuleRevisionId.newInstance("org.apache.systemDm", "test2", "2.0");
+        assertEquals(mrid, ivyNode.getId());
+        // dependencies
+        assertTrue(getIvyFileInCache(
+            ModuleRevisionId.newInstance("org.apache.systemDm", "test2", "2.0")).exists());
+        assertTrue(getArchiveFileInCache(ivy, "org.apache.systemDm", "test2", "2.0",
+            "test2", "jar", "jar").exists());
+        
+        ivyNode = (IvyNode) dependencies.get(2);
+        assertNotNull(ivyNode);
+        mrid = ModuleRevisionId.newInstance("org.apache.systemDm", "test3", "1.0");
+        assertEquals(mrid, ivyNode.getId());
+        // dependencies
+        assertTrue(getIvyFileInCache(
+            ModuleRevisionId.newInstance("org.apache.systemDm", "test3", "1.0")).exists());
+        assertTrue(getArchiveFileInCache(ivy, "org.apache.systemDm", "test3", "1.0",
+            "test3", "jar", "jar").exists());
+    }
+
     public void testResolveMaven2ParentPomDualResolver() throws Exception {
         // test has a dependency on test2 but there is no version listed. test has a parent of parent(2.0) 
         // then parent2. Both parents have a dependencyManagement element for test2, and each list the version as

Added: ant/ivy/core/trunk/test/repositories/parentPom/ivysettings-namespace.xml
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/parentPom/ivysettings-namespace.xml?rev=953111&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/parentPom/ivysettings-namespace.xml (added)
+++ ant/ivy/core/trunk/test/repositories/parentPom/ivysettings-namespace.xml Wed Jun  9 18:40:35 2010
@@ -0,0 +1,43 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<ivysettings>
+	<settings defaultCache="${ivy.basedir}/build/cache" defaultResolver="default" />
+	<resolvers>
+        <chain name="default">
+            <filesystem name="m2" m2compatible="true" namespace="test">
+                <ivy pattern="${ivy.settings.dir}/[organisation]/[module]/[revision]/[module]-[revision].pom"/>
+                <artifact pattern="${ivy.settings.dir}/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/>
+            </filesystem>
+        </chain>
+	</resolvers>
+    <namespaces>
+       <namespace name="test">
+            <rule>
+                <fromsystem>
+                    <src org="(org\.apache).systemDm" module=".*" />
+                    <dest org="$o1.dm" module="$m0" />
+                </fromsystem>
+                <tosystem>
+                    <src org="(org\.apache)\.dm" module=".*" />
+                    <dest org="$o1.systemDm" module="$m0" />
+                </tosystem>
+            </rule>t
+        </namespace>
+    </namespaces>
+</ivysettings>

Propchange: ant/ivy/core/trunk/test/repositories/parentPom/ivysettings-namespace.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain