]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2227 Manage plugin incompatibility at sonar startup
authorJulien Lancelot <julien.lancelot@gmail.com>
Tue, 19 Feb 2013 11:47:58 +0000 (12:47 +0100)
committerJulien Lancelot <julien.lancelot@gmail.com>
Tue, 19 Feb 2013 11:48:11 +0000 (12:48 +0100)
sonar-server/src/main/java/org/sonar/server/plugins/InstalledPluginReferentialFactory.java
sonar-server/src/main/java/org/sonar/server/plugins/PluginDeployer.java
sonar-server/src/main/java/org/sonar/server/plugins/PluginReferentialMetadataConverter.java
sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java
sonar-server/src/main/webapp/WEB-INF/app/views/updatecenter/available.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/updatecenter/index.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/updatecenter/updates.html.erb

index 34fb76946f8c897ac18d15f9c9ae1398f764d558..e84535eb1892b8ddff0272174e9a2ec96e96a461 100644 (file)
@@ -34,11 +34,16 @@ public class InstalledPluginReferentialFactory implements ServerComponent {
     this.pluginReferentialMetadataConverter = pluginReferentialMetadataConverter;
   }
 
+  public void start(){
+    init();
+  }
+
   public PluginReferential getInstalledPluginReferential() {
-    if (installedPluginReferential == null) {
-      installedPluginReferential = pluginReferentialMetadataConverter.getInstalledPluginReferential(pluginRepository.getMetadata());
-    }
     return installedPluginReferential;
   }
 
+  private void init(){
+    installedPluginReferential = pluginReferentialMetadataConverter.getInstalledPluginReferential(pluginRepository.getMetadata());
+  }
+
 }
index 0bffc34d193306aa2c55e80c65bb21fada644769..f8aed096ab96f8d1c9c3a46ed7d9959cc462f302 100644 (file)
@@ -151,13 +151,13 @@ public class PluginDeployer implements ServerComponent {
     }
   }
 
