You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2012/08/21 16:58:21 UTC
svn commit: r1375592 - in /ant/ivy/core/trunk:
src/java/org/apache/ivy/osgi/core/BundleInfo.java
src/java/org/apache/ivy/osgi/core/ManifestParser.java
test/java/org/apache/ivy/osgi/core/ManifestParserTest.java
Author: hibou
Date: Tue Aug 21 14:58:21 2012
New Revision: 1375592
URL: http://svn.apache.org/viewvc?rev=1375592&view=rev
Log:
Parse the Bundle-Classpath in an OSGi MANIFEST
Modified:
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfo.java
ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/ManifestParser.java
ant/ivy/core/trunk/test/java/org/apache/ivy/osgi/core/ManifestParserTest.java
Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfo.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfo.java?rev=1375592&r1=1375591&r2=1375592&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfo.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfo.java Tue Aug 21 14:58:21 2012
@@ -76,6 +76,8 @@ public class BundleInfo {
private boolean hasInnerClasspath;
+ private List/* <String> */classpath;
+
public BundleInfo(String name, Version version) {
this.symbolicName = name;
this.version = version;
@@ -235,6 +237,14 @@ public class BundleInfo {
return hasInnerClasspath;
}
+ public void setClasspath(List/* <String> */classpath) {
+ this.classpath = classpath;
+ }
+
+ public List/* <String> */getClasspath() {
+ return classpath;
+ }
+
public int hashCode() {
final int prime = 31;
int result = 1;
@@ -325,6 +335,13 @@ public class BundleInfo {
if (hasInnerClasspath != other.hasInnerClasspath) {
return false;
}
+ if (classpath == null) {
+ if (other.classpath != null) {
+ return false;
+ }
+ } else if (!classpath.equals(other.classpath)) {
+ return false;
+ }
return true;
}
Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/ManifestParser.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/ManifestParser.java?rev=1375592&r1=1375591&r2=1375592&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/ManifestParser.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/ManifestParser.java Tue Aug 21 14:58:21 2012
@@ -60,6 +60,8 @@ public class ManifestParser {
private static final String BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT = "Bundle-RequiredExecutionEnvironment";
+ private static final String BUNDLE_CLASSPATH = "Bundle-ClassPath";
+
private static final String ECLIPSE_SOURCE_BUNDLE = "Eclipse-SourceBundle";
private static final String ATTR_RESOLUTION = "resolution";
@@ -194,6 +196,12 @@ public class ManifestParser {
}
}
+ String bundleClasspath = mainAttributes.getValue(BUNDLE_CLASSPATH);
+ if (bundleClasspath != null) {
+ ManifestHeaderValue bundleClasspathValue = new ManifestHeaderValue(bundleClasspath);
+ bundleInfo.setClasspath(bundleClasspathValue.getValues());
+ }
+
return bundleInfo;
}
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=1375592&r1=1375591&r2=1375592&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 Aug 21 14:58:21 2012
@@ -17,7 +17,12 @@
*/
package org.apache.ivy.osgi.core;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.ParseException;
+import java.util.Arrays;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import junit.framework.TestCase;
@@ -44,6 +49,7 @@ public class ManifestParserTest extends
assertEquals(expectedRequires, bundleInfo.getRequires());
assertEquals(0, bundleInfo.getExports().size());
assertEquals(2, bundleInfo.getImports().size());
+ assertNull(bundleInfo.getClasspath());
final String importsList = bundleInfo.getImports().toString();
assertTrue(importsList.indexOf("com.acme.bravo") != -1);
@@ -66,6 +72,34 @@ public class ManifestParserTest extends
assertTrue(bundleInfo.getImports().toString().indexOf("com.acme.charlie") != -1);
}
+ public void testClasspath() throws Exception {
+ InputStream in = this.getClass().getResourceAsStream(
+ "/org/apache/ivy/osgi/core/MANIFEST_classpath.MF");
+ BundleInfo bundleInfo;
+ try {
+ bundleInfo = ManifestParser.parseManifest(in);
+ } finally {
+ in.close();
+ }
+ List/* <String> */cp = bundleInfo.getClasspath();
+ assertNotNull(cp);
+ assertEquals(4, cp.size());
+ assertEquals(
+ Arrays.asList(new String[] {"lib/ant-antlr.jar", "lib/ant-apache-bcel.jar",
+ "lib/ant-apache-bsf.jar", "lib/ant-apache-log4j.jar"}), cp);
+
+ in = this.getClass().getResourceAsStream("/org/apache/ivy/osgi/core/MANIFEST_classpath2.MF");
+ try {
+ bundleInfo = ManifestParser.parseManifest(in);
+ } finally {
+ in.close();
+ }
+ cp = bundleInfo.getClasspath();
+ assertNotNull(cp);
+ assertEquals(1, cp.size());
+ assertEquals(Arrays.asList(new String[] {"."}), cp);
+ }
+
public void testFormatLines() throws Exception {
assertEquals("foo bar\n", ManifestParser.formatLines("foo bar"));
assertEquals(