Author: hibou
Date: Sat Dec 28 16:57:20 2013
New Revision: 1553873

URL: http://svn.apache.org/r1553873
Log:
New OSGi resolver 'osgi-agg' : a chain resolver which better handle OSGi 
dependencies

Added:
    ant/ivy/core/trunk/doc/resolver/osgiagg.html   (with props)
    
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedOSGiResolver.java
   (with props)
    
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedRepoDescriptor.java
   (with props)
    
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/AggregatedOSGiResolverTest.java
   (with props)
    ant/ivy/core/trunk/test/test-repo/multi-osgi/
    ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/
    ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/obr.xml   (with props)
    
ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/org.apache.ivy.osgi.testbundle.importing1_3.2.1.jar
    
ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/org.apache.ivy.osgi.testbundle1_1.2.3.jar
    ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/
    ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/obr.xml   (with props)
    
ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/org.apache.ivy.osgi.testbundle.importing2_3.2.1.jar
    
ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/org.apache.ivy.osgi.testbundle2_1.2.3.jar
Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/doc/toc.json
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/typedef.properties

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=1553873&r1=1553872&r2=1553873&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Sat Dec 28 16:57:20 2013
@@ -149,6 +149,7 @@ for detailed view of each issue, please 
 - NEW: Exposing some parent metadata (organisation, module, revision, branch) 
as properties (IVY-1288)
 - NEW: symlinkmass feature based on symlink feature of ivy:retrieve (IVY-1252) 
(Thanks to Gene Smith)
 - NEW: Agent authentication for SSH and SFTP transports (IVY-1421)
+- NEW: New OSGi resolver 'osgi-agg': a chain resolver dedicated to better 
handle OSGi dependencies
 
 - IMPROVEMENT: New LockStrategy available based on NIO FileLocks (IVY-1424)
 - IMPROVEMENT: Optional <include> ivysettings directives (IVY-1392) (thanks to 
Yanus Poluektovich)