-  public void uninstallPluginWithDependencies(String pluginKey) {
+  public void uninstall(String pluginKey) {
     for (String key : getPluginReferential().findReleasesWithDependencies(pluginKey)) {
-      uninstall(key);
+      uninstallPlugin(key);
     }
   }
 
-  public void uninstall(String pluginKey) {
+  private void uninstallPlugin(String pluginKey) {
     PluginMetadata metadata = pluginByKeys.get(pluginKey);
     if ((metadata != null) && !metadata.isCore()) {
       try {
@@ -200,9 +200,6 @@ public class PluginDeployer implements ServerComponent {
   }
 
   private void deploy(DefaultPluginMetadata plugin) {
-
-    // TODO check version, parent, dependencies, ...
-
     LOG.info("Deploy plugin {}", Joiner.on(" / ").skipNulls().join(plugin.getName(), plugin.getVersion(), plugin.getImplementationBuild()));
 
     Preconditions.checkState(plugin.isCompatibleWith(server.getVersion()),
index f2da184070997e76fe5befa1460fd457db5e322f..ceccc02d24df2283dec44a3f1146b868ee7713e0 100644 (file)
@@ -21,11 +21,9 @@ package org.sonar.server.plugins;
 
 import org.sonar.api.ServerComponent;
 import org.sonar.api.platform.PluginMetadata;
-import org.sonar.api.platform.Server;
 import org.sonar.updatecenter.common.PluginManifest;
 import org.sonar.updatecenter.common.PluginReferential;
 import org.sonar.updatecenter.common.PluginReferentialManifestConverter;
-import org.sonar.updatecenter.common.Version;
 
 import java.util.Collection;
 import java.util.List;
@@ -34,15 +32,9 @@ import static com.google.common.collect.Lists.newArrayList;
 
 public class PluginReferentialMetadataConverter implements ServerComponent {
 
-  private Version sonarVersion;
-
-  public PluginReferentialMetadataConverter(Server server) {
-    this.sonarVersion = Version.create(server.getVersion());
-  }
-
   public PluginReferential getInstalledPluginReferential(Collection<PluginMetadata> metadata) {
     List<PluginManifest> pluginManifestList = getPluginManifestList(metadata);
-    return PluginReferentialManifestConverter.fromPluginManifests(pluginManifestList, sonarVersion);
+    return PluginReferentialManifestConverter.fromPluginManifests(pluginManifestList);
   }
 
   private List<PluginManifest> getPluginManifestList(Collection<PluginMetadata> metadata) {
index c2bb38c09a764652ddd4178b166c2d2bc906760d..7d408b124a4b161ebb7a5d709a6383c4a0485184 100644 (file)
@@ -41,7 +41,11 @@ import org.sonar.api.test.MutableTestable;
 import org.sonar.api.test.TestPlan;
 import org.sonar.api.test.Testable;
 import org.sonar.api.utils.ValidationMessages;
-import org.sonar.api.web.*;
+import org.sonar.api.web.Footer;
+import org.sonar.api.web.NavigationSection;
+import org.sonar.api.web.Page;
+import org.sonar.api.web.RubyRailsWebservice;
+import org.sonar.api.web.Widget;
 import org.sonar.api.workflow.Review;
 import org.sonar.api.workflow.internal.DefaultReview;
 import org.sonar.api.workflow.internal.DefaultWorkflowContext;
@@ -62,8 +66,16 @@ import org.sonar.markdown.Markdown;
 import org.sonar.server.configuration.Backup;
 import org.sonar.server.configuration.ProfilesManager;
 import org.sonar.server.notifications.reviews.ReviewsNotificationManager;
-import org.sonar.server.platform.*;
-import org.sonar.server.plugins.*;
+import org.sonar.server.platform.NewUserNotifier;
+import org.sonar.server.platform.Platform;
+import org.sonar.server.platform.ServerIdGenerator;
+import org.sonar.server.platform.ServerSettings;
+import org.sonar.server.platform.SettingsChangeNotifier;
+import org.sonar.server.plugins.DefaultServerPluginRepository;
+import org.sonar.server.plugins.InstalledPluginReferentialFactory;
+import org.sonar.server.plugins.PluginDeployer;
+import org.sonar.server.plugins.PluginDownloader;
+import org.sonar.server.plugins.UpdateCenterMatrixFactory;
 import org.sonar.server.rules.ProfilesConsole;
 import org.sonar.server.rules.RulesConsole;
 import org.sonar.updatecenter.common.PluginReferential;
@@ -71,9 +83,14 @@ import org.sonar.updatecenter.common.UpdateCenter;
 import org.sonar.updatecenter.common.Version;
 
 import javax.annotation.Nullable;
+
 import java.net.InetAddress;
 import java.sql.Connection;
-import java.util.*;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import static com.google.common.collect.Lists.newArrayList;
 
@@ -162,7 +179,7 @@ public final class JRubyFacade {
   }
 
   public void uninstallPlugin(String pluginKey) {
-    get(PluginDeployer.class).uninstallPluginWithDependencies(pluginKey);
+    get(PluginDeployer.class).uninstall(pluginKey);
   }
 
   public void cancelPluginUninstalls() {
index 3eb144d865ffa27512269e9e3a2cf459f7995f25..f2085e577282b12a45abaebf532895528d9a2a77 100644 (file)
@@ -52,7 +52,7 @@ function installPlugin(key) {
                 <% else %>
                   <td>&nbsp;</td>
                 <% end %>
-                <td><span><%= outgoing_release.artifact.name -%> version <%= outgoing_release.version.name -%></span></td>
+                <td><span><%= outgoing_release.artifact.name -%></span></td>
               </tr>
             <% end %>
 
index 5921c38589f13b82f2abf54cb120f91b611093c7..5b8d522145437b9728abccdf17146e1a0af2a2be 100644 (file)
@@ -38,7 +38,7 @@
                <% else %>
                  <td>&nbsp;</td>
                <% end %>
-               <td><span><%= outgoing_release.artifact.name -%> version <%= outgoing_release.version.name -%></span></td>
+               <td><span><%= outgoing_release.artifact.name -%></span></td>
              </tr>
            <% end %>
            <% release.incomingDependencies.each_with_index do |incoming_release, index| %>
@@ -48,7 +48,7 @@
                <% else %>
                  <td>&nbsp;</td>
                <% end %>
-               <td><span><%= incoming_release.artifact.name -%> version <%= incoming_release.version.name -%></span></td>
+               <td><span><%= incoming_release.artifact.name -%></span></td>
              </tr>
            <% end %>
 
index eb679eb7da7645066c5b430dc4707175d3698b96..fc6f195a617654bbf2833056f0974d24666dedd7 100644 (file)
@@ -63,7 +63,7 @@ function upgradePlugin(key) {
              <td >&nbsp;</td>
            <% end %>
            <td colspan="4">
-             <span><%= outgoing_release.artifact.name -%> version <%= outgoing_release.version.name -%></span>
+             <span><%= outgoing_release.artifact.name -%></span>
            </td>
          </tr>
        <% end %>