]> source.dussan.org Git - sonarqube.git/commitdiff
Revert drop of non-deprecated classes
authorSimon Brandhof <simon.brandhof@gmail.com>
Tue, 16 Jul 2013 12:46:26 +0000 (14:46 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Tue, 16 Jul 2013 12:46:26 +0000 (14:46 +0200)
sonar-batch/src/main/java/org/sonar/batch/ResourceDatabaseConfiguration.java [new file with mode: 0644]
sonar-core/src/main/java/org/sonar/api/database/configuration/DatabaseConfiguration.java [new file with mode: 0644]
sonar-core/src/test/java/org/sonar/api/database/configuration/DatabaseConfigurationTest.java [new file with mode: 0644]

diff --git a/sonar-batch/src/main/java/org/sonar/batch/ResourceDatabaseConfiguration.java b/sonar-batch/src/main/java/org/sonar/batch/ResourceDatabaseConfiguration.java
new file mode 100644 (file)
index 0000000..842b2fb
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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;
+
+/**
+ * @deprecated in 3.7. Replaced by {@link org.sonar.api.config.Settings}
+ */
+@Deprecated
+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<Property> properties = session
+        .createQuery("from " + Property.class.getSimpleName() + " p where p.resourceId=:resourceId")
+        .setParameter("resourceId", resourceId)
+        .getResultList();
+
+      registerProperties(properties);
+    }
+  }
+
+  private void registerProperties(List<Property> 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
new file mode 100644 (file)
index 0000000..0adb653
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * 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
+ * @deprecated in 3.7. Replaced by {@link org.sonar.api.config.Settings}
+ */
+@Deprecated
+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<Property> 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/test/java/org/sonar/api/database/configuration/DatabaseConfigurationTest.java b/sonar-core/src/test/java/org/sonar/api/database/configuration/DatabaseConfigurationTest.java
new file mode 100644 (file)
index 0000000..6edd716
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * 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"));
+  }
+}