diff options
Diffstat (limited to 'sonar-batch/src/main/java/org/sonar/batch/scm/ScmConfiguration.java')
-rw-r--r-- | sonar-batch/src/main/java/org/sonar/batch/scm/ScmConfiguration.java | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scm/ScmConfiguration.java b/sonar-batch/src/main/java/org/sonar/batch/scm/ScmConfiguration.java deleted file mode 100644 index f6a88bf4465..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/scm/ScmConfiguration.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.scm; - -import com.google.common.base.Joiner; -import java.util.LinkedHashMap; -import java.util.Map; -import org.apache.commons.lang.StringUtils; -import org.picocontainer.Startable; -import org.sonar.api.CoreProperties; -import org.sonar.api.Properties; -import org.sonar.api.Property; -import org.sonar.api.PropertyType; -import org.sonar.api.batch.AnalysisMode; -import org.sonar.api.batch.BatchSide; -import org.sonar.api.batch.InstantiationStrategy; -import org.sonar.api.batch.scm.ScmProvider; -import org.sonar.api.config.Settings; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; -import org.sonar.batch.scan.ImmutableProjectReactor; - -@Properties({ - @Property( - key = ScmConfiguration.FORCE_RELOAD_KEY, - defaultValue = "false", - name = "Force reloading of SCM information for all files", - description = "By default only files modified since previous analysis are inspected. Set this parameter to true to force the reloading.", - category = CoreProperties.CATEGORY_SCM, - project = false, - module = false, - global = false, - type = PropertyType.BOOLEAN) -}) -@InstantiationStrategy(InstantiationStrategy.PER_BATCH) -@BatchSide -public final class ScmConfiguration implements Startable { - private static final Logger LOG = Loggers.get(ScmConfiguration.class); - - public static final String FORCE_RELOAD_KEY = "sonar.scm.forceReloadAll"; - - private final ImmutableProjectReactor projectReactor; - private final Settings settings; - private final Map<String, ScmProvider> providerPerKey = new LinkedHashMap<>(); - private final AnalysisMode analysisMode; - - private ScmProvider provider; - - public ScmConfiguration(ImmutableProjectReactor projectReactor, AnalysisMode analysisMode, Settings settings, ScmProvider... providers) { - this.projectReactor = projectReactor; - this.analysisMode = analysisMode; - this.settings = settings; - for (ScmProvider scmProvider : providers) { - providerPerKey.put(scmProvider.key(), scmProvider); - } - } - - public ScmConfiguration(ImmutableProjectReactor projectReactor, AnalysisMode analysisMode, Settings settings) { - this(projectReactor, analysisMode, settings, new ScmProvider[0]); - } - - @Override - public void start() { - if (analysisMode.isIssues()) { - return; - } - if (isDisabled()) { - LOG.debug("SCM Step is disabled by configuration"); - return; - } - if (settings.hasKey(CoreProperties.SCM_PROVIDER_KEY)) { - String forcedProviderKey = settings.getString(CoreProperties.SCM_PROVIDER_KEY); - setProviderIfSupported(forcedProviderKey); - } else { - autodetection(); - if (this.provider == null) { - considerOldScmUrl(); - } - if (this.provider == null) { - LOG.warn("SCM provider autodetection failed. No SCM provider claims to support this project. Please use " + CoreProperties.SCM_PROVIDER_KEY - + " to define SCM of your project."); - } - } - } - - private void setProviderIfSupported(String forcedProviderKey) { - if (providerPerKey.containsKey(forcedProviderKey)) { - this.provider = providerPerKey.get(forcedProviderKey); - } else { - String supportedProviders = providerPerKey.isEmpty() ? "No SCM provider installed" : ("Supported SCM providers are " + Joiner.on(",").join(providerPerKey.keySet())); - throw new IllegalArgumentException("SCM provider was set to \"" + forcedProviderKey + "\" but no SCM provider found for this key. " + supportedProviders); - } - } - - private void considerOldScmUrl() { - if (settings.hasKey(CoreProperties.LINKS_SOURCES_DEV)) { - String url = settings.getString(CoreProperties.LINKS_SOURCES_DEV); - if (StringUtils.startsWith(url, "scm:")) { - String[] split = url.split(":"); - if (split.length > 1) { - setProviderIfSupported(split[1]); - } - } - } - - } - - private void autodetection() { - for (ScmProvider installedProvider : providerPerKey.values()) { - if (installedProvider.supports(projectReactor.getRoot().getBaseDir())) { - if (this.provider == null) { - this.provider = installedProvider; - } else { - throw new IllegalStateException("SCM provider autodetection failed. Both " + this.provider.key() + " and " + installedProvider.key() - + " claim to support this project. Please use " + CoreProperties.SCM_PROVIDER_KEY + " to define SCM of your project."); - } - } - } - } - - public ScmProvider provider() { - return provider; - } - - public boolean isDisabled() { - return settings.getBoolean(CoreProperties.SCM_DISABLED_KEY); - } - - public boolean forceReloadAll() { - return settings.getBoolean(FORCE_RELOAD_KEY); - } - - @Override - public void stop() { - // Nothing to do - } - -} |