Changeset 5268


Ignore:
Timestamp:
Mar 12, 2010, 10:36:03 AM (12 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #1464: Automatic plug-in installer crashes when an invalid jar file is found

Location:
branches/2.15-stable/www/admin/plugindefinitions
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.15-stable/www/admin/plugindefinitions/auto_install.jsp

    r4945 r5268  
    7272  throws Exception
    7373{
    74   List<PluginInfo> plugins = PluginInfo.loadFromJar(file);
    75   if (plugins != null && plugins.size() > 0)
     74  try
    7675  {
    77     Tree.Entry jarEntry = tree.getRootEntry().addChild(file);
    78     for (PluginInfo pluginInfo : plugins)
    79     {
    80       pluginInfo.checkInstallation(dc);
    81       Tree.Entry pluginEntry = jarEntry.addChild(pluginInfo);
    82       List<PluginConfigInfo> configs = pluginInfo.getConfigurations();
    83       if (configs != null)
    84       {
    85         for (PluginConfigInfo configInfo : configs)
    86         {
    87           configInfo.checkInstallation(dc);
    88           pluginEntry.addChild(configInfo);
    89         }
    90       }
    91     }
     76    List<PluginInfo> plugins = PluginInfo.loadFromJar(file);
     77    if (plugins != null && plugins.size() > 0)
     78    {
     79      Tree.Entry<Object> jarEntry = tree.getRootEntry().addChild(file);
     80      for (PluginInfo pluginInfo : plugins)
     81      {
     82        pluginInfo.checkInstallation(dc);
     83        Tree.Entry<Object> pluginEntry = jarEntry.addChild(pluginInfo);
     84        List<PluginConfigInfo> configs = pluginInfo.getConfigurations();
     85        if (configs != null)
     86        {
     87          for (PluginConfigInfo configInfo : configs)
     88          {
     89            configInfo.checkInstallation(dc);
     90            pluginEntry.addChild(configInfo);
     91          }
     92        }
     93      }
     94    }
     95  }
     96  catch (Exception ex)
     97  {
     98    Tree.Entry<Object> jarEntry = tree.getRootEntry().addChild(file);
     99    jarEntry.addChild(ex);
    92100  }
    93101}
     
    124132      name = file.getName();
    125133      folderIcon = "JarFile";
     134      Throwable error = null;
    126135      int numUpdated = 0;
    127136      int numInstalled = 0;
    128       for (Tree.Entry<Object> children : entry.getChildren())
    129       {
    130         PluginInfo child = (PluginInfo)children.getNode();
    131         if (!child.inSameJarFile() || child.hasDifferentVersion())
    132         {
    133           numUpdated++;
    134         }
    135         else
    136         {
    137           numInstalled++;
    138         }
    139       }
    140       if (numUpdated > 0)
     137      for (Tree.Entry<Object> child : entry.getChildren())
     138      {
     139        if (child.getNode() instanceof PluginInfo)
     140        {
     141          PluginInfo info = (PluginInfo)child.getNode();
     142          if (!info.inSameJarFile() || info.hasDifferentVersion())
     143          {
     144            numUpdated++;
     145          }
     146          else
     147          {
     148            numInstalled++;
     149          }
     150        }
     151        else if (child.getNode() instanceof Throwable)
     152        {
     153          error = (Throwable)child.getNode();
     154        }
     155      }
     156      if (error != null)
     157      {
     158        name += " (" + error.getMessage() + ")";
     159        folderIcon = "JarFileError";
     160      }
     161      else if (numUpdated > 0)
    141162      {
    142163        name += " (" + numUpdated + " new";
     
    180201        folderIcon = "Configuration";
    181202      }
     203    }
     204    else if (node instanceof Throwable)
     205    {
     206      Throwable t = (Throwable)node;
     207      name = t.toString();
     208      folderIcon = "Error";
    182209    }
    183210   
     
    336363      IconStore.init(iconDir + 'big/', 18, 22);
    337364      IconStore.addIcon('JarFile', iconDir + 'jarfile.png', 18, 16);
     365      IconStore.addIcon('JarFileError', iconDir + 'jarfileerror.png', 18, 16);
    338366      IconStore.addIcon('Plugin', iconDir + 'plugin.png', 18, 16);
    339367      IconStore.addIcon('PluginDisabled', iconDir + 'plugindisabled.png', 18, 16);
     
    456484              PluginConfigInfo configInfo = null;
    457485              java.io.File jarFile = null;
     486              Throwable error = null;
    458487              if (node instanceof PluginInfo)
    459488              {
     
    471500                name = jarFile.getName();
    472501              }
     502              else if (node instanceof Throwable)
     503              {
     504                error = (Throwable)node;
     505              }
    473506              %>
    474507              <tr id="row.<%=joustId%>">
     
    478511                {
    479512                  boolean enableInstall = false;
    480                   for (Tree.Entry<Object> children : entry.getChildren())
     513                  for (Tree.Entry<Object> child : entry.getChildren())
    481514                  {
    482                     PluginInfo child = (PluginInfo)children.getNode();
    483                     if (!child.isInstalled() ||
    484                         !child.inSameJarFile() ||
    485                         child.hasDifferentVersion())
     515                    if (child.getNode() instanceof PluginInfo)
    486516                    {
    487                       enableInstall = true;
     517                      PluginInfo info = (PluginInfo)child.getNode();
     518                      if (!info.isInstalled() ||
     519                          !info.inSameJarFile() ||
     520                          info.hasDifferentVersion())
     521                      {
     522                        enableInstall = true;
     523                      }
    488524                    }
    489525                  }
  • branches/2.15-stable/www/admin/plugindefinitions/index.jsp

    r5060 r5268  
    200200    for (java.io.File file : jarFiles)
    201201    {
    202       pluginInfos.addAll(PluginInfo.loadFromJar(file));
     202      try
     203      {
     204        pluginInfos.addAll(PluginInfo.loadFromJar(file));
     205      }
     206      catch (Exception ex)
     207      {}
    203208    }
    204209    //Load selected plugins.
Note: See TracChangeset for help on using the changeset viewer.