Author: hibou
Date: Tue Nov 30 16:02:04 2010
New Revision: 1040596
URL: http://svn.apache.org/viewvc?rev=1040596&view=rev
Log:
IVY-1241: Cleanup of the code and make the unit tests pass
Added:
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/obr/OBRResolver.java
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/com.acme.alpha-1.0.0.20080101.jar
(with props)
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/com.acme.bravo-2.0.0.20080202.jar
(with props)
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/obr/OBRResolverTest.java
- copied, changed from r1040043,
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/repo/BundleRepoResolverTest.java
Removed:
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/ivy/
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/util/NameUtil.java
ant/ivy/core/trunk/src/java/orgs.list
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/ivy/
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/repo/BundleRepoResolverTest.java
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/util/NameUtilTest.java
ant/ivy/core/trunk/test/test-bundles/
ant/ivy/core/trunk/test/test-ivy/
Modified:
ant/ivy/core/trunk/build.xml
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/typedef.properties
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/ManifestParserTest.java
ant/ivy/core/trunk/test/test-repo/bundlerepo/repo.xml
Modified: ant/ivy/core/trunk/build.xml
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/build.xml?rev=1040596&r1=1040595&r2=1040596&view=diff
==============================================================================
--- ant/ivy/core/trunk/build.xml (original)
+++ ant/ivy/core/trunk/build.xml Tue Nov 30 16:02:04 2010
@@ -427,13 +427,11 @@
</copy>
</target>
- <target name="prepare-test" depends="resolve" unless="skip.test">
+ <target name="prepare-osgi-tests" depends="resolve" unless="skip.test">
<ant dir="${basedir}/test/test-repo" target="generate-bundles" />
- <ant dir="${basedir}/test/test-bundles" target="build-all" />
- <ant dir="${basedir}/test/test-bundles" target="ivy" />
</target>
- <target name="test-internal" depends="build-test, init-tests"
unless="skip.test">
+ <target name="test-internal" depends="build-test, init-tests,
prepare-osgi-tests" unless="skip.test">
<mkdir dir="${test.xml.dir}" />
<junit
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=1040596&r1=1040595&r2=1040596&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
Tue Nov 30 16:02:04 2010
@@ -28,6 +28,7 @@ vsftp = org.apache.ivy.plugins.res
vfs = org.apache.ivy.plugins.resolver.VfsResolver
cache = org.apache.ivy.plugins.resolver.CacheResolver
packager = org.apache.ivy.plugins.resolver.packager.PackagerResolver
+obr = org.apache.ivy.osgi.obr.OBRResolver
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/obr/OBRResolver.java
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/obr/OBRResolver.java?rev=1040596&view=auto
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/obr/OBRResolver.java (added)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/obr/OBRResolver.java Tue
Nov 30 16:02:04 2010
@@ -0,0 +1,141 @@
+/*
+ * 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.obr;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.text.ParseException;
+
+import org.apache.ivy.osgi.obr.xml.OBRXMLParser;
+import org.apache.ivy.osgi.repo.BundleRepoResolver;
+import org.apache.ivy.osgi.repo.RelativeURLRepository;
+import org.apache.ivy.plugins.repository.file.FileRepository;
+import org.xml.sax.SAXException;
+
+public class OBRResolver extends BundleRepoResolver {
+
+ private String repoXmlURL;
+
+ private String repoXmlFile;
+
+ public void setRepoXmlFile(String repositoryXmlFile) {
+ this.repoXmlFile = repositoryXmlFile;
+ }
+
+ public void setRepoXmlURL(String repositoryXmlURL) {
+ this.repoXmlURL = repositoryXmlURL;
+ }
+
+ protected void ensureInit() {
+ if (repoXmlFile != null && repoXmlURL != null) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: repoXmlFile and repoXmlUrl
cannot be set both");
+ }
+ if (repoXmlFile != null) {
+ File f = new File(repoXmlFile);
+ setRepository(new FileRepository(f.getParentFile()));
+ FileInputStream in;
+ try {
+ in = new FileInputStream(f);
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: the file " + repoXmlFile +
" was not found");
+ }
+ try {
+ setRepoDescriptor(OBRXMLParser.parse(in));
+ } catch (ParseException e) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: the file " + repoXmlFile
+ + " is incorrectly formed (" + e.getMessage() + ")");
+ } catch (IOException e) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: the file " + repoXmlFile
+ + " could not be read (" + e.getMessage() + ")");
+ } catch (SAXException e) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: the file " + repoXmlFile
+ + " has incorrect XML (" + e.getMessage() + ")");
+ }
+ try {
+ in.close();
+ } catch (IOException e) {
+ // don't care
+ }
+ } else if (repoXmlURL != null) {
+ URL url;
+ try {
+ url = new URL(repoXmlURL);
+ } catch (MalformedURLException e) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: repoXmlURL '" + repoXmlURL
+ "' is not an URL");
+ }
+ URL baseUrl;
+ String basePath = "/";
+ int i = url.getPath().lastIndexOf("/");
+ if (i > 0) {
+ basePath = url.getPath().substring(0, i + 1);
+ }
+ try {
+ baseUrl = new URL(url.getProtocol(), url.getHost(),
url.getPort(), basePath);
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(
+ "The OBR repository resolver "
+ + getName()
+ + " couldn't be configured: the base url
couldn'd be extracted from the url "
+ + url + " (" + e.getMessage() + ")");
+ }
+ setRepository(new RelativeURLRepository(baseUrl));
+ InputStream in;
+ try {
+ in = url.openStream();
+ } catch (IOException e) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: the file " + repoXmlURL +
" couldn't be read ("
+ + e.getMessage() + ")");
+ }
+ try {
+ setRepoDescriptor(OBRXMLParser.parse(in));
+ } catch (ParseException e) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: the file " + repoXmlURL
+ + " is incorrectly formed (" + e.getMessage() + ")");
+ } catch (IOException e) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: the file " + repoXmlURL
+ + " could not be read (" + e.getMessage() + ")");
+ } catch (SAXException e) {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: the file " + repoXmlURL
+ + " has incorrect XML (" + e.getMessage() + ")");
+ }
+ try {
+ in.close();
+ } catch (IOException e) {
+ // don't care
+ }
+ } else {
+ throw new RuntimeException("The OBR repository resolver " +
getName()
+ + " couldn't be configured: repoXmlFile or repoXmlUrl is
missing");
+ }
+ }
+}
Modified:
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java?rev=1040596&r1=1040595&r2=1040596&view=diff
==============================================================================
---
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java
(original)
+++
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java
Tue Nov 30 16:02:04 2010
@@ -18,12 +18,7 @@
package org.apache.ivy.osgi.repo;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -70,10 +65,6 @@ public class BundleRepoResolver extends
private Repository repository = null;
- private String repoXmlURL;
-
- private String repoXmlFile;
-
private BundleRepo repoDescriptor = null;
private ExecutionEnvironmentProfileProvider profileProvider;
@@ -106,113 +97,23 @@ public class BundleRepoResolver extends
setImportPackageStrategy(RequirementStrategy.valueOf(strategy));
}
- public void setRepoXmlFile(String repositoryXmlFile) {
- this.repoXmlFile = repositoryXmlFile;
+ public void add(ExecutionEnvironmentProfileProvider pp) {
+ this.profileProvider = pp;
}
- public void setRepoXmlURL(String repositoryXmlURL) {
- this.repoXmlURL = repositoryXmlURL;
+ protected void setRepository(Repository repository) {
+ this.repository = repository;
}
- public void add(ExecutionEnvironmentProfileProvider pp) {
- this.profileProvider = pp;
+ protected void setRepoDescriptor(BundleRepo repoDescriptor) {
+ this.repoDescriptor = repoDescriptor;
}
- private void ensureInit() {
- if (repoDescriptor != null && repository != null) {
- return;
- }
+ protected void ensureInit() {
if (repoDescriptor != null || repository != null) {
throw new IllegalStateException("The osgi repository resolver " +
getName()
+ " wasn't correctly configured, see previous error in the
logs");
}
- if (repoXmlFile != null && repoXmlURL != null) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: repoXmlFile and repoXmlUrl
cannot be set both");
- }
- if (repoXmlFile != null) {
- File f = new File(repoXmlFile);
- repository = new FileRepository(f.getParentFile());
- FileInputStream in;
- try {
- in = new FileInputStream(f);
- } catch (FileNotFoundException e) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: the file " + repoXmlFile +
" was not found");
- }
- try {
- repoDescriptor = OBRXMLParser.parse(in);
- } catch (ParseException e) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: the file " + repoXmlFile
- + " is incorrectly formed (" + e.getMessage() + ")");
- } catch (IOException e) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: the file " + repoXmlFile
- + " could not be read (" + e.getMessage() + ")");
- } catch (SAXException e) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: the file " + repoXmlFile
- + " has incorrect XML (" + e.getMessage() + ")");
- }
- try {
- in.close();
- } catch (IOException e) {
- // don't care
- }
- } else {
- URL url;
- try {
- url = new URL(repoXmlURL);
- } catch (MalformedURLException e) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: repoXmlURL '" + repoXmlURL
+ "' is not an URL");
- }
- URL baseUrl;
- String basePath = "/";
- int i = url.getPath().lastIndexOf("/");
- if (i > 0) {
- basePath = url.getPath().substring(0, i + 1);
- }
- try {
- baseUrl = new URL(url.getProtocol(), url.getHost(),
url.getPort(), basePath);
- } catch (MalformedURLException e) {
- throw new RuntimeException(
- "The osgi repository resolver "
- + getName()
- + " couldn't be configured: the base url
couldn'd be extracted from the url "
- + url + " (" + e.getMessage() + ")");
- }
- repository = new RelativeURLRepository(baseUrl);
- InputStream in;
- try {
- in = url.openStream();
- } catch (IOException e) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: the file " + repoXmlURL +
" couldn't be read ("
- + e.getMessage() + ")");
- }
- try {
- repoDescriptor = OBRXMLParser.parse(in);
- } catch (ParseException e) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: the file " + repoXmlURL
- + " is incorrectly formed (" + e.getMessage() + ")");
- } catch (IOException e) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: the file " + repoXmlURL
- + " could not be read (" + e.getMessage() + ")");
- } catch (SAXException e) {
- throw new RuntimeException("The osgi repository resolver " +
getName()
- + " couldn't be configured: the file " + repoXmlURL
- + " has incorrect XML (" + e.getMessage() + ")");
- }
- try {
- in.close();
- } catch (IOException e) {
- // don't care
- }
- }
}
public Repository getRepository() {
Modified:
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/ManifestParserTest.java
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/ManifestParserTest.java?rev=1040596&r1=1040595&r2=1040596&view=diff
==============================================================================
---
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/ManifestParserTest.java
(original)
+++
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/ManifestParserTest.java
Tue Nov 30 16:02:04 2010
@@ -29,8 +29,8 @@ public class ManifestParserTest extends
public void testParseManifest() throws Exception {
BundleInfo bundleInfo;
- bundleInfo =
ManifestParser.parseJarManifest(getClass().getClassLoader()
- .getResourceAsStream("com.acme.alpha-1.0.0.20080101.jar"));
+ bundleInfo =
ManifestParser.parseJarManifest(getClass().getResourceAsStream(
+ "com.acme.alpha-1.0.0.20080101.jar"));
assertEquals("com.acme.alpha", bundleInfo.getSymbolicName());
assertEquals("1.0.0", bundleInfo.getVersion().numbersAsString());
assertEquals("20080101", bundleInfo.getVersion().qualifier());
@@ -49,8 +49,8 @@ public class ManifestParserTest extends
assertTrue(importsList.contains("com.acme.bravo"));
assertTrue(importsList.contains("com.acme.delta"));
- bundleInfo =
ManifestParser.parseJarManifest(getClass().getClassLoader()
- .getResourceAsStream("com.acme.bravo-2.0.0.20080202.jar"));
+ bundleInfo =
ManifestParser.parseJarManifest(getClass().getResourceAsStream(
+ "com.acme.bravo-2.0.0.20080202.jar"));
assertNotNull(bundleInfo);
assertEquals("com.acme.bravo", bundleInfo.getSymbolicName());
assertEquals("2.0.0", bundleInfo.getVersion().numbersAsString());
Added:
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/com.acme.alpha-1.0.0.20080101.jar
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/com.acme.alpha-1.0.0.20080101.jar?rev=1040596&view=auto
==============================================================================
Binary file - no diff available.
Propchange:
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/com.acme.alpha-1.0.0.20080101.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added:
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/com.acme.bravo-2.0.0.20080202.jar
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/com.acme.bravo-2.0.0.20080202.jar?rev=1040596&view=auto
==============================================================================
Binary file - no diff available.
Propchange:
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/com.acme.bravo-2.0.0.20080202.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Copied:
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/obr/OBRResolverTest.java (from
r1040043,
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/repo/BundleRepoResolverTest.java)
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/obr/OBRResolverTest.java?p2=ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/obr/OBRResolverTest.java&p1=ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/repo/BundleRepoResolverTest.java&r1=1040043&r2=1040596&rev=1040596&view=diff
==============================================================================
---
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/repo/BundleRepoResolverTest.java
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/obr/OBRResolverTest.java
Tue Nov 30 16:02:04 2010
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.ivy.osgi.repo;
+package org.apache.ivy.osgi.obr;
import java.io.File;
import java.io.FileInputStream;
@@ -46,15 +46,17 @@ import org.apache.ivy.core.resolve.Resol
import org.apache.ivy.core.settings.IvySettings;
import org.apache.ivy.osgi.core.BundleInfo;
import org.apache.ivy.osgi.core.ManifestParser;
+import org.apache.ivy.osgi.obr.OBRResolver;
+import org.apache.ivy.osgi.repo.BundleInfoAdapter;
import org.apache.ivy.osgi.repo.BundleRepoResolver.RequirementStrategy;
import org.apache.ivy.plugins.resolver.DependencyResolver;
import org.apache.ivy.plugins.resolver.DualResolver;
import org.apache.ivy.plugins.resolver.FileSystemResolver;
-public class BundleRepoResolverTest extends TestCase {
+public class OBRResolverTest extends TestCase {
private static final ModuleRevisionId MRID_TEST_BUNDLE =
ModuleRevisionId.newInstance("",
- "org.apache.ivy.osgitestbundle", "1.2.3",
BundleInfoAdapter.OSGI_BUNDLE);
+ "org.apache.ivy.osgi.testbundle", "1.2.3",
BundleInfoAdapter.OSGI_BUNDLE);
private static final ModuleRevisionId MRID_TEST_BUNDLE_IMPORTING =
ModuleRevisionId
.newInstance("", "org.apache.ivy.osgi.testbundle.importing",
"3.2.1",
@@ -83,23 +85,23 @@ public class BundleRepoResolverTest exte
private Ivy ivy;
- private BundleRepoResolver bundleResolver;
+ private OBRResolver bundleResolver;
- private BundleRepoResolver bundleUrlResolver;
+ private OBRResolver bundleUrlResolver;
private DualResolver dualResolver;
public void setUp() throws Exception {
settings = new IvySettings();
- bundleResolver = new BundleRepoResolver();
+ bundleResolver = new OBRResolver();
bundleResolver.setRepoXmlFile(new
File("test/test-repo/bundlerepo/repo.xml")
.getAbsolutePath());
bundleResolver.setName("bundle");
bundleResolver.setSettings(settings);
settings.addResolver(bundleResolver);
- bundleUrlResolver = new BundleRepoResolver();
+ bundleUrlResolver = new OBRResolver();
bundleUrlResolver.setRepoXmlURL(new
File("test/test-repo/bundlerepo/repo.xml").toURI()
.toURL().toExternalForm());
bundleUrlResolver.setName("bundleurl");
@@ -107,8 +109,8 @@ public class BundleRepoResolverTest exte
settings.addResolver(bundleUrlResolver);
dualResolver = new DualResolver();
- BundleRepoResolver resolver = new BundleRepoResolver();
- resolver.setRepoXmlFile("test/test-repo/ivyrepo/repo.xml");
+ OBRResolver resolver = new OBRResolver();
+ resolver.setRepoXmlFile(new
File("test/test-repo/ivyrepo/repo.xml").getAbsolutePath());
resolver.setName("dual-bundle");
resolver.setSettings(settings);
dualResolver.add(resolver);
Modified: ant/ivy/core/trunk/test/test-repo/bundlerepo/repo.xml
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/test-repo/bundlerepo/repo.xml?rev=1040596&r1=1040595&r2=1040596&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/test-repo/bundlerepo/repo.xml (original)
+++ ant/ivy/core/trunk/test/test-repo/bundlerepo/repo.xml Tue Nov 30 16:02:04
2010
@@ -16,7 +16,7 @@
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
--->org.apache.ivy.osgi
+-->
<repository>
<resource symbolicname="org.apache.ivy.osgi.testbundle" version="1.2.3"
uri="org.apache.ivy.osgi.testbundle_1.2.3.jar">
<capability name="package">