/****************************************************************************** * Copyright (c) 2006, 2010 VMware Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Apache License v2.0 which accompanies this distribution. * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0 * is available at http://www.opensource.org/licenses/apache2.0.php. * You may elect to redistribute this code under either of these licenses. * * Contributors: * VMware Inc. *****************************************************************************/ package org.eclipse.gemini.blueprint.test.internal.util; import java.util.jar.Attributes; import java.util.jar.JarInputStream; import java.util.jar.JarOutputStream; import java.util.jar.Manifest; import junit.framework.TestCase; import org.eclipse.gemini.blueprint.test.internal.util.jar.JarUtils; import org.eclipse.gemini.blueprint.test.internal.util.jar.ManifestUtils; import org.eclipse.gemini.blueprint.test.internal.util.jar.storage.MemoryStorage; import org.eclipse.gemini.blueprint.test.internal.util.jar.storage.Storage; import org.osgi.framework.Constants; import org.springframework.core.io.Resource; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * * @author Costin Leau */ public class ManifestUtilsTest extends TestCase { private Storage storage; private JarInputStream in; protected void setUp() throws Exception { storage = new MemoryStorage(); } protected void tearDown() throws Exception { storage.dispose(); IOUtils.closeStream(in); } public void testEmptyManifest() throws Exception { Manifest mf = new Manifest(); mf.getMainAttributes().putValue("foo", "bar"); createJar(mf); in = new JarInputStream(storage.getInputStream()); assertEquals(mf, in.getManifest()); } public void testJarUtilsReadResource() throws Exception { Manifest mf = new Manifest(); mf.getMainAttributes().putValue("foo", "bar"); createJar(mf); assertEquals(mf, JarUtils.getManifest(storage.getResource())); } public void testExportEntries() throws Exception { Manifest mf = new Manifest(); Attributes attrs = mf.getMainAttributes(); String[] packages = new String[] { "foo.bar; version:=1", "bar.foo", "hop.trop" }; attrs.putValue(Constants.EXPORT_PACKAGE, StringUtils.arrayToCommaDelimitedString(packages)); createJar(mf); String[] entries = ManifestUtils.determineImportPackages(new Resource[] { storage.getResource(), storage.getResource() }); assertEquals(3, entries.length); ObjectUtils.nullSafeEquals(packages, entries); } private void createJar(Manifest mf) throws Exception { mf.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); JarOutputStream out = new JarOutputStream(storage.getOutputStream(), mf); out.flush(); out.close(); } }