private static @Nonnull URL[] createClassloaderUrls(@Nonnull URL url) throws PluginException {
  List<URL> urls=new ArrayList<URL>();
  urls.add(url);
  Manifest mf=null;
  File f=new File(url.getPath());
  if (!f.isDirectory()) {
    JarInputStream jis=null;
    try {
      jis=new JarInputStream(url.openStream());
      mf=jis.getManifest();
    }
 catch (    IOException ioe) {
      throw new PluginException("Failed loading manifest for plugin jar: " + url,ioe);
    }
 finally {
      IO.close(jis);
    }
  }
 else {
    File manifest=guessManifest(f);
    if (manifest != null) {
      FileInputStream is=null;
      try {
        is=new FileInputStream(manifest);
        mf=new Manifest(is);
      }
 catch (      IOException e) {
        throw new PluginException("Failed loading manifest for plugin jar: " + url,e);
      }
 finally {
        IO.close(is);
      }
    }
  }
  if (mf != null) {
    try {
      addClassPathFromManifest(url,urls,mf);
    }
 catch (    MalformedURLException e) {
      throw new PluginException("Failed loading manifest for plugin jar: " + url,e);
    }
  }
  return urls.toArray(new URL[urls.size()]);
}

private static @ Nonnull URL [ ] createClassloaderUrls ( @ Nonnull URL url ) throws PluginException { List < URL > urls = new ArrayList < URL > ( ) ; urls . add ( url ) ; Manifest mf = null ; File f = new File ( url . getPath ( ) ) ; if ( ! f . isDirectory ( ) ) { JarInputStream jis = null ; try { jis = new JarInputStream ( url . openStream ( ) ) ; mf = jis . getManifest ( ) ; } catch ( IOException ioe ) { throw new PluginException ( "Failed loading manifest for plugin jar: " + url , ioe ) ; } finally { IO . close ( jis ) ; } } else { File manifest = guessManifest ( f ) ; if ( manifest != null ) { FileInputStream is = null ; try { is = new FileInputStream ( manifest ) ; mf = new Manifest ( is ) ; } catch ( IOException e ) { throw new PluginException ( "Failed loading manifest for plugin jar: " + url , e ) ; } finally { IO . close ( is ) ; } } } if ( mf != null ) { try { addClassPathFromManifest ( url , urls , mf ) ; } catch ( MalformedURLException e ) { throw new PluginException ( "Failed loading manifest for plugin jar: " + url , e ) ; } } return urls . toArray ( new URL [ urls . size ( ) ] ) ; }
patch for issue 3429143 : allow plugins load classes / resources from 3rd party jars
