@Override public synchronized Extension install(URL url) throws InvalidConfigException {
  Preconditions.checkNotNull(url);
  try {
    File tmpFile=download(url);
    Extension extension=loadFromFile(tmpFile);
    finishInstall(tmpFile,extension);
    return extension;
  }
 catch (  InvalidConfigException e) {
    throw e;
  }
catch (  Exception e) {
    String msg=baseAction.getText("admin.extension.install.error",new String[]{url.toString()});
    log.error(msg,e);
    throw new InvalidConfigException(TYPE.INVALID_EXTENSION,msg,e);
  }
}

@ Override public synchronized Extension install ( URL url ) throws InvalidConfigException { Preconditions . checkNotNull ( url ) ; try { File tmpFile = download ( url ) ; Extension extension = loadFromFile ( tmpFile ) ; finishInstall ( tmpFile , extension ) ; return extension ; } catch ( InvalidConfigException e ) { throw e ; } catch ( Exception e ) { String msg = baseAction . getText ( "admin.extension.install.error" , new String [ ] { url . toString ( ) } ) ; log . error ( msg , e ) ; throw new InvalidConfigException ( TYPE . INVALID_EXTENSION , msg , e ) ; } }
download and install an extension into local file . the final filename is based on the extension ' s rowtype .
