Changeset 0db7e28


Ignore:
Timestamp:
Jul 3, 2013 5:12:32 PM (7 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
b9a5dd4
Parents:
b84bfd57
Message:
  • Updater: Fix plugin update checker (ticket #897)
  • Utils: Reduce logging in wrapper log when extracting zip files
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java

    rb84bfd57 r0db7e28  
    3131 */
    3232class PluginUpdateChecker extends UpdateRunner {
    33     private final ByteArrayOutputStream _baos;
    3433    private final String _appName;
    3534    private final String _oldVersion;
     
    3736    public PluginUpdateChecker(RouterContext ctx, ConsoleUpdateManager mgr,
    3837                               List<URI> uris, String appName, String oldVersion ) {
    39         super(ctx, mgr, uris);
    40         _baos = new ByteArrayOutputStream(TrustedUpdate.HEADER_BYTES);
     38        super(ctx, mgr, uris, oldVersion);
    4139        if (!uris.isEmpty())
    4240            _currentURI = uris.get(0);
     
    8684
    8785        @Override
    88         public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified) {
     86        public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining,
     87                                     String url, String outputFile, boolean notModified) {
     88            super.transferComplete(alreadyTransferred, bytesTransferred, bytesRemaining,
     89                                   url, outputFile, notModified);
    8990            // super sets _newVersion if newer
    9091            boolean newer = _newVersion != null;
  • apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java

    rb84bfd57 r0db7e28  
    2222import net.i2p.util.FileUtil;
    2323import net.i2p.util.I2PAppThread;
     24import net.i2p.util.Log;
    2425import net.i2p.util.OrderedProperties;
    2526import net.i2p.util.SecureDirectory;
     
    148149            }
    149150            File tempDir = new File(_context.getTempDir(), "tmp" + _context.random().nextInt() + "-unzip");
    150             if (!FileUtil.extractZip(to, tempDir)) {
     151            if (!FileUtil.extractZip(to, tempDir, Log.ERROR)) {
    151152                f.delete();
    152153                to.delete();
     
    375376
    376377            // Finally, extract the zip to the plugin directory
    377             if (!FileUtil.extractZip(to, destDir)) {
     378            if (!FileUtil.extractZip(to, destDir, Log.WARN)) {
    378379                to.delete();
    379380                statusDone("<b>" + _("Failed to install plugin in {0}", destDir.getAbsolutePath()) + "</b>");
  • apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java

    rb84bfd57 r0db7e28  
    4040    /** set by the listeners on completion */
    4141    protected String _newVersion;
    42     // 56 byte header, only used for suds
    43     private final ByteArrayOutputStream _baos;
     42    /** 56 byte header, only used for suds */
     43    protected final ByteArrayOutputStream _baos;
    4444    protected URI _currentURI;
     45    private final String _currentVersion;
    4546
    4647    private static final String SIGNED_UPDATE_FILE = "i2pupdate.sud";
     
    5051    protected static final long NOPROXY_INACTIVITY_TIMEOUT = 60*1000;
    5152
     53    /**
     54     *  Uses router version for partial checks
     55     */
    5256    public UpdateRunner(RouterContext ctx, ConsoleUpdateManager mgr, List<URI> uris) {
     57        this(ctx, mgr, uris, RouterVersion.VERSION);
     58    }
     59
     60    /**
     61     *  @param currentVersion used for partial checks
     62     *  @since 0.9.7
     63     */
     64    public UpdateRunner(RouterContext ctx, ConsoleUpdateManager mgr, List<URI> uris, String currentVersion) {
    5365        super("Update Runner");
    5466        setDaemon(true);
     
    5971        _baos = new ByteArrayOutputStream(TrustedUpdate.HEADER_BYTES);
    6072        _updateFile = (new File(ctx.getTempDir(), "update" + ctx.random().nextInt() + ".tmp")).getAbsolutePath();
     73        _currentVersion = currentVersion;
    6174    }
    6275
     
    185198            // Compare version with what we have now
    186199            String newVersion = TrustedUpdate.getVersionString(new ByteArrayInputStream(_baos.toByteArray()));
    187             boolean newer = VersionComparator.comp(newVersion, RouterVersion.VERSION) > 0;
     200            boolean newer = VersionComparator.comp(newVersion, _currentVersion) > 0;
    188201            if (newer) {
    189202                _newVersion = newVersion;
  • core/java/src/net/i2p/util/FileUtil.java

    rb84bfd57 r0db7e28  
    9090     *  As of release 0.7.12, any files inside the zip that have a .jar.pack or .war.pack suffix
    9191     *  are transparently unpacked to a .jar or .war file using unpack200.
     92     *  Logs at WARN level to wrapper.log
    9293     */
    9394    public static boolean extractZip(File zipfile, File targetDir) {
     95        return extractZip(zipfile, targetDir, Log.WARN);
     96    }
     97
     98    /**
     99      * @param logLevel Log.WARN, etc.
     100      * @return true if it was copied successfully
     101      * @since 0.9.7
     102      */
     103    public static boolean extractZip(File zipfile, File targetDir, int logLevel) {
     104        int files = 0;
    94105        ZipFile zip = null;
    95106        try {
     
    108119                    boolean parentsOk = parent.mkdirs();
    109120                    if (!parentsOk) {
    110                         System.err.println("ERROR: Unable to create the parent dir for " + entry.getName() + ": [" + parent.getAbsolutePath() + "]");
     121                        if (logLevel <= Log.ERROR)
     122                            System.err.println("ERROR: Unable to create the parent dir for " + entry.getName() + ": [" + parent.getAbsolutePath() + "]");
    111123                        return false;
    112124                    }
     
    116128                        boolean created = target.mkdirs();
    117129                        if (!created) {
    118                             System.err.println("ERROR: Unable to create the directory [" + entry.getName() + "]");
     130                            if (logLevel <= Log.ERROR)
     131                                System.err.println("ERROR: Unable to create the directory [" + entry.getName() + "]");
    119132                            return false;
    120                         } else {
     133                        } else if (logLevel <= Log.INFO) {
    121134                            System.err.println("INFO: Creating directory [" + entry.getName() + "]");
    122135                        }
     
    132145                            jos = new JarOutputStream(new FileOutputStream(target));
    133146                            unpack(in, jos);
    134                             System.err.println("INFO: File [" + entry.getName() + "] extracted and unpacked");
     147                            if (logLevel <= Log.INFO)
     148                                System.err.println("INFO: File [" + entry.getName() + "] extracted and unpacked");
    135149                        } else {
    136150                            fos = new FileOutputStream(target);
     
    139153                                fos.write(buf, 0, read);
    140154                            }
    141                             System.err.println("INFO: File [" + entry.getName() + "] extracted");
     155                            if (logLevel <= Log.INFO)
     156                                System.err.println("INFO: File [" + entry.getName() + "] extracted");
    142157                        }
     158                        files++;
    143159                    } catch (IOException ioe) {
    144                         System.err.println("ERROR: Error extracting the zip entry (" + entry.getName() + ')');
    145                         if (ioe.getMessage() != null && ioe.getMessage().indexOf("CAFED00D") >= 0)
    146                             System.err.println("This may be caused by a packed library that requires Java 1.6, your Java version is: " +
    147                                                System.getProperty("java.version"));
    148                         ioe.printStackTrace();
     160                        if (logLevel <= Log.ERROR) {
     161                            System.err.println("ERROR: Error extracting the zip entry (" + entry.getName() + ')');
     162                            if (ioe.getMessage() != null && ioe.getMessage().indexOf("CAFED00D") >= 0)
     163                                System.err.println("This may be caused by a packed library that requires Java 1.6, your Java version is: " +
     164                                                   System.getProperty("java.version"));
     165                            ioe.printStackTrace();
     166                        }
    149167                        return false;
    150168                    } catch (Exception e) {
     
    152170                        // java.lang.reflect.InvocationTargetException
    153171                        // Caused by: java.util.zip.ZipException: duplicate entry: xxxxx
    154                         System.err.println("ERROR: Error extracting the zip entry (" + entry.getName() + ')');
    155                         e.printStackTrace();
     172                        if (logLevel <= Log.ERROR) {
     173                            System.err.println("ERROR: Error extracting the zip entry (" + entry.getName() + ')');
     174                            e.printStackTrace();
     175                        }
    156176                        return false;
    157177                    } finally {
     
    164184            return true;
    165185        } catch (IOException ioe) {
    166             System.err.println("ERROR: Unable to extract the zip file");
    167             ioe.printStackTrace();
     186            if (logLevel <= Log.ERROR) {
     187                System.err.println("ERROR: Unable to extract the zip file");
     188                ioe.printStackTrace();
     189            }
    168190            return false;
    169191        } finally {
     
    171193                try { zip.close(); } catch (IOException ioe) {}
    172194            }
     195            if (files > 0 && logLevel <= Log.WARN)
     196                System.err.println("INFO: " + files + " files extracted to " + targetDir);
    173197        }
    174198    }
  • history.txt

    rb84bfd57 r0db7e28  
     12013-07-03 zzz
     2 * Updater: Fix plugin update checker (ticket #897)
     3 * Utils: Reduce logging in wrapper log when extracting zip files
     4
    152013-06-30 zzz
    26 * BuildHandler: Drop build request with bad flags
  • router/java/src/net/i2p/router/RouterVersion.java

    rb84bfd57 r0db7e28  
    1919    public final static String ID = "Monotone";
    2020    public final static String VERSION = CoreVersion.VERSION;
    21     public final static long BUILD = 14;
     21    public final static long BUILD = 15;
    2222
    2323    /** for example "-test" */
Note: See TracChangeset for help on using the changeset viewer.