[ 
https://issues.apache.org/jira/browse/FELIX-2318?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12863839#action_12863839
 ] 

Marco commented on FELIX-2318:
------------------------------

Yesterday, I stumbled exactly over this NPE, which was not very developer 
friendly and forced me to dig quite deep into it (decompiling & debugging).

I'm not sure whether I can agree to Sahoo's suggestion to return a value in 
this case. I mean, if there is no proper MANIFEST, it is not a valid OSGi 
bundle and thus the method installOrUpdateBundle(...) cannot really return 
anything meaningful. Or am I overlooking anything?

Anyway, for me (and everyone else not being aware of the MANIFEST.MF being 
required at the very beginning of the JAR) a simple exception with a precise 
error message would have been most helpful. I therefore recommend to simply add 
sth. like this:

if (m == null)
  throw new BundleException(
    String.format(
      "The bundle %s does not have a META-INF/MANIFEST.MF! "+
      "Make sure, META-INF and MANIFEST.MF are the first 2 entries in your 
JAR!",
      bundleLocation
    )
  );

> Possible NPE for jars with null Manifest
> ----------------------------------------
>
>                 Key: FELIX-2318
>                 URL: https://issues.apache.org/jira/browse/FELIX-2318
>             Project: Felix
>          Issue Type: Bug
>          Components: File Install
>            Reporter: Sahoo
>
> JarFile.getManifest() can return null, so caller must check return value for 
> null-ness to avoid NPE. I see two such occurrences in fileinstall:
> DirectoryWatcher.java:
>     private Bundle installOrUpdateBundle(
>         String bundleLocation, BufferedInputStream is, long checksum)
>         throws IOException, BundleException
>     {
>         is.mark(256 * 1024);
>         JarInputStream jar = new JarInputStream(is);
>         Manifest m = jar.getManifest();
>         String sn = 
> m.getMainAttributes().getValue(Constants.BUNDLE_SYMBOLICNAME);
> ...
> BundleTransformer.java:
>             Manifest m = jar.getManifest();
>             if (m.getMainAttributes().getValue(new 
> Attributes.Name("Bundle-SymbolicName")) != null)
>             ...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to