From 5b745f6619eb0dea2380e4428e135dbb1c2124d5 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Mon, 15 Jul 2013 18:06:20 +0200 Subject: [PATCH] SONAR-2860 API: remove the dependency on commons-configuration --- .../batch/ResourceDatabaseConfiguration.java | 83 ------------------- .../configuration/DatabaseConfiguration.java | 73 ---------------- .../sonar/core/config/ConfigurationUtils.java | 11 --- .../DatabaseConfigurationTest.java | 40 --------- .../api/batch/DefaultFormulaContext.java | 4 + .../sonar/api/measures/FormulaContext.java | 4 + .../java/org/sonar/api/rules/RuleUtils.java | 2 + 7 files changed, 10 insertions(+), 207 deletions(-) delete mode 100644 sonar-batch/src/main/java/org/sonar/batch/ResourceDatabaseConfiguration.java delete mode 100644 sonar-core/src/main/java/org/sonar/api/database/configuration/DatabaseConfiguration.java delete mode 100644 sonar-core/src/test/java/org/sonar/api/database/configuration/DatabaseConfigurationTest.java diff --git a/sonar-batch/src/main/java/org/sonar/batch/ResourceDatabaseConfiguration.java b/sonar-batch/src/main/java/org/sonar/batch/ResourceDatabaseConfiguration.java deleted file mode 100644 index cbb39798eb6..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/ResourceDatabaseConfiguration.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2013 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube 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. - * - * SonarQube 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; - -import org.apache.commons.configuration.BaseConfiguration; - -import org.sonar.api.database.DatabaseSession; -import org.sonar.api.database.configuration.Property; -import org.sonar.api.database.model.ResourceModel; - -import java.util.List; - -public class ResourceDatabaseConfiguration extends BaseConfiguration { - private final DatabaseSession session; - private Integer resourceId = null; - - public ResourceDatabaseConfiguration(DatabaseSession session, ResourceModel resource) { - this.session = session; - if (resource != null) { - this.resourceId = resource.getId(); - } - load(); - } - - public ResourceDatabaseConfiguration(DatabaseSession session, Integer resourceId) { - this.session = session; - this.resourceId = resourceId; - load(); - } - - public ResourceDatabaseConfiguration(DatabaseSession session, String resourceKey) { - this.session = session; - - ResourceModel resource = session.getSingleResult(ResourceModel.class, "key", resourceKey); - if (resource != null) { - this.resourceId = resource.getId(); - } - load(); - } - - public void load() { - clear(); - - loadResourceProperties(); - } - - private void loadResourceProperties() { - if (resourceId != null) { - List properties = session - .createQuery("from " + Property.class.getSimpleName() + " p where p.resourceId=:resourceId") - .setParameter("resourceId", resourceId) - .getResultList(); - - registerProperties(properties); - } - } - - private void registerProperties(List properties) { - if (properties != null) { - for (Property property : properties) { - setProperty(property.getKey(), property.getValue()); - } - } - } - -} diff --git a/sonar-core/src/main/java/org/sonar/api/database/configuration/DatabaseConfiguration.java b/sonar-core/src/main/java/org/sonar/api/database/configuration/DatabaseConfiguration.java deleted file mode 100644 index c281654ca37..00000000000 --- a/sonar-core/src/main/java/org/sonar/api/database/configuration/DatabaseConfiguration.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2013 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube 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. - * - * SonarQube 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.api.database.configuration; - -import org.apache.commons.configuration.BaseConfiguration; -import org.sonar.api.database.DatabaseSession; -import org.sonar.jpa.session.DatabaseSessionFactory; - -import java.util.List; - -/** - * IMPORTANT : This class can't be moved to org.sonar.jpa.dao for backward-compatibility reasons. - * This class is still used in some plugins. - * - * @since 1.10 - */ -public class DatabaseConfiguration extends BaseConfiguration { - private DatabaseSessionFactory sessionFactory; - private DatabaseSession session; - - public DatabaseConfiguration(DatabaseSessionFactory sessionFactory) { - this.sessionFactory = sessionFactory; - load(); - } - - public DatabaseConfiguration(DatabaseSession session) { - this.session = session; - load(); - } - - public final void load() { - clear(); - - // Ugly workaround before the move to myBatis - // Session is not up-to-date when Ruby on Rails inserts new rows in its own transaction. Seems like - // Hibernate keeps a cache... - getSession().commit(); - - List properties = getSession() - .createQuery("from " + Property.class.getSimpleName() + " p where p.resourceId is null and p.userId is null") - .getResultList(); - - if (properties != null) { - for (Property property : properties) { - setProperty(property.getKey(), property.getValue()); - } - } - } - - private DatabaseSession getSession() { - if (session != null) { - return session; - } - return sessionFactory.getSession(); - } -} \ No newline at end of file diff --git a/sonar-core/src/main/java/org/sonar/core/config/ConfigurationUtils.java b/sonar-core/src/main/java/org/sonar/core/config/ConfigurationUtils.java index 3086aad7bd9..0d6067199e8 100644 --- a/sonar-core/src/main/java/org/sonar/core/config/ConfigurationUtils.java +++ b/sonar-core/src/main/java/org/sonar/core/config/ConfigurationUtils.java @@ -19,13 +19,11 @@ */ package org.sonar.core.config; -import org.apache.commons.configuration.Configuration; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.text.StrSubstitutor; import javax.annotation.WillClose; - import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -83,13 +81,4 @@ public final class ConfigurationUtils { } return result; } - - public static void copyToCommonsConfiguration(Map input, Configuration commonsConfig) { - // update deprecated configuration - commonsConfig.clear(); - for (Map.Entry entry : input.entrySet()) { - String key = entry.getKey(); - commonsConfig.setProperty(key, entry.getValue()); - } - } } diff --git a/sonar-core/src/test/java/org/sonar/api/database/configuration/DatabaseConfigurationTest.java b/sonar-core/src/test/java/org/sonar/api/database/configuration/DatabaseConfigurationTest.java deleted file mode 100644 index 6edd7162a54..00000000000 --- a/sonar-core/src/test/java/org/sonar/api/database/configuration/DatabaseConfigurationTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2013 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube 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. - * - * SonarQube 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.api.database.configuration; - -import org.junit.Test; -import org.sonar.jpa.test.AbstractDbUnitTestCase; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -public class DatabaseConfigurationTest extends AbstractDbUnitTestCase { - - @Test - public void shouldLoadPropertiesFromDatabase() { - setupData("some-properties"); - - DatabaseConfiguration configuration = new DatabaseConfiguration(getSessionFactory()); - - assertEquals("value1", configuration.getString("key1")); - assertEquals("value2", configuration.getString("key2")); - assertNull(configuration.getString("keyxxxx")); - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/DefaultFormulaContext.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/DefaultFormulaContext.java index d48391a08d7..d5d8d04e474 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/DefaultFormulaContext.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/DefaultFormulaContext.java @@ -44,6 +44,10 @@ public class DefaultFormulaContext implements FormulaContext { return decoratorContext.getResource(); } + /** + * @deprecated in 3.7. Use {@link org.sonar.api.config.Settings}. + */ + @Deprecated public Configuration getConfiguration() { return decoratorContext.getProject().getConfiguration(); } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/measures/FormulaContext.java b/sonar-plugin-api/src/main/java/org/sonar/api/measures/FormulaContext.java index d0c4177efa0..67aa4823932 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/measures/FormulaContext.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/measures/FormulaContext.java @@ -31,6 +31,10 @@ public interface FormulaContext { Resource getResource(); + /** + * @deprecated in 3.7. Use {@link org.sonar.api.config.Settings}. + */ + @Deprecated Configuration getConfiguration(); } \ No newline at end of file diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleUtils.java b/sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleUtils.java index 2d8f4c9baec..c6f2953d62d 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleUtils.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleUtils.java @@ -27,7 +27,9 @@ import org.sonar.api.utils.KeyValueFormat; /** * A utility class to manipulate concepts around rules + * @deprecated in 3.7. Commons Configuration must be replaced by {@link org.sonar.api.config.Settings} */ +@Deprecated public final class RuleUtils { private RuleUtils() { -- 2.39.5