You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ds...@apache.org on 2010/08/06 16:14:05 UTC
svn commit: r982975 - in /felix/trunk/sigil: common/core/
common/core/src/org/apache/felix/sigil/common/config/
common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/
common/core/src/org/apache/felix/sigil/common/core/repository/ co...
Author: dsavage
Date: Fri Aug 6 14:14:04 2010
New Revision: 982975
URL: http://svn.apache.org/viewvc?rev=982975&view=rev
Log:
use shared util method to read Manifest from ZipFiles (FELIX-2527)
Added:
felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/
- copied from r982545, felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/util/
Removed:
felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/util/
Modified:
felix/trunk/sigil/common/core/sigil.properties
felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/config/BldConfig.java
felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java
felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/DirectoryHelper.java
felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/SystemRepository.java
felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/repository/AbstractBundleRepository.java
felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/ManifestUtil.java
felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/QuoteUtil.java
felix/trunk/sigil/eclipse/core/sigil.properties
felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/OSGiInstallRepository.java
Modified: felix/trunk/sigil/common/core/sigil.properties
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/sigil.properties?rev=982975&r1=982974&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/sigil.properties (original)
+++ felix/trunk/sigil/common/core/sigil.properties Fri Aug 6 14:14:04 2010
@@ -16,6 +16,7 @@
org.apache.felix.sigil.common.core*, \
org.apache.felix.sigil.common.model*, \
org.apache.felix.sigil.common.repository*, \
+ org.apache.felix.sigil.common.util*, \
org.apache.felix.sigil.common.progress*,
-resources: \
@@ -40,8 +41,9 @@
org.apache.felix.sigil.common.model, \
org.apache.felix.sigil.common.model.eclipse, \
org.apache.felix.sigil.common.model.osgi, \
- org.apache.felix.sigil.common.repository, \
org.apache.felix.sigil.common.progress, \
+ org.apache.felix.sigil.common.repository, \
+ org.apache.felix.sigil.common.util, \
-imports: \
aQute.lib.osgi;resolve=compile, \
@@ -55,6 +57,7 @@
org.apache.felix.sigil.common.model.osgi, \
org.apache.felix.sigil.common.osgi, \
org.apache.felix.sigil.common.repository, \
+ org.apache.felix.sigil.common.util, \
org.osgi.framework, \
header;Bundle-ActivationPolicy: lazy
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/config/BldConfig.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/config/BldConfig.java?rev=982975&r1=982974&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/config/BldConfig.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/config/BldConfig.java Fri Aug 6 14:14:04 2010
@@ -29,7 +29,7 @@ import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
-import org.apache.felix.sigil.common.core.util.QuoteUtil;
+import org.apache.felix.sigil.common.util.QuoteUtil;
public class BldConfig
{
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java?rev=982975&r1=982974&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java Fri Aug 6 14:14:04 2010
@@ -36,7 +36,6 @@ import java.util.jar.JarFile;
import org.apache.felix.sigil.common.config.Resource;
import org.apache.felix.sigil.common.core.BldCore;
-import org.apache.felix.sigil.common.core.util.ManifestUtil;
import org.apache.felix.sigil.common.model.AbstractCompoundModelElement;
import org.apache.felix.sigil.common.model.eclipse.IBundleCapability;
import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
@@ -44,6 +43,7 @@ import org.apache.felix.sigil.common.mod
import org.apache.felix.sigil.common.model.osgi.IPackageExport;
import org.apache.felix.sigil.common.model.osgi.IPackageImport;
import org.apache.felix.sigil.common.progress.IProgress;
+import org.apache.felix.sigil.common.util.ManifestUtil;
import org.osgi.framework.Version;
/**
@@ -115,10 +115,10 @@ public class SigilBundle extends Abstrac
{
if (location != null && location.exists())
{
- JarFile f = new JarFile(location);
+ JarFile f = new JarFile(location, false);
try
{
- setBundleInfo(ManifestUtil.buildBundleModelElement(f.getManifest()));
+ setBundleInfo(ManifestUtil.buildBundleModelElement(f));
}
finally
{
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/DirectoryHelper.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/DirectoryHelper.java?rev=982975&r1=982974&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/DirectoryHelper.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/DirectoryHelper.java Fri Aug 6 14:14:04 2010
@@ -23,7 +23,6 @@ import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.jar.JarFile;
-import java.util.jar.Manifest;
import org.apache.felix.sigil.common.core.BldCore;
import org.apache.felix.sigil.common.model.ModelElementFactory;
@@ -31,6 +30,7 @@ import org.apache.felix.sigil.common.mod
import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
import org.apache.felix.sigil.common.model.osgi.IBundleModelElement;
import org.apache.felix.sigil.common.repository.AbstractBundleRepository;
+import org.apache.felix.sigil.common.util.ManifestUtil;
public class DirectoryHelper
{
@@ -54,7 +54,7 @@ public class DirectoryHelper
try
{
jar = new JarFile(f, false);
- ISigilBundle bundle = buildBundle(repository, jar.getManifest(),
+ ISigilBundle bundle = buildBundle(repository, jar,
f);
if (bundle != null)
{
@@ -96,9 +96,9 @@ public class DirectoryHelper
}
private static ISigilBundle buildBundle(AbstractBundleRepository repository,
- Manifest manifest, File f)
+ JarFile jar, File f) throws IOException
{
- IBundleModelElement info = repository.buildBundleModelElement(manifest);
+ IBundleModelElement info = ManifestUtil.buildBundleModelElement(jar);
ISigilBundle bundle = null;
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/SystemRepository.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/SystemRepository.java?rev=982975&r1=982974&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/SystemRepository.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/SystemRepository.java Fri Aug 6 14:14:04 2010
@@ -31,6 +31,7 @@ import org.apache.felix.sigil.common.mod
import org.apache.felix.sigil.common.model.osgi.IPackageExport;
import org.apache.felix.sigil.common.repository.AbstractBundleRepository;
import org.apache.felix.sigil.common.repository.IRepositoryVisitor;
+import org.apache.felix.sigil.common.util.ManifestUtil;
public class SystemRepository extends AbstractBundleRepository
{
@@ -73,8 +74,8 @@ public class SystemRepository extends Ab
if (frameworkPath != null)
{
systemBundle.setLocation(frameworkPath);
- jar = new JarFile(frameworkPath);
- info = buildBundleModelElement(jar.getManifest());
+ jar = new JarFile(frameworkPath,false);
+ info = ManifestUtil.buildBundleModelElement(jar);
}
else
{
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/repository/AbstractBundleRepository.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/repository/AbstractBundleRepository.java?rev=982975&r1=982974&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/repository/AbstractBundleRepository.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/repository/AbstractBundleRepository.java Fri Aug 6 14:14:04 2010
@@ -24,12 +24,10 @@ import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
-import java.util.jar.Manifest;
import org.apache.felix.sigil.common.core.BldCore;
import org.apache.felix.sigil.common.core.licence.ILicenseManager;
import org.apache.felix.sigil.common.core.licence.ILicensePolicy;
-import org.apache.felix.sigil.common.core.util.ManifestUtil;
import org.apache.felix.sigil.common.model.IModelElement;
import org.apache.felix.sigil.common.model.eclipse.ILibrary;
import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
@@ -257,11 +255,6 @@ public abstract class AbstractBundleRepo
return found.isEmpty() ? null : found.iterator().next();
}
- public IBundleModelElement buildBundleModelElement(Manifest mf)
- {
- return ManifestUtil.buildBundleModelElement(mf);
- }
-
protected ILicensePolicy findPolicy(IModelElement elem)
{
ILicenseManager man = BldCore.getLicenseManager();
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/ManifestUtil.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/ManifestUtil.java?rev=982975&r1=982545&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/ManifestUtil.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/ManifestUtil.java Fri Aug 6 14:14:04 2010
@@ -1,9 +1,13 @@
-package org.apache.felix.sigil.common.core.util;
+package org.apache.felix.sigil.common.util;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.Arrays;
import java.util.Collection;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
import org.apache.felix.sigil.common.core.BldCore;
import org.apache.felix.sigil.common.model.ModelElementFactory;
@@ -18,10 +22,34 @@ import org.osgi.framework.Version;
public class ManifestUtil
{
- public static IBundleModelElement buildBundleModelElement(Manifest mf)
- {
+ /**
+ * Use this utility to read Manifest from a JarFile or ZipFile
+ * due to http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6735255
+ *
+ * @param zip
+ * @return
+ * @throws IOException
+ */
+ public static Manifest getManifest(ZipFile zip) throws IOException {
+ ZipEntry entry = zip.getEntry("META-INF/MANIFEST.MF");
+ if ( entry == null ) return null;
+
+ InputStream in = zip.getInputStream(entry);
+ try {
+ return new Manifest(in);
+ }
+ finally {
+ // explicitly close due to
+ // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6735255
+ in.close();
+ }
+ }
+
+ public static IBundleModelElement buildBundleModelElement(ZipFile zip) throws IOException {
IBundleModelElement info = null;
+ Manifest mf = getManifest(zip);
+
if (mf != null)
{
Attributes attrs = mf.getMainAttributes();
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/QuoteUtil.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/QuoteUtil.java?rev=982975&r1=982545&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/QuoteUtil.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/common/util/QuoteUtil.java Fri Aug 6 14:14:04 2010
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.felix.sigil.common.core.util;
+package org.apache.felix.sigil.common.util;
import java.util.ArrayList;
Modified: felix/trunk/sigil/eclipse/core/sigil.properties
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/core/sigil.properties?rev=982975&r1=982974&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/core/sigil.properties (original)
+++ felix/trunk/sigil/eclipse/core/sigil.properties Fri Aug 6 14:14:04 2010
@@ -38,8 +38,9 @@
org.apache.felix.sigil.common.model.eclipse, \
org.apache.felix.sigil.common.model.osgi, \
org.apache.felix.sigil.common.osgi, \
- org.apache.felix.sigil.common.progress;version=0.9.0, \
+ org.apache.felix.sigil.common.progress, \
org.apache.felix.sigil.common.repository, \
+ org.apache.felix.sigil.common.util, \
org.apache.felix.sigil.eclipse, \
org.apache.felix.sigil.eclipse.install, \
org.apache.felix.sigil.eclipse.job, \
Modified: felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/OSGiInstallRepository.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/OSGiInstallRepository.java?rev=982975&r1=982974&r2=982975&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/OSGiInstallRepository.java (original)
+++ felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/OSGiInstallRepository.java Fri Aug 6 14:14:04 2010
@@ -26,7 +26,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.jar.JarFile;
-import java.util.jar.Manifest;
import org.apache.felix.sigil.common.core.BldCore;
import org.apache.felix.sigil.common.model.ModelElementFactory;
@@ -35,6 +34,7 @@ import org.apache.felix.sigil.common.mod
import org.apache.felix.sigil.common.model.osgi.IBundleModelElement;
import org.apache.felix.sigil.common.repository.AbstractBundleRepository;
import org.apache.felix.sigil.common.repository.IRepositoryVisitor;
+import org.apache.felix.sigil.common.util.ManifestUtil;
import org.apache.felix.sigil.eclipse.SigilCore;
import org.apache.felix.sigil.eclipse.install.IOSGiInstall;
import org.eclipse.core.runtime.IPath;
@@ -106,8 +106,8 @@ public class OSGiInstallRepository exten
JarFile jar = null;
try
{
- jar = new JarFile(f);
- ISigilBundle bundle = buildBundle(jar.getManifest(), f);
+ jar = new JarFile(f, false);
+ ISigilBundle bundle = buildBundle(jar, f);
if (bundle != null)
{
bundle.setLocation(f);
@@ -145,9 +145,9 @@ public class OSGiInstallRepository exten
}
}
- private ISigilBundle buildBundle(Manifest manifest, File f)
+ private ISigilBundle buildBundle(JarFile jar, File f) throws IOException
{
- IBundleModelElement info = buildBundleModelElement(manifest);
+ IBundleModelElement info = ManifestUtil.buildBundleModelElement(jar);
ISigilBundle bundle = null;