You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ti...@apache.org on 2013/05/03 10:14:22 UTC
svn commit: r1478667 - in /aries/trunk/util:
util-r42/src/main/java/org/apache/aries/util/manifest/
util-r42/src/test/java/org/apache/aries/util/manifest/
util-r42/src/test/resources/bundles/exploded-jar-with-name.jar/
util-r42/src/test/resources/bundl...
Author: timothyjward
Date: Fri May 3 08:14:21 2013
New Revision: 1478667
URL: http://svn.apache.org/r1478667
Log:
ARIES-958 : Fix BundleManifest parsing for IDirectory when jars contain "Name" entries in the manifest
Added:
aries/trunk/util/util-r42/src/test/resources/bundles/exploded-jar-with-name.jar/
aries/trunk/util/util-r42/src/test/resources/bundles/exploded-jar-with-name.jar/META-INF/
Modified:
aries/trunk/util/util-r42/src/main/java/org/apache/aries/util/manifest/ManifestProcessor.java
aries/trunk/util/util-r42/src/test/java/org/apache/aries/util/manifest/BundleManifestTest.java
aries/trunk/util/util/src/main/java/org/apache/aries/util/tracker/packageinfo
Modified: aries/trunk/util/util-r42/src/main/java/org/apache/aries/util/manifest/ManifestProcessor.java
URL: http://svn.apache.org/viewvc/aries/trunk/util/util-r42/src/main/java/org/apache/aries/util/manifest/ManifestProcessor.java?rev=1478667&r1=1478666&r2=1478667&view=diff
==============================================================================
--- aries/trunk/util/util-r42/src/main/java/org/apache/aries/util/manifest/ManifestProcessor.java (original)
+++ aries/trunk/util/util-r42/src/main/java/org/apache/aries/util/manifest/ManifestProcessor.java Fri May 3 08:14:21 2013
@@ -129,10 +129,11 @@ public class ManifestProcessor
man.getEntries().put(attributeValue, new Attributes());
namedAttribute = attributeValue;
} else {
- if (namedAttribute == null) {
- man.getMainAttributes().put(new Attributes.Name(attributeName), attributeValue);
+ Attributes.Name nameToAdd = new Attributes.Name(attributeName);
+ if (namedAttribute == null || !man.getMainAttributes().containsKey(nameToAdd)) {
+ man.getMainAttributes().put(nameToAdd, attributeValue);
} else {
- man.getAttributes(namedAttribute).put(new Attributes.Name(attributeName), attributeValue);
+ man.getAttributes(namedAttribute).put(nameToAdd, attributeValue);
}
}
Modified: aries/trunk/util/util-r42/src/test/java/org/apache/aries/util/manifest/BundleManifestTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/util/util-r42/src/test/java/org/apache/aries/util/manifest/BundleManifestTest.java?rev=1478667&r1=1478666&r2=1478667&view=diff
==============================================================================
--- aries/trunk/util/util-r42/src/test/java/org/apache/aries/util/manifest/BundleManifestTest.java (original)
+++ aries/trunk/util/util-r42/src/test/java/org/apache/aries/util/manifest/BundleManifestTest.java Fri May 3 08:14:21 2013
@@ -24,71 +24,152 @@ import static org.junit.Assert.assertNul
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
+import java.io.IOException;
import java.util.jar.JarInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
+import org.apache.aries.util.filesystem.FileSystem;
import org.apache.aries.util.io.IOUtils;
-import org.apache.aries.util.manifest.BundleManifest;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class BundleManifestTest
{
- private static File _testfile;
-
+ private static final String EXPECTED_VERSION = "1.0.0";
+ private static final String EXPECTED_SYMBOLIC_NAME = "com.ibm.test";
+ private static File BUNDLE_WITHOUT_NAME_HEADER;
+ private static File BUNDLE_WITH_NAME_HEADER;
+
@BeforeClass
public static void setup() throws Exception
{
- _testfile = new File ("./bundleManifestTest/nonExploded.jar");
- _testfile.getParentFile().mkdirs();
+ BUNDLE_WITHOUT_NAME_HEADER = new File ("./bundleManifestTest/nonExploded.jar");
+ BUNDLE_WITHOUT_NAME_HEADER.getParentFile().mkdirs();
+ BUNDLE_WITH_NAME_HEADER = new File ("./bundleManifestTest/nonExplodedWithName.jar");
+ BUNDLE_WITH_NAME_HEADER.getParentFile().mkdirs();
+
+ createZippedJar(BUNDLE_WITHOUT_NAME_HEADER, "exploded.jar");
+ createZippedJar(BUNDLE_WITH_NAME_HEADER, "exploded-jar-with-name.jar");
- ZipOutputStream out = new ZipOutputStream(new FileOutputStream(_testfile));
+ }
+
+ private static void createZippedJar(File outputFile, String inputFolderName) throws FileNotFoundException, IOException {
+ ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outputFile));
ZipEntry ze = new ZipEntry("META-INF/");
out.putNextEntry(ze);
- File f = new File("../src/test/resources/bundles/exploded.jar/META-INF/beforeManifest.file");
+ File f = new File("../src/test/resources/bundles/" + inputFolderName + "/META-INF/beforeManifest.file");
ze = new ZipEntry("META-INF/beforeManifest.file");
ze.setSize(f.length());
out.putNextEntry(ze);
IOUtils.copy(new FileInputStream(f), out);
- f = new File("../src/test/resources/bundles/exploded.jar/META-INF/MANIFEST.MF");
+ f = new File("../src/test/resources/bundles/" + inputFolderName + "/META-INF/MANIFEST.MF");
ze = new ZipEntry("META-INF/MANIFEST.MF");
ze.setSize(f.length());
out.putNextEntry(ze);
IOUtils.copy(new FileInputStream(f), out);
out.close();
- }
+}
@AfterClass
public static void cleanup()
{
- IOUtils.deleteRecursive(new File("bundleManifestTest/"));
+ IOUtils.deleteRecursive(new File("bundleManifestTest/"));
}
-
+
@Test
public void testExploded()
{
BundleManifest sut = BundleManifest.fromBundle(new File("../src/test/resources/bundles/exploded.jar"));
- assertEquals("com.ibm.test", sut.getSymbolicName());
- assertEquals("1.0.0", sut.getVersion().toString());
+ assertEquals(EXPECTED_SYMBOLIC_NAME, sut.getSymbolicName());
+ assertEquals(EXPECTED_VERSION, sut.getVersion().toString());
}
-
+
+ @Test
+ public void testExplodedFromIDirectory()
+ {
+ BundleManifest sut = BundleManifest.fromBundle(FileSystem.getFSRoot(
+ new File("../src/test/resources/bundles/exploded.jar")));
+ assertEquals(EXPECTED_SYMBOLIC_NAME, sut.getSymbolicName());
+ assertEquals(EXPECTED_VERSION, sut.getVersion().toString());
+ }
+
+ @Test
+ public void testExplodedWithName()
+ {
+ BundleManifest sut = BundleManifest.fromBundle(new File("../src/test/resources/bundles/exploded-jar-with-name.jar"));
+ assertEquals(EXPECTED_SYMBOLIC_NAME, sut.getSymbolicName());
+ assertEquals(EXPECTED_VERSION, sut.getVersion().toString());
+ }
+
+ @Test
+ public void testExplodedWithNameFromIDirectory()
+ {
+ BundleManifest sut = BundleManifest.fromBundle(FileSystem.getFSRoot(
+ new File("../src/test/resources/bundles/exploded-jar-with-name.jar")));
+ assertEquals(EXPECTED_SYMBOLIC_NAME, sut.getSymbolicName());
+ assertEquals(EXPECTED_VERSION, sut.getVersion().toString());
+ }
+
@Test
public void testZip() throws Exception
{
// make sure that the manifest is not the first file in the jar archive
- JarInputStream jarIs = new JarInputStream(new FileInputStream(_testfile));
+ JarInputStream jarIs = new JarInputStream(new FileInputStream(BUNDLE_WITHOUT_NAME_HEADER));
assertNull(jarIs.getManifest());
jarIs.close();
- BundleManifest sut = BundleManifest.fromBundle(_testfile);
- assertEquals("com.ibm.test", sut.getSymbolicName());
- assertEquals("1.0.0", sut.getVersion().toString());
+ BundleManifest sut = BundleManifest.fromBundle(BUNDLE_WITHOUT_NAME_HEADER);
+ assertEquals(EXPECTED_SYMBOLIC_NAME, sut.getSymbolicName());
+ assertEquals(EXPECTED_VERSION, sut.getVersion().toString());
+ }
+
+ @Test
+ public void testZipFromIDirectory() throws Exception
+ {
+ // make sure that the manifest is not the first file in the jar archive
+ JarInputStream jarIs = new JarInputStream(new FileInputStream(BUNDLE_WITHOUT_NAME_HEADER));
+ assertNull(jarIs.getManifest());
+ jarIs.close();
+
+ BundleManifest sut = BundleManifest.fromBundle(
+ FileSystem.getFSRoot(BUNDLE_WITHOUT_NAME_HEADER));
+ assertEquals(EXPECTED_SYMBOLIC_NAME, sut.getSymbolicName());
+ assertEquals(EXPECTED_VERSION, sut.getVersion().toString());
}
+
+ @Test
+ public void testZipWithName() throws Exception
+ {
+ // make sure that the manifest is not the first file in the jar archive
+ JarInputStream jarIs = new JarInputStream(new FileInputStream(BUNDLE_WITH_NAME_HEADER));
+ assertNull(jarIs.getManifest());
+ jarIs.close();
+
+ BundleManifest sut = BundleManifest.fromBundle(BUNDLE_WITH_NAME_HEADER);
+ assertEquals(EXPECTED_SYMBOLIC_NAME, sut.getSymbolicName());
+ assertEquals(EXPECTED_VERSION, sut.getVersion().toString());
+ }
+
+ @Test
+ public void testZipWithNameFromIDirectory() throws Exception
+ {
+ // make sure that the manifest is not the first file in the jar archive
+ JarInputStream jarIs = new JarInputStream(new FileInputStream(BUNDLE_WITH_NAME_HEADER));
+ assertNull(jarIs.getManifest());
+ jarIs.close();
+
+ BundleManifest sut = BundleManifest.fromBundle(
+ FileSystem.getFSRoot(BUNDLE_WITH_NAME_HEADER));
+ assertEquals(EXPECTED_SYMBOLIC_NAME, sut.getSymbolicName());
+ assertEquals(EXPECTED_VERSION, sut.getVersion().toString());
+ }
+
}
Modified: aries/trunk/util/util/src/main/java/org/apache/aries/util/tracker/packageinfo
URL: http://svn.apache.org/viewvc/aries/trunk/util/util/src/main/java/org/apache/aries/util/tracker/packageinfo?rev=1478667&r1=1478666&r2=1478667&view=diff
==============================================================================
--- aries/trunk/util/util/src/main/java/org/apache/aries/util/tracker/packageinfo (original)
+++ aries/trunk/util/util/src/main/java/org/apache/aries/util/tracker/packageinfo Fri May 3 08:14:21 2013
@@ -16,4 +16,4 @@
# specific language governing permissions and limitations
# under the License.
#
-version 1.0.0
+version 1.0.1