]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5389 Allow to register unpackaged plugins
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 16 Jun 2014 07:35:37 +0000 (09:35 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 16 Jun 2014 07:42:46 +0000 (09:42 +0200)
sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java
sonar-batch/src/main/java/org/sonar/batch/bootstrap/DefaultPluginsReferential.java
sonar-batch/src/main/java/org/sonar/batch/bootstrap/PluginsReferential.java
sonar-plugin-api/src/main/java/org/sonar/api/issue/internal/DefaultIssue.java

index aea375f3c0d8d3d776020818d5833f148926144a..e65adbce4fc8ee9cf45e4a2fc3248fd3a834ac80 100644 (file)
@@ -28,6 +28,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.Plugin;
+import org.sonar.api.SonarPlugin;
 import org.sonar.api.config.Settings;
 import org.sonar.api.platform.PluginMetadata;
 import org.sonar.api.platform.PluginRepository;
@@ -69,6 +70,15 @@ public class BatchPluginRepository implements PluginRepository {
   public void start() {
     LOG.info("Install plugins");
     doStart(pluginsReferential.pluginList());
+
+    Map<PluginMetadata, SonarPlugin> localPlugins = pluginsReferential.localPlugins();
+    if (!localPlugins.isEmpty()) {
+      LOG.info("Install local plugins");
+      for (Map.Entry<PluginMetadata, SonarPlugin> pluginByMetadata : localPlugins.entrySet()) {
+        metadataByKey.put(pluginByMetadata.getKey().getKey(), pluginByMetadata.getKey());
+        pluginsByKey.put(pluginByMetadata.getKey().getKey(), pluginByMetadata.getValue());
+      }
+    }
   }
 
   void doStart(List<RemotePlugin> remotePlugins) {
index 93ae4e97c3439c72df00b9e91e33b5f8de55b14f..4d3c8d30d6470d2889bc5743ec709044fa16d385 100644 (file)
@@ -24,13 +24,17 @@ import org.apache.commons.lang.CharUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.sonar.api.SonarPlugin;
+import org.sonar.api.platform.PluginMetadata;
 import org.sonar.core.plugins.RemotePlugin;
 import org.sonar.core.plugins.RemotePluginFile;
 import org.sonar.home.cache.FileCache;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 /**
  * A {@link PluginsReferential} implementation that put downloaded plugins in a FS cache.
@@ -87,4 +91,9 @@ public class DefaultPluginsReferential implements PluginsReferential {
     }
   }
 
+  @Override
+  public Map<PluginMetadata, SonarPlugin> localPlugins() {
+    return Collections.emptyMap();
+  }
+
 }
index daf38ae7abff23a0ae501b3c25857ca0b1d56558..330c8bfb33775e5b35d8721fda9ff8a5d86ef7c7 100644 (file)
  */
 package org.sonar.batch.bootstrap;
 
+import org.sonar.api.SonarPlugin;
+import org.sonar.api.platform.PluginMetadata;
 import org.sonar.core.plugins.RemotePlugin;
 
 import java.io.File;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Plugin referential.
@@ -31,7 +34,7 @@ import java.util.List;
 public interface PluginsReferential {
 
   /**
-   * Return list of plugins to be installed
+   * Return list of remote plugins to be installed
    */
   List<RemotePlugin> pluginList();
 
@@ -40,4 +43,9 @@ public interface PluginsReferential {
    */
   File pluginFile(RemotePlugin remote);
 
+  /**
+   * Return the list of local plugins to be installed
+   */
+  Map<PluginMetadata, SonarPlugin> localPlugins();
+
 }
index d5a4f38d177a68a7832d1559d8a906f4399a93c4..51a5abfd174c72226549361e6a64b46da21b641a 100644 (file)
@@ -39,7 +39,11 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 import static com.google.common.collect.Lists.newArrayList;
 
@@ -215,7 +219,7 @@ public class DefaultIssue implements Issue {
   }
 
   @CheckForNull
-  public Long debtInMinutes(){
+  public Long debtInMinutes() {
     return debt != null ? debt.toMinutes() : null;
   }