]> source.dussan.org Git - sonarqube.git/commitdiff
Remove ability to get users from batch
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 17 Jun 2015 17:20:13 +0000 (19:20 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 17 Jun 2015 18:46:57 +0000 (20:46 +0200)
 + drop Hibernate model "User"

14 files changed:
server/sonar-server/src/main/java/org/sonar/server/notification/email/EmailNotificationChannel.java
server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java
sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalContainer.java
sonar-batch/src/main/java/org/sonar/batch/scan/ProjectScanContainer.java
sonar-core/src/main/java/org/sonar/core/user/DeprecatedUserFinder.java [new file with mode: 0644]
sonar-core/src/main/java/org/sonar/core/user/HibernateUserFinder.java [deleted file]
sonar-core/src/main/resources/META-INF/persistence.xml
sonar-core/src/test/java/org/sonar/core/user/DeprecatedUserFinderTest.java [new file with mode: 0644]
sonar-core/src/test/java/org/sonar/core/user/HibernateUserFinderTest.java [deleted file]
sonar-core/src/test/resources/org/sonar/core/user/DeprecatedUserFinderTest/fixture.xml [new file with mode: 0644]
sonar-core/src/test/resources/org/sonar/core/user/HibernateUserFinderTest/fixture.xml [deleted file]
sonar-plugin-api/src/main/java/org/sonar/api/database/model/User.java
sonar-plugin-api/src/main/java/org/sonar/api/security/UserFinder.java
sonar-plugin-api/src/main/java/org/sonar/api/user/UserFinder.java

index de7dc0f81eae7ae9b5ed9c0d19779b19499a2efb..5e004e69b2b11c7f08c08332e51c150dd2504389 100644 (file)
@@ -25,10 +25,10 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.commons.mail.EmailException;
 import org.apache.commons.mail.SimpleEmail;
 import org.sonar.api.config.EmailSettings;
-import org.sonar.api.database.model.User;
 import org.sonar.api.notifications.Notification;
 import org.sonar.api.notifications.NotificationChannel;
-import org.sonar.api.security.UserFinder;
+import org.sonar.api.user.User;
+import org.sonar.api.user.UserFinder;
 import org.sonar.api.utils.SonarException;
 import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
@@ -95,13 +95,13 @@ public class EmailNotificationChannel extends NotificationChannel {
   @Override
   public void deliver(Notification notification, String username) {
     User user = userFinder.findByLogin(username);
-    if (StringUtils.isBlank(user.getEmail())) {
+    if (StringUtils.isBlank(user.email())) {
       LOG.debug("Email not defined for user: " + username);
       return;
     }
     EmailMessage emailMessage = format(notification);
     if (emailMessage != null) {
-      emailMessage.setTo(user.getEmail());
+      emailMessage.setTo(user.email());
       deliver(emailMessage);
     }
   }
index c12c780a810eb636dca6119d8f7089472ecf57e8..65815e09dae5ba7cb5a9c4a11fc8a046ec351455 100644 (file)
@@ -45,7 +45,7 @@ import org.sonar.core.qualitygate.db.QualityGateDao;
 import org.sonar.core.resource.DefaultResourceTypes;
 import org.sonar.core.timemachine.Periods;
 import org.sonar.core.user.DefaultUserFinder;
-import org.sonar.core.user.HibernateUserFinder;
+import org.sonar.core.user.DeprecatedUserFinder;
 import org.sonar.jpa.dao.MeasuresDao;
 import org.sonar.server.activity.ActivityService;
 import org.sonar.server.activity.RubyQProfileActivityService;
@@ -533,7 +533,7 @@ public class PlatformLevel4 extends PlatformLevel {
 
       // users
       SecurityRealmFactory.class,
-      HibernateUserFinder.class,
+      DeprecatedUserFinder.class,
       NewUserNotifier.class,
       DefaultUserFinder.class,
       DefaultUserService.class,
index b2280f7bcb8f96ccc05ba051d9940d935a1597b1..9c50b4d76ae701a290d7393b6a89efa18d3c7634 100644 (file)
@@ -60,7 +60,6 @@ import org.sonar.core.platform.PluginLoader;
 import org.sonar.core.platform.PluginRepository;
 import org.sonar.core.purge.PurgeProfiler;
 import org.sonar.core.rule.CacheRuleFinder;
-import org.sonar.core.user.HibernateUserFinder;
 import org.sonar.core.util.DefaultHttpDownloader;
 import org.sonar.jpa.dao.MeasuresDao;
 import org.sonar.jpa.session.DefaultDatabaseConnector;
@@ -148,7 +147,6 @@ public class GlobalContainer extends ComponentContainer {
       EmailSettings.class,
       RuleI18nManager.class,
       MeasuresDao.class,
-      HibernateUserFinder.class,
       PastSnapshotFinderByDate.class,
       PastSnapshotFinderByDays.class,
       PastSnapshotFinderByPreviousAnalysis.class,
index 0cb92aa09945d26ef634b930c4de90fbec04eb79..017b4b67b91d372cf9b1633144f1cb555e775eb3 100644 (file)
@@ -81,7 +81,6 @@ import org.sonar.core.issue.workflow.IssueWorkflow;
 import org.sonar.core.permission.PermissionFacade;
 import org.sonar.core.platform.ComponentContainer;
 import org.sonar.core.technicaldebt.DefaultTechnicalDebtModel;
-import org.sonar.core.user.DefaultUserFinder;
 
 public class ProjectScanContainer extends ComponentContainer {
 
@@ -208,9 +207,6 @@ public class ProjectScanContainer extends ComponentContainer {
     add(
       PastMeasuresLoader.class,
 
-      // Users
-      DefaultUserFinder.class,
-
       // Rules
       new RulesProvider(),
       new DebtModelProvider(),
diff --git a/sonar-core/src/main/java/org/sonar/core/user/DeprecatedUserFinder.java b/sonar-core/src/main/java/org/sonar/core/user/DeprecatedUserFinder.java
new file mode 100644 (file)
index 0000000..7a180bb
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 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.core.user;
+
+import javax.annotation.Nullable;
+import org.sonar.api.database.model.User;
+import org.sonar.api.security.UserFinder;
+
+/**
+ * @since 2.10
+ */
+public class DeprecatedUserFinder implements UserFinder {
+
+  private final UserDao userDao;
+
+  public DeprecatedUserFinder(UserDao userDao) {
+    this.userDao = userDao;
+  }
+
+  @Override
+  public User findById(int id) {
+    return copy(userDao.getUser(id));
+  }
+
+  @Override
+  public User findByLogin(String login) {
+    return copy(userDao.selectActiveUserByLogin(login));
+  }
+
+  private User copy(@Nullable UserDto dto) {
+    if (dto != null) {
+      User user = new User().setEmail(dto.getEmail()).setLogin(dto.getLogin()).setName(dto.getName());
+      user.setId(dto.getId().intValue());
+      return user;
+    }
+    return null;
+  }
+
+}
diff --git a/sonar-core/src/main/java/org/sonar/core/user/HibernateUserFinder.java b/sonar-core/src/main/java/org/sonar/core/user/HibernateUserFinder.java
deleted file mode 100644 (file)
index 4cc42aa..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 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.core.user;
-
-import org.sonar.api.database.DatabaseSession;
-import org.sonar.api.database.model.User;
-import org.sonar.api.security.UserFinder;
-import org.sonar.jpa.session.DatabaseSessionFactory;
-
-/**
- * @since 2.10
- */
-public class HibernateUserFinder implements UserFinder {
-
-  private DatabaseSessionFactory sessionFactory;
-
-  public HibernateUserFinder(DatabaseSessionFactory sessionFactory) {
-    this.sessionFactory = sessionFactory;
-  }
-
-  @Override
-  public User findById(int id) {
-    DatabaseSession session = sessionFactory.getSession();
-    return session.getSingleResult(User.class, "id", id);
-  }
-
-  @Override
-  public User findByLogin(String login) {
-    DatabaseSession session = sessionFactory.getSession();
-    return session.getSingleResult(User.class, "login", login);
-  }
-
-}
index d8b0e5613fdbb3d3632c8935b6666c6425f34ab7..543cc5e66c44705a9d0de8e8511f5971380083e2 100644 (file)
@@ -6,7 +6,6 @@
   <persistence-unit name="sonar" transaction-type="RESOURCE_LOCAL">
     <provider>org.hibernate.ejb.HibernatePersistence</provider>
 
-    <class>org.sonar.api.database.model.User</class>
     <class>org.sonar.api.database.model.Snapshot</class>
     <class>org.sonar.api.measures.Metric</class>
     <class>org.sonar.api.database.model.ResourceModel</class>
diff --git a/sonar-core/src/test/java/org/sonar/core/user/DeprecatedUserFinderTest.java b/sonar-core/src/test/java/org/sonar/core/user/DeprecatedUserFinderTest.java
new file mode 100644 (file)
index 0000000..b0fa938
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 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.core.user;
+
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.sonar.api.database.model.User;
+import org.sonar.api.utils.System2;
+import org.sonar.core.persistence.DbTester;
+import org.sonar.test.DbTests;
+
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
+
+@Category(DbTests.class)
+public class DeprecatedUserFinderTest {
+
+  @ClassRule
+  public static final DbTester dbTester = new DbTester();
+
+  @BeforeClass
+  public static void init() {
+    dbTester.prepareDbUnit(DeprecatedUserFinderTest.class, "fixture.xml");
+  }
+
+  @Test
+  public void shouldFindUserByLogin() {
+    DeprecatedUserFinder finder = new DeprecatedUserFinder(new UserDao(dbTester.myBatis(), mock(System2.class)));
+    User user = finder.findByLogin("simon");
+    assertThat(user.getId(), is(1));
+    assertThat(user.getLogin(), is("simon"));
+    assertThat(user.getName(), is("Simon Brandhof"));
+    assertThat(user.getEmail(), is("simon.brandhof@sonarsource.com"));
+
+    user = finder.findByLogin("godin");
+    assertThat(user.getId(), is(2));
+    assertThat(user.getLogin(), is("godin"));
+    assertThat(user.getName(), is("Evgeny Mandrikov"));
+    assertThat(user.getEmail(), is("evgeny.mandrikov@sonarsource.com"));
+
+    user = finder.findByLogin("user");
+    assertThat(user, nullValue());
+  }
+
+  @Test
+  public void shouldFindUserById() {
+    DeprecatedUserFinder finder = new DeprecatedUserFinder(new UserDao(dbTester.myBatis(), mock(System2.class)));
+    User user = finder.findById(1);
+    assertThat(user.getId(), is(1));
+    assertThat(user.getLogin(), is("simon"));
+    assertThat(user.getName(), is("Simon Brandhof"));
+    assertThat(user.getEmail(), is("simon.brandhof@sonarsource.com"));
+
+    user = finder.findById(2);
+    assertThat(user.getId(), is(2));
+    assertThat(user.getLogin(), is("godin"));
+    assertThat(user.getName(), is("Evgeny Mandrikov"));
+    assertThat(user.getEmail(), is("evgeny.mandrikov@sonarsource.com"));
+
+    user = finder.findById(3);
+    assertThat(user, nullValue());
+  }
+
+}
diff --git a/sonar-core/src/test/java/org/sonar/core/user/HibernateUserFinderTest.java b/sonar-core/src/test/java/org/sonar/core/user/HibernateUserFinderTest.java
deleted file mode 100644 (file)
index f685c4c..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 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.core.user;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.sonar.api.database.model.User;
-import org.sonar.api.security.UserFinder;
-import org.sonar.jpa.test.AbstractDbUnitTestCase;
-
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.nullValue;
-import static org.junit.Assert.assertThat;
-
-public class HibernateUserFinderTest extends AbstractDbUnitTestCase {
-
-  private UserFinder userFinder;
-
-  @Before
-  public void setUp() {
-    setupData("fixture");
-    userFinder = new HibernateUserFinder(getSessionFactory());
-  }
-
-  @Test
-  public void shouldFindUserByLogin() {
-    User user = userFinder.findByLogin("simon");
-    assertThat(user.getId(), is(1));
-    assertThat(user.getLogin(), is("simon"));
-    assertThat(user.getName(), is("Simon Brandhof"));
-    assertThat(user.getEmail(), is("simon.brandhof@sonarsource.com"));
-
-    user = userFinder.findByLogin("godin");
-    assertThat(user.getId(), is(2));
-    assertThat(user.getLogin(), is("godin"));
-    assertThat(user.getName(), is("Evgeny Mandrikov"));
-    assertThat(user.getEmail(), is("evgeny.mandrikov@sonarsource.com"));
-
-    user = userFinder.findByLogin("user");
-    assertThat(user, nullValue());
-  }
-
-  @Test
-  public void shouldFindUserById() {
-    User user = userFinder.findById(1);
-    assertThat(user.getId(), is(1));
-    assertThat(user.getLogin(), is("simon"));
-    assertThat(user.getName(), is("Simon Brandhof"));
-    assertThat(user.getEmail(), is("simon.brandhof@sonarsource.com"));
-
-    user = userFinder.findById(2);
-    assertThat(user.getId(), is(2));
-    assertThat(user.getLogin(), is("godin"));
-    assertThat(user.getName(), is("Evgeny Mandrikov"));
-    assertThat(user.getEmail(), is("evgeny.mandrikov@sonarsource.com"));
-
-    user = userFinder.findById(3);
-    assertThat(user, nullValue());
-  }
-
-}
diff --git a/sonar-core/src/test/resources/org/sonar/core/user/DeprecatedUserFinderTest/fixture.xml b/sonar-core/src/test/resources/org/sonar/core/user/DeprecatedUserFinderTest/fixture.xml
new file mode 100644 (file)
index 0000000..456f930
--- /dev/null
@@ -0,0 +1,6 @@
+<dataset>
+
+  <users id="1" login="simon" name="Simon Brandhof" email="simon.brandhof@sonarsource.com" />
+  <users id="2" login="godin" name="Evgeny Mandrikov" email="evgeny.mandrikov@sonarsource.com" />
+
+</dataset>
\ No newline at end of file
diff --git a/sonar-core/src/test/resources/org/sonar/core/user/HibernateUserFinderTest/fixture.xml b/sonar-core/src/test/resources/org/sonar/core/user/HibernateUserFinderTest/fixture.xml
deleted file mode 100644 (file)
index 456f930..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<dataset>
-
-  <users id="1" login="simon" name="Simon Brandhof" email="simon.brandhof@sonarsource.com" />
-  <users id="2" login="godin" name="Evgeny Mandrikov" email="evgeny.mandrikov@sonarsource.com" />
-
-</dataset>
\ No newline at end of file
index 15fce83fd9c85616375daf02fef980cd9aa013b2..d5049fcfb159a2db5fea6d71b9944d836da64548 100644 (file)
@@ -23,24 +23,13 @@ import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
 import org.sonar.api.database.BaseIdentifiable;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-
 /**
  * @since 2.2
  */
-@Entity
-@Table(name = "users")
 public class User extends BaseIdentifiable {
 
-  @Column(name = "login", updatable = true, nullable = true, length = 255)
   private String login;
-
-  @Column(name = "name", updatable = true, nullable = true, length = 200)
   private String name;
-
-  @Column(name = "email", updatable = true, nullable = true, length = 100)
   private String email;
 
   public String getLogin() {
index 94c78120fb6794cf1898a56a5563a0197149d60d..8e07887f4211ae06253a7b6afd0c44c07d855232 100644 (file)
  */
 package org.sonar.api.security;
 
-import org.sonar.api.batch.BatchSide;
-import org.sonar.api.server.ServerSide;
 import org.sonar.api.database.model.User;
+import org.sonar.api.server.ServerSide;
 
 /**
  * @since 2.10
  * @deprecated since 5.1 DB access will soon be removed from batch side
  */
 @Deprecated
-@BatchSide
 @ServerSide
 public interface UserFinder {
 
index a73ff53246629923653a4f167b94bc17292610e2..8eed4f8da385da2be1f3030fd5a98a5ee6aef6d1 100644 (file)
  */
 package org.sonar.api.user;
 
-import org.sonar.api.batch.BatchSide;
-import org.sonar.api.server.ServerSide;
-
-import javax.annotation.CheckForNull;
-
 import java.util.List;
+import javax.annotation.CheckForNull;
+import org.sonar.api.server.ServerSide;
 
 /**
  * @since 3.6
  * @deprecated since 5.1 DB access will soon be removed from batch side
  */
 @Deprecated
-@BatchSide
 @ServerSide
 public interface UserFinder {