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™</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)