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;
@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);
}
}
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;
// users
SecurityRealmFactory.class,
- HibernateUserFinder.class,
+ DeprecatedUserFinder.class,
NewUserNotifier.class,
DefaultUserFinder.class,
DefaultUserService.class,
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;
EmailSettings.class,
RuleI18nManager.class,
MeasuresDao.class,
- HibernateUserFinder.class,
PastSnapshotFinderByDate.class,
PastSnapshotFinderByDays.class,
PastSnapshotFinderByPreviousAnalysis.class,
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 {
add(
PastMeasuresLoader.class,
- // Users
- DefaultUserFinder.class,
-
// Rules
new RulesProvider(),
new DebtModelProvider(),
--- /dev/null
+/*
+ * 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;
+ }
+
+}
+++ /dev/null
-/*
- * 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);
- }
-
-}
<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>
--- /dev/null
+/*
+ * 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());
+ }
+
+}
+++ /dev/null
-/*
- * 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());
- }
-
-}
--- /dev/null
+<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
+++ /dev/null
-<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
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() {
*/
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 {
*/
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 {