Browse Source

SONAR-10345 Remove old webhook UI in the settings

tags/7.5
Guillaume Jambet 6 years ago
parent
commit
6b3f8890ac

+ 1
- 1
server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java View File

@@ -120,7 +120,7 @@ public class ComputeEngineContainerImplTest {
+ 26 // level 1
+ 53 // content of DaoModule
+ 3 // content of EsSearchModule
+ 59 // content of CorePropertyDefinitions
+ 57 // content of CorePropertyDefinitions
+ 1 // StopFlagContainer
);
assertThat(

+ 1
- 2
server/sonar-db-dao/src/main/java/org/sonar/db/DaoModule.java View File

@@ -93,8 +93,6 @@ public class DaoModule extends Module {
CeTaskInputDao.class,
ComponentDao.class,
ComponentKeyUpdaterDao.class,
ProjectLinkDao.class,
LiveMeasureDao.class,
CustomMeasureDao.class,
DefaultQProfileDao.class,
DuplicationDao.class,
@@ -116,6 +114,7 @@ public class DaoModule extends Module {
PermissionTemplateCharacteristicDao.class,
PermissionTemplateDao.class,
PluginDao.class,
ProjectLinkDao.class,
ProjectQgateAssociationDao.class,
PropertiesDao.class,
PurgeDao.class,

+ 2
- 1
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistAnalysisPropertiesStep.java View File

@@ -29,13 +29,14 @@ import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetada
import org.sonar.server.computation.task.projectanalysis.batch.BatchReportReader;
import org.sonar.server.computation.task.step.ComputationStep;

import static org.sonar.core.config.CorePropertyDefinitions.SONAR_ANALYSIS;

/**
* Persist analysis properties
* Only properties starting with "sonar.analysis" or "sonar.pullrequest" will be persisted in database
*/
public class PersistAnalysisPropertiesStep implements ComputationStep {

private static final String SONAR_ANALYSIS = "sonar.analysis.";
private static final String SONAR_PULL_REQUEST = "sonar.pullrequest.";

private final DbClient dbClient;

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/webhook/WebhookPayloadFactoryImpl.java View File

@@ -35,7 +35,7 @@ import org.sonar.server.qualitygate.EvaluatedCondition;
import org.sonar.server.qualitygate.EvaluatedQualityGate;

import static java.lang.String.format;
import static org.sonar.core.config.WebhookProperties.ANALYSIS_PROPERTY_PREFIX;
import static org.sonar.core.config.CorePropertyDefinitions.SONAR_ANALYSIS;

@ComputeEngineSide
public class WebhookPayloadFactoryImpl implements WebhookPayloadFactory {
@@ -91,7 +91,7 @@ public class WebhookPayloadFactoryImpl implements WebhookPayloadFactory {
.beginObject();
properties.entrySet()
.stream()
.filter(prop -> prop.getKey().startsWith(ANALYSIS_PROPERTY_PREFIX))
.filter(prop -> prop.getKey().startsWith(SONAR_ANALYSIS))
.forEach(prop -> writer.prop(prop.getKey(), prop.getValue()));
writer.endObject();
}

+ 1
- 1
sonar-core/src/main/java/org/sonar/core/config/CorePropertyDefinitions.java View File

@@ -38,6 +38,7 @@ public class CorePropertyDefinitions {
public static final String LEAK_PERIOD_MODE_VERSION = "version";
public static final String LEAK_PERIOD_MODE_DAYS = "days";
public static final String LEAK_PERIOD_MODE_PREVIOUS_VERSION = "previous_version";
public static final String SONAR_ANALYSIS = "sonar.analysis.";

private static final String DEFAULT_LEAK_PERIOD = LEAK_PERIOD_MODE_PREVIOUS_VERSION;

@@ -60,7 +61,6 @@ public class CorePropertyDefinitions {
defs.addAll(DebtProperties.all());
defs.addAll(PurgeProperties.all());
defs.addAll(EmailSettings.definitions());
defs.addAll(WebhookProperties.all());
defs.addAll(ScannerProperties.all());

defs.addAll(asList(

+ 0
- 98
sonar-core/src/main/java/org/sonar/core/config/WebhookProperties.java View File

@@ -1,98 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2018 SonarSource SA
* mailto:info 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.core.config;

import java.util.List;
import org.sonar.api.PropertyType;
import org.sonar.api.config.PropertyDefinition;
import org.sonar.api.config.PropertyFieldDefinition;
import org.sonar.api.resources.Qualifiers;

import static java.util.Arrays.asList;

public class WebhookProperties {

public static final String GLOBAL_KEY = "sonar.webhooks.global";
public static final String PROJECT_KEY = "sonar.webhooks.project";
public static final String NAME_FIELD = "name";
public static final String URL_FIELD = "url";

/**
* Maximum allowed number of webhooks per type (globally or per project).
* That is required to not become a DoS attacker, for instance
* if thousands of webhooks are configured.
* Important - note that this number is written in full in {@link #DESCRIPTION}.
*/
public static final long MAX_WEBHOOKS_PER_TYPE = 10;

/**
* Prefix of the properties to be automatically exported from scanner to payload
*/
public static final String ANALYSIS_PROPERTY_PREFIX = "sonar.analysis.";

private static final String CATEGORY = "webhooks";
private static final String DESCRIPTION = "Webhooks are used to notify external services when a project analysis is done. " +
"An HTTP POST request including a JSON payload is sent to each of the first ten provided URLs. <br/>" +
"Learn more in the <a href=\"https://redirect.sonarsource.com/doc/webhooks.html\">Webhooks documentation</a>.";
private static final String URL_DESCRIPTION = "Server endpoint that will receive the webhook payload, for example 'http://my_server/foo'. " +
"If HTTP Basic authentication is used, HTTPS is recommended to avoid man in the middle attacks. " +
"Example: 'https://myLogin:myPassword@my_server/foo'";

private WebhookProperties() {
// only static stuff
}

static List<PropertyDefinition> all() {
return asList(
PropertyDefinition.builder(GLOBAL_KEY)
.category(CATEGORY)
.name("Webhooks")
.description(DESCRIPTION)
.fields(
PropertyFieldDefinition.build(NAME_FIELD)
.name("Name")
.type(PropertyType.STRING)
.build(),
PropertyFieldDefinition.build(URL_FIELD)
.name("URL")
.type(PropertyType.STRING)
.description(URL_DESCRIPTION)
.build())
.build(),

PropertyDefinition.builder(PROJECT_KEY)
.category(CATEGORY)
.name("Project Webhooks")
.description(DESCRIPTION)
.onlyOnQualifiers(Qualifiers.PROJECT)
.fields(
PropertyFieldDefinition.build(NAME_FIELD)
.name("Name")
.type(PropertyType.STRING)
.build(),
PropertyFieldDefinition.build(URL_FIELD)
.name("URL")
.type(PropertyType.STRING)
.description(URL_DESCRIPTION)
.build())
.build());
}

}

+ 1
- 1
sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java View File

@@ -30,7 +30,7 @@ public class CorePropertyDefinitionsTest {
@Test
public void all() {
List<PropertyDefinition> defs = CorePropertyDefinitions.all();
assertThat(defs).hasSize(59);
assertThat(defs).hasSize(57);
}

@Test

+ 2
- 3
sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ContextPropertiesPublisher.java View File

@@ -24,13 +24,12 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
import org.sonar.core.config.CorePropertyDefinitions;
import org.sonar.scanner.config.DefaultConfiguration;
import org.sonar.scanner.protocol.output.ScannerReport;
import org.sonar.scanner.protocol.output.ScannerReportWriter;
import org.sonar.scanner.repository.ContextPropertiesCache;

import static org.sonar.core.config.WebhookProperties.ANALYSIS_PROPERTY_PREFIX;

public class ContextPropertiesPublisher implements ReportPublisherStep {

private final ContextPropertiesCache cache;
@@ -51,7 +50,7 @@ public class ContextPropertiesPublisher implements ReportPublisherStep {
// properties that are automatically included to report so that
// they can be included to webhook payloads
Stream<ScannerReport.ContextProperty> fromSettings = config.getProperties().entrySet().stream()
.filter(e -> e.getKey().startsWith(ANALYSIS_PROPERTY_PREFIX))
.filter(e -> e.getKey().startsWith(CorePropertyDefinitions.SONAR_ANALYSIS))
.map(transformer);

writer.writeContextProperties(Stream.concat(fromCache, fromSettings).collect(Collectors.toList()));

Loading…
Cancel
Save