From: Teryk Bellahsene Date: Fri, 9 Sep 2016 08:40:50 +0000 (+0200) Subject: Rename setting validation related classes and methods X-Git-Tag: 6.1-RC1~134 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2cff1d865d72af290b61eeb9dc13e81b63679f09;p=sonarqube.git Rename setting validation related classes and methods --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/ResetAction.java b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/ResetAction.java index 744b5ad8913..b3f38531604 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/ResetAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/ResetAction.java @@ -36,11 +36,10 @@ import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.component.ComponentDto; import org.sonar.server.component.ComponentFinder; -import org.sonar.server.setting.ws.SettingValidator.SettingData; +import org.sonar.server.setting.ws.SettingValidations.SettingData; import org.sonar.server.user.UserSession; import org.sonarqube.ws.client.setting.ResetRequest; -import static org.sonar.server.setting.ws.SettingValidator.validateScope; import static org.sonar.server.setting.ws.SettingsWsComponentParameters.addComponentParameters; import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_COMPONENT_KEY; import static org.sonarqube.ws.client.setting.SettingsWsParameters.ACTION_RESET; @@ -54,16 +53,16 @@ public class ResetAction implements SettingsWsAction { private final SettingsUpdater settingsUpdater; private final UserSession userSession; private final PropertyDefinitions definitions; - private final SettingValidator settingValidator; + private final SettingValidations validations; public ResetAction(DbClient dbClient, ComponentFinder componentFinder, SettingsUpdater settingsUpdater, UserSession userSession, PropertyDefinitions definitions, - SettingValidator settingValidator) { + SettingValidations validations) { this.dbClient = dbClient; this.settingsUpdater = settingsUpdater; this.userSession = userSession; this.componentFinder = componentFinder; this.definitions = definitions; - this.settingValidator = settingValidator; + this.validations = validations; } @Override @@ -96,8 +95,8 @@ public class ResetAction implements SettingsWsAction { Optional component = getComponent(dbSession, resetRequest); checkPermissions(component); resetRequest.getKeys().forEach(key -> { - SettingData data = new SettingData(key, definitions.get(key), component.orElse(null)); - ImmutableList.of(validateScope(), settingValidator.validateQualifier()) + SettingData data = new SettingData(key, component.orElse(null)); + ImmutableList.of(validations.scope(), validations.qualifier()) .forEach(validation -> validation.validate(data)); }); diff --git a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SetAction.java b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SetAction.java index 142659594bd..bc9e212bb5e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SetAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SetAction.java @@ -56,13 +56,12 @@ import org.sonar.scanner.protocol.GsonHelper; import org.sonar.server.component.ComponentFinder; import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.platform.SettingsChangeNotifier; -import org.sonar.server.setting.ws.SettingValidator.SettingData; +import org.sonar.server.setting.ws.SettingValidations.SettingData; import org.sonar.server.user.UserSession; import org.sonar.server.ws.KeyExamples; import org.sonarqube.ws.client.setting.SetRequest; import static com.google.common.base.Strings.isNullOrEmpty; -import static org.sonar.server.setting.ws.SettingValidator.validateScope; import static org.sonar.server.ws.WsUtils.checkRequest; import static org.sonarqube.ws.client.setting.SettingsWsParameters.ACTION_SET; import static org.sonarqube.ws.client.setting.SettingsWsParameters.PARAM_COMPONENT_ID; @@ -82,10 +81,10 @@ public class SetAction implements SettingsWsAction { private final UserSession userSession; private final SettingsUpdater settingsUpdater; private final SettingsChangeNotifier settingsChangeNotifier; - private final SettingValidator settingValidator; + private final SettingValidations validations; public SetAction(PropertyDefinitions propertyDefinitions, I18n i18n, DbClient dbClient, ComponentFinder componentFinder, UserSession userSession, - SettingsUpdater settingsUpdater, SettingsChangeNotifier settingsChangeNotifier, SettingValidator settingValidator) { + SettingsUpdater settingsUpdater, SettingsChangeNotifier settingsChangeNotifier, SettingValidations validations) { this.propertyDefinitions = propertyDefinitions; this.i18n = i18n; this.dbClient = dbClient; @@ -93,7 +92,7 @@ public class SetAction implements SettingsWsAction { this.userSession = userSession; this.settingsUpdater = settingsUpdater; this.settingsChangeNotifier = settingsChangeNotifier; - this.settingValidator = settingValidator; + this.validations = validations; } @Override @@ -208,8 +207,8 @@ public class SetAction implements SettingsWsAction { private void commonChecks(SetRequest request, @Nullable PropertyDefinition definition, Optional component) { checkValueIsSet(request); - SettingData settingData = new SettingData(request.getKey(), definition, component.orElse(null)); - ImmutableList.of(validateScope(), settingValidator.validateQualifier()).stream() + SettingData settingData = new SettingData(request.getKey(), component.orElse(null)); + ImmutableList.of(validations.scope(), validations.qualifier()).stream() .forEach(validation -> validation.validate(settingData)); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingValidations.java b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingValidations.java new file mode 100644 index 00000000000..daa4d186abb --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingValidations.java @@ -0,0 +1,79 @@ +/* + * 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.server.setting.ws; + +import java.util.Locale; +import javax.annotation.CheckForNull; +import javax.annotation.Nullable; +import org.sonar.api.config.PropertyDefinition; +import org.sonar.api.config.PropertyDefinitions; +import org.sonar.api.i18n.I18n; +import org.sonar.db.component.ComponentDto; + +import static org.sonar.server.ws.WsUtils.checkRequest; + +public class SettingValidations { + private final PropertyDefinitions definitions; + private final I18n i18n; + + public SettingValidations(PropertyDefinitions definitions, I18n i18n) { + this.definitions = definitions; + this.i18n = i18n; + } + + public SettingValidation scope() { + return data -> { + PropertyDefinition definition = definitions.get(data.key); + checkRequest(data.component != null || definition == null || definition.global() || isGlobal(definition), + "Setting '%s' cannot be global", data.key); + }; + } + + public SettingValidation qualifier() { + return data -> { + String qualifier = data.component == null ? "" : data.component.qualifier(); + PropertyDefinition definition = definitions.get(data.key); + checkRequest(data.component == null || definition == null || definition.qualifiers().contains(data.component.qualifier()), + "Setting '%s' cannot be set on a %s", data.key, i18n.message(Locale.ENGLISH, "qualifier." + qualifier, null)); + }; + } + + private static boolean isGlobal(PropertyDefinition definition) { + return !definition.global() && definition.qualifiers().isEmpty(); + } + + @FunctionalInterface + public interface SettingValidation { + void validate(SettingData data); + } + + public static class SettingData { + private final String key; + @CheckForNull + private final ComponentDto component; + + public SettingData(String key, @Nullable ComponentDto component) { + this.key = key; + this.component = component; + } + + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingValidator.java b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingValidator.java deleted file mode 100644 index 45ab4668434..00000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingValidator.java +++ /dev/null @@ -1,75 +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.server.setting.ws; - -import java.util.Locale; -import javax.annotation.CheckForNull; -import javax.annotation.Nullable; -import org.sonar.api.config.PropertyDefinition; -import org.sonar.api.i18n.I18n; -import org.sonar.db.component.ComponentDto; - -import static org.sonar.server.ws.WsUtils.checkRequest; - -public class SettingValidator { - private final I18n i18n; - - public SettingValidator(I18n i18n) { - this.i18n = i18n; - } - - public static SettingValidation validateScope() { - return data -> checkRequest(data.component != null || data.definition == null || data.definition.global() || isGlobal(data.definition), - "Setting '%s' cannot be global", data.key); - } - - public SettingValidation validateQualifier() { - return data -> { - String qualifier = data.component == null ? "" : data.component.qualifier(); - checkRequest(data.component == null || data.definition == null || data.definition.qualifiers().contains(data.component.qualifier()), - "Setting '%s' cannot be set on a %s", data.key, i18n.message(Locale.ENGLISH, "qualifier." + qualifier, null)); - }; - } - - private static boolean isGlobal(PropertyDefinition definition) { - return !definition.global() && definition.qualifiers().isEmpty(); - } - - @FunctionalInterface - public interface SettingValidation { - void validate(SettingData data); - } - - public static class SettingData { - private final String key; - @CheckForNull - private final PropertyDefinition definition; - @CheckForNull - private final ComponentDto component; - - public SettingData(String key, @Nullable PropertyDefinition definition, @Nullable ComponentDto component) { - this.key = key; - this.definition = definition; - this.component = component; - } - - } -} diff --git a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingsWsModule.java b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingsWsModule.java index 35288677612..42063f68327 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingsWsModule.java +++ b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/SettingsWsModule.java @@ -36,6 +36,6 @@ public class SettingsWsModule extends Module { GenerateSecretKeyAction.class, CheckSecretKeyAction.class, SettingsUpdater.class, - SettingValidator.class); + SettingValidations.class); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ResetActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ResetActionTest.java index c97ae05cfe9..7808d583615 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ResetActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ResetActionTest.java @@ -81,11 +81,11 @@ public class ResetActionTest { ComponentFinder componentFinder = new ComponentFinder(dbClient); PropertyDefinitions definitions = new PropertyDefinitions(); SettingsUpdater settingsUpdater = new SettingsUpdater(dbClient, definitions); - SettingValidator settingValidator = new SettingValidator(i18n); + SettingValidations settingValidations = new SettingValidations(definitions, i18n); ComponentDto project; - ResetAction underTest = new ResetAction(dbClient, componentFinder, settingsUpdater, userSession, definitions, settingValidator); + ResetAction underTest = new ResetAction(dbClient, componentFinder, settingsUpdater, userSession, definitions, settingValidations); WsActionTester ws = new WsActionTester(underTest); @Before diff --git a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java index ca51572f567..91eba042d89 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java @@ -83,12 +83,12 @@ public class SetActionTest { ComponentFinder componentFinder = new ComponentFinder(dbClient); I18nRule i18n = new I18nRule(); - PropertyDefinitions propertyDefinitions = new PropertyDefinitions(); + PropertyDefinitions definitions = new PropertyDefinitions(); FakeSettingsNotifier settingsChangeNotifier = new FakeSettingsNotifier(dbClient); - SettingsUpdater settingsUpdater = new SettingsUpdater(dbClient, propertyDefinitions); - SettingValidator settingValidator = new SettingValidator(i18n); + SettingsUpdater settingsUpdater = new SettingsUpdater(dbClient, definitions); + SettingValidations validations = new SettingValidations(definitions, i18n); - SetAction underTest = new SetAction(propertyDefinitions, i18n, dbClient, componentFinder, userSession, settingsUpdater, settingsChangeNotifier, settingValidator); + SetAction underTest = new SetAction(definitions, i18n, dbClient, componentFinder, userSession, settingsUpdater, settingsChangeNotifier, validations); WsActionTester ws = new WsActionTester(underTest); @@ -174,7 +174,7 @@ public class SetActionTest { @Test public void persist_property_set_setting() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -211,7 +211,7 @@ public class SetActionTest { @Test public void update_property_set_setting() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -258,7 +258,7 @@ public class SetActionTest { @Test public void update_property_set_on_component_setting() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -318,7 +318,7 @@ public class SetActionTest { @Test public void persist_global_property_with_deprecated_key() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .deprecatedKey("my.old.key") .name("foo") @@ -375,7 +375,7 @@ public class SetActionTest { @Test public void fail_when_data_and_type_do_not_match() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -393,7 +393,7 @@ public class SetActionTest { @Test public void fail_when_data_and_type_do_not_match_with_unknown_error_key() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -410,7 +410,7 @@ public class SetActionTest { @Test public void fail_when_global_with_property_only_on_projects() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -428,7 +428,7 @@ public class SetActionTest { @Test public void fail_when_view_property_when_on_projects_only() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -456,7 +456,7 @@ public class SetActionTest { @Test public void fail_when_multi_definition_and_single_value_provided() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -473,7 +473,7 @@ public class SetActionTest { @Test public void fail_when_single_definition_and_multi_value_provided() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -498,7 +498,7 @@ public class SetActionTest { @Test public void fail_when_property_set_with_unknown_field() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -521,7 +521,7 @@ public class SetActionTest { @Test public void fail_when_property_set_has_field_with_incorrect_type() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -544,7 +544,7 @@ public class SetActionTest { @Test public void fail_when_property_set_has_a_null_field_value() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -567,7 +567,7 @@ public class SetActionTest { @Test public void fail_when_property_set_with_invalid_json() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -591,7 +591,7 @@ public class SetActionTest { @Test public void fail_when_property_set_with_json_of_the_wrong_format() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc") @@ -615,7 +615,7 @@ public class SetActionTest { @Test public void fail_when_property_set_on_component_of_global_setting() { - propertyDefinitions.addComponent(PropertyDefinition + definitions.addComponent(PropertyDefinition .builder("my.key") .name("foo") .description("desc")