Added: ant/ivy/core/trunk/doc/resolver/osgiagg.html
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/resolver/osgiagg.html?rev=1553873&view=auto
==============================================================================
--- ant/ivy/core/trunk/doc/resolver/osgiagg.html (added)
+++ ant/ivy/core/trunk/doc/resolver/osgiagg.html Sat Dec 28 16:57:20 2013
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd";>
+<!--
+   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.    
+-->
+<html>
+<head>
+       <script type="text/javascript">var xookiConfig = {level: 1};</script>   
+       <script type="text/javascript" src="../xooki/xooki.js"></script>
+</head>
+<body>
+       <textarea id="xooki-source">
+<table class="resolver">
+<tr><td class="title">Tag</td><td class="value">osgi-agg</td></tr>
+<tr><td class="title">Handle latest</td><td class="value">yes</td></tr>
+<tr><td class="title">Handle publish</td><td class="value">no</td></tr>
+</table>
+
+<span class="since">since 2.4</span>
+
+<span class="tagdoc" id="ivysettings.resolvers.osgi-agg">This resolver is one 
of the resolver which supports <a href="../osgi.html">OSGi&#153;</a> 
dependencies.
+
+This resolvers is like a classic <a href="">chain</a> resolver, but which 
better support OSGi metadata.
+
+<h1>Attributes</h1>
+This resolver shares the <a href="../settings/resolvers.html#common">common 
attributes</a> of composite resolvers.
+
+<h1>Elements</h1>
+As sub element, this resolver accept any kind of OSGi resolver: <a 
href="../obr.html">obr</a>, <a href="../updatesite.html">updatesite</a>, or any 
other <tt>osgi-agg</tt>.
+
+<h1>Examples</h1>
+<code type="xml">
+<updatesite name="ivyde-updatesite" 
url="http://www.apache.org/dist/ant/ivyde/updatesite"; />
+<obr name="felix-repo" repoXmlURL="http://felix.apache.org/obr/releases.xml"; />
+<osgi-agg name="all-osgi">
+    <resolver ref="ivyde-updatesite" />
+    <resolver ref="felix-repo" />
+</osgi-agg>
+</code>
+An aggregated OSGi reporsory composed of the Apache IvyDE Eclipse update site 
and the Felix OBR.
+       </textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Propchange: ant/ivy/core/trunk/doc/resolver/osgiagg.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ant/ivy/core/trunk/doc/resolver/osgiagg.html
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: ant/ivy/core/trunk/doc/resolver/osgiagg.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Modified: ant/ivy/core/trunk/doc/toc.json
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/toc.json?rev=1553873&r1=1553872&r2=1553873&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/toc.json (original)
+++ ant/ivy/core/trunk/doc/toc.json Sat Dec 28 16:57:20 2013
@@ -386,6 +386,13 @@
                                   ]
                               },
                               {
+                                "id":"resolver/osgiagg",
+                                "title":"Aggregated OSGi Repository",
+                                "children": [
+
+                                  ]
+                              },
+                              {
                                 "id":"resolver/updatesite",
                                 "title":"Eclipse updatesite",
                                 "children": [

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/typedef.properties
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/typedef.properties?rev=1553873&r1=1553872&r2=1553873&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/typedef.properties 
(original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/typedef.properties 
Sat Dec 28 16:57:20 2013
@@ -32,6 +32,7 @@ packager      = org.apache.ivy.plugins.resolv
 obr         = org.apache.ivy.osgi.obr.OBRResolver
 mirroredurl = org.apache.ivy.plugins.resolver.MirroredURLResolver
 updatesite  = org.apache.ivy.osgi.updatesite.UpdateSiteResolver
+osgi-agg    = org.apache.ivy.osgi.repo.AggregatedOSGiResolver
 
 latest-revision = org.apache.ivy.plugins.latest.LatestRevisionStrategy
 latest-lexico   = org.apache.ivy.plugins.latest.LatestLexicographicStrategy

Added: 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedOSGiResolver.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedOSGiResolver.java?rev=1553873&view=auto
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedOSGiResolver.java
 (added)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedOSGiResolver.java
 Sat Dec 28 16:57:20 2013
@@ -0,0 +1,40 @@
+/*
+ *  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.
+ *
+ */
+package org.apache.ivy.osgi.repo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AggregatedOSGiResolver extends AbstractOSGiResolver {
+
+    private List<AbstractOSGiResolver> resolvers = new 
ArrayList<AbstractOSGiResolver>();
+
+    public void add(AbstractOSGiResolver resolver) {
+        resolvers.add(resolver);
+    }
+
+    @Override
+    protected void init() {
+        List<RepoDescriptor> repos = new ArrayList<RepoDescriptor>();
+        for (AbstractOSGiResolver resolver : resolvers) {
+            repos.add(resolver.getRepoDescriptor());
+        }
+        setRepoDescriptor(new AggregatedRepoDescriptor(repos));
+    }
+
+}

Propchange: 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedOSGiResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedOSGiResolver.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedOSGiResolver.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedRepoDescriptor.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedRepoDescriptor.java?rev=1553873&view=auto
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedRepoDescriptor.java
 (added)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedRepoDescriptor.java
 Sat Dec 28 16:57:20 2013
@@ -0,0 +1,112 @@
+/*
+ *  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.
+ *
+ */
+package org.apache.ivy.osgi.repo;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+public class AggregatedRepoDescriptor extends RepoDescriptor {
+
+    private List<RepoDescriptor> repos;
+
+    public AggregatedRepoDescriptor(List<RepoDescriptor> repos) {
+        this.repos = repos;
+    }
+
+    @Override
+    public Iterator<ModuleDescriptorWrapper> getModules() {
+        final Iterator<RepoDescriptor> itRepos = repos.iterator();
+        return new Iterator<ModuleDescriptorWrapper>() {
+
+            private Iterator<ModuleDescriptorWrapper> current = null;
+
+            private ModuleDescriptorWrapper next = null;
+
+            public boolean hasNext() {
+                while (next == null) {
+                    if (current == null) {
+                        if (!itRepos.hasNext()) {
+                            return false;
+                        }
+                        RepoDescriptor repo = itRepos.next();
+                        current = repo.getModules();
+                    }
+                    if (current.hasNext()) {
+                        next = current.next();
+                    } else {
+                        current = null;
+                    }
+                }
+                return true;
+            }
+
+            public ModuleDescriptorWrapper next() {
+                if (!hasNext()) {
+                    throw new NoSuchElementException();
+                }
+                ModuleDescriptorWrapper ret = next;
+                next = null;
+                return ret;
+            }
+
+            public void remove() {
+                throw new UnsupportedOperationException();
+            }
+        };
+    }
+
+    @Override
+    public Set<String> getCapabilities() {
+        Set<String> ret = new HashSet<String>();
+        for (RepoDescriptor repo : repos) {
+            Set<String> capabilities = repo.getCapabilities();
+            if (capabilities != null) {
+                ret.addAll(capabilities);
+            }
+        }
+        return ret;
+    }
+
+    @Override
+    public Set<ModuleDescriptorWrapper> findModule(String requirement, String 
value) {
+        Set<ModuleDescriptorWrapper> ret = new 
HashSet<ModuleDescriptorWrapper>();
+        for (RepoDescriptor repo : repos) {
+            Set<ModuleDescriptorWrapper> modules = 
repo.findModule(requirement, value);
+            if (modules != null) {
+                ret.addAll(modules);
+            }
+        }
+        return ret;
+    }
+
+    @Override
+    public Set<String> getCapabilityValues(String capabilityName) {
+        Set<String> ret = new HashSet<String>();
+        for (RepoDescriptor repo : repos) {
+            Set<String> capabilityValues = 
repo.getCapabilityValues(capabilityName);
+            if (capabilityValues != null) {
+                ret.addAll(capabilityValues);
+            }
+        }
+        return ret;
+    }
+
+}

Propchange: 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedRepoDescriptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedRepoDescriptor.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: 
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/AggregatedRepoDescriptor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/AggregatedOSGiResolverTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/AggregatedOSGiResolverTest.java?rev=1553873&view=auto
==============================================================================
--- 
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/AggregatedOSGiResolverTest.java
 (added)
+++ 
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/AggregatedOSGiResolverTest.java
 Sat Dec 28 16:57:20 2013
@@ -0,0 +1,168 @@
+/*
+ *  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.
+ *
+ */
+package org.apache.ivy.osgi.core;
+
+import java.io.File;
+import java.text.ParseException;
+
+import junit.framework.TestCase;
+
+import org.apache.ivy.Ivy;
+import org.apache.ivy.core.cache.RepositoryCacheManager;
+import org.apache.ivy.core.module.descriptor.Artifact;
+import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
+import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.core.report.ArtifactDownloadReport;
+import org.apache.ivy.core.report.DownloadReport;
+import org.apache.ivy.core.report.DownloadStatus;
+import org.apache.ivy.core.resolve.DownloadOptions;
+import org.apache.ivy.core.resolve.ResolveData;
+import org.apache.ivy.core.resolve.ResolveOptions;
+import org.apache.ivy.core.resolve.ResolvedModuleRevision;
+import org.apache.ivy.core.settings.IvySettings;
+import org.apache.ivy.osgi.obr.OBRResolver;
+import org.apache.ivy.osgi.repo.AbstractOSGiResolver.RequirementStrategy;
+import org.apache.ivy.osgi.repo.AggregatedOSGiResolver;
+import org.apache.ivy.osgi.updatesite.UpdateSiteResolver;
+import org.apache.ivy.plugins.resolver.DependencyResolver;
+
+public class AggregatedOSGiResolverTest extends TestCase {
+
+    private IvySettings settings;
+
+    private File cache;
+
+    private ResolveData data;
+
+    private Ivy ivy;
+
+    private AggregatedOSGiResolver resolver;
+
+    public void setUp() throws Exception {
+        settings = new IvySettings();
+
+        OBRResolver bundleResolver = new OBRResolver();
+        bundleResolver.setRepoXmlFile(new 
File("test/test-repo/bundlerepo/repo.xml")
+                .getAbsolutePath());
+        bundleResolver.setName("bundle");
+        bundleResolver.setSettings(settings);
+        settings.addResolver(bundleResolver);
+
+        UpdateSiteResolver updatesite = new UpdateSiteResolver();
+        updatesite.setUrl(new 
File("test/test-p2/ivyde-repo").toURI().toURL().toExternalForm());
+        updatesite.setName("updatesite");
+        updatesite.setSettings(settings);
+        settings.addResolver(updatesite);
+
+        OBRResolver repo1 = new OBRResolver();
+        repo1.setRepoXmlFile(new 
File("test/test-repo/multi-osgi/repo1/obr.xml").getAbsolutePath());
+        repo1.setName("repo1");
+        repo1.setSettings(settings);
+        repo1.setRequirementStrategy(RequirementStrategy.noambiguity);
+        settings.addResolver(repo1);
+
+        OBRResolver repo2 = new OBRResolver();
+        repo2.setRepoXmlFile(new 
File("test/test-repo/multi-osgi/repo2/obr.xml").getAbsolutePath());
+        repo2.setName("repo2");
+        repo2.setSettings(settings);
+        repo2.setRequirementStrategy(RequirementStrategy.noambiguity);
+        settings.addResolver(repo2);
+
+        resolver = new AggregatedOSGiResolver();
+        resolver.add(bundleResolver);
+        resolver.add(updatesite);
+        resolver.add(repo1);
+        resolver.add(repo2);
+        resolver.setName("multiosgi");
+        resolver.setSettings(settings);
+        settings.addResolver(resolver);
+
+        settings.setDefaultResolver("multiosgi");
+
+        cache = new File("build/cache");
+        cache.mkdirs();
+        settings.setDefaultCache(cache);
+
+        ivy = new Ivy();
+        ivy.setSettings(settings);
+        ivy.bind();
+
+        ivy.getResolutionCacheManager().clean();
+        RepositoryCacheManager[] caches = 
settings.getRepositoryCacheManagers();
+        for (int i = 0; i < caches.length; i++) {
+            caches[i].clean();
+        }
+
+        data = new ResolveData(ivy.getResolveEngine(), new ResolveOptions());
+    }
+
+    private void genericTestResolveDownload(DependencyResolver resolver, 
ModuleRevisionId mrid)
+            throws ParseException {
+        ResolvedModuleRevision rmr = resolver.getDependency(new 
DefaultDependencyDescriptor(mrid,
+                false), data);
+        assertNotNull(rmr);
+        assertEquals(mrid, rmr.getId());
+
+        Artifact artifact = rmr.getDescriptor().getAllArtifacts()[0];
+        DownloadReport report = resolver.download(new Artifact[] {artifact}, 
new DownloadOptions());
+        assertNotNull(report);
+
+        assertEquals(1, report.getArtifactsReports().length);
+
+        ArtifactDownloadReport ar = report.getArtifactReport(artifact);
+        assertNotNull(ar);
+
+        assertEquals(artifact, ar.getArtifact());
+        assertEquals(DownloadStatus.SUCCESSFUL, ar.getDownloadStatus());
+
+        // test to ask to download again, should use cache
+        report = resolver.download(new Artifact[] {artifact}, new 
DownloadOptions());
+        assertNotNull(report);
+
+        assertEquals(1, report.getArtifactsReports().length);
+
+        ar = report.getArtifactReport(artifact);
+        assertNotNull(ar);
+
+        assertEquals(artifact, ar.getArtifact());
+        assertEquals(DownloadStatus.NO, ar.getDownloadStatus());
+    }
+
+    public void testResolveInUpdatesite() throws Exception {
+        ModuleRevisionId mrid = 
ModuleRevisionId.newInstance(BundleInfo.BUNDLE_TYPE,
+            "org.apache.ivy", "2.0.0.final_20090108225011");
+        genericTestResolveDownload(resolver, mrid);
+    }
+
+    public void testResolveInObr() throws Exception {
+        ModuleRevisionId mrid = 
ModuleRevisionId.newInstance(BundleInfo.BUNDLE_TYPE,
+            "org.apache.ivy.osgi.testbundle", "1.2.3");
+        genericTestResolveDownload(resolver, mrid);
+    }
+
+    public void testCrossResolve() throws Exception {
+        ModuleRevisionId mrid1 = 
ModuleRevisionId.newInstance(BundleInfo.BUNDLE_TYPE,
+            "org.apache.ivy.osgi.testbundle1", "1.2.3");
+        genericTestResolveDownload(resolver, mrid1);
+
+        ModuleRevisionId mrid2 = 
ModuleRevisionId.newInstance(BundleInfo.BUNDLE_TYPE,
+            "org.apache.ivy.osgi.testbundle2", "1.2.3");
+        genericTestResolveDownload(resolver, mrid2);
+    }
+
+}

Propchange: 
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/AggregatedOSGiResolverTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/AggregatedOSGiResolverTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: 
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/AggregatedOSGiResolverTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/obr.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/obr.xml?rev=1553873&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/obr.xml (added)
+++ ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/obr.xml Sat Dec 28 
16:57:20 2013
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   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.    
+-->
+<repository>
+    <resource symbolicname="org.apache.ivy.osgi.testbundle1" version="1.2.3" 
uri="org.apache.ivy.osgi.testbundle1_1.2.3.jar">
+        <capability name="package">
+            <p n="package" v="org.apache.ivy.osgi.testbundle1" />
+            <p n="version" v="1.2.3" />
+        </capability>
+    </resource>
+    <resource symbolicname="org.apache.ivy.osgi.testbundle1.importing" 
version="3.2.1"
+        uri="org.apache.ivy.osgi.testbundle.importing1_3.2.1.jar">
+        <require name="package" 
filter="(package=org.apache.ivy.osgi.testbundle2)" />
+    </resource>
+</repository>

Propchange: ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/obr.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/obr.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/obr.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: 
ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/org.apache.ivy.osgi.testbundle.importing1_3.2.1.jar
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/org.apache.ivy.osgi.testbundle.importing1_3.2.1.jar?rev=1553873&view=auto
==============================================================================
    (empty)

Added: 
ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/org.apache.ivy.osgi.testbundle1_1.2.3.jar
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/test-repo/multi-osgi/repo1/org.apache.ivy.osgi.testbundle1_1.2.3.jar?rev=1553873&view=auto
==============================================================================
    (empty)

Added: ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/obr.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/obr.xml?rev=1553873&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/obr.xml (added)
+++ ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/obr.xml Sat Dec 28 
16:57:20 2013
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   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.    
+-->
+<repository>
+    <resource symbolicname="org.apache.ivy.osgi.testbundle2" version="1.2.3" 
uri="org.apache.ivy.osgi.testbundle2_1.2.3.jar">
+        <capability name="package">
+            <p n="package" v="org.apache.ivy.osgi.testbundle2" />
+            <p n="version" v="1.2.3" />
+        </capability>
+    </resource>
+    <resource symbolicname="org.apache.ivy.osgi.testbundle2.importing" 
version="3.2.1"
+        uri="org.apache.ivy.osgi.testbundle.importing2_3.2.1.jar">
+        <require name="package" 
filter="(package=org.apache.ivy.osgi.testbundle1)" />
+    </resource>
+</repository>

Propchange: ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/obr.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/obr.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/obr.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: 
ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/org.apache.ivy.osgi.testbundle.importing2_3.2.1.jar
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/org.apache.ivy.osgi.testbundle.importing2_3.2.1.jar?rev=1553873&view=auto
==============================================================================
    (empty)

Added: 
ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/org.apache.ivy.osgi.testbundle2_1.2.3.jar
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/test-repo/multi-osgi/repo2/org.apache.ivy.osgi.testbundle2_1.2.3.jar?rev=1553873&view=auto
==============================================================================
    (empty)


Reply via email to