import org.sonar.core.persistence.MyBatis;
import org.sonar.core.template.LoadedTemplateDao;
import org.sonar.core.template.LoadedTemplateDto;
+import org.sonar.jpa.session.DatabaseSessionFactory;
import org.sonar.server.platform.PersistentSettings;
import org.sonar.server.qualityprofile.*;
import org.sonar.server.rule.RegisterRules;
private final ESActiveRule esActiveRule;
private final PersistentSettings settings;
private final List<ProfileDefinition> definitions;
+ private final DatabaseSessionFactory sessionFactory;
private final MyBatis myBatis;
- public RegisterQualityProfiles(MyBatis myBatis,
- PersistentSettings settings,
- ESActiveRule esActiveRule,
- LoadedTemplateDao loadedTemplateDao,
- QProfileBackup qProfileBackup,
- QProfileOperations qProfileOperations,
- QProfileLookup qProfileLookup,
- RegisterRules registerRulesBefore) {
- this(myBatis, settings, esActiveRule, loadedTemplateDao, qProfileBackup, qProfileOperations, qProfileLookup, registerRulesBefore,
+ public RegisterQualityProfiles(DatabaseSessionFactory sessionFactory,
+ MyBatis myBatis,
+ PersistentSettings settings,
+ ESActiveRule esActiveRule,
+ LoadedTemplateDao loadedTemplateDao,
+ QProfileBackup qProfileBackup,
+ QProfileOperations qProfileOperations,
+ QProfileLookup qProfileLookup,
+ RegisterRules registerRulesBefore) {
+ this(sessionFactory, myBatis, settings, esActiveRule, loadedTemplateDao, qProfileBackup, qProfileOperations, qProfileLookup, registerRulesBefore,
Collections.<ProfileDefinition>emptyList());
}
- public RegisterQualityProfiles(MyBatis myBatis,
- PersistentSettings settings,
- ESActiveRule esActiveRule,
- LoadedTemplateDao loadedTemplateDao,
- QProfileBackup qProfileBackup,
- QProfileOperations qProfileOperations,
- QProfileLookup qProfileLookup,
- RegisterRules registerRulesBefore,
- List<ProfileDefinition> definitions) {
+ public RegisterQualityProfiles(DatabaseSessionFactory sessionFactory,
+ MyBatis myBatis,
+ PersistentSettings settings,
+ ESActiveRule esActiveRule,
+ LoadedTemplateDao loadedTemplateDao,
+ QProfileBackup qProfileBackup,
+ QProfileOperations qProfileOperations,
+ QProfileLookup qProfileLookup,
+ RegisterRules registerRulesBefore,
+ List<ProfileDefinition> definitions) {
+ this.sessionFactory = sessionFactory;
this.myBatis = myBatis;
this.settings = settings;
this.esActiveRule = esActiveRule;
public void start() {
TimeProfiler profiler = new TimeProfiler(LOGGER).start("Register Quality Profiles");
+ // Hibernate session can contain an invalid cache of rules.
+ // As long ProfileDefinition API will be used, then we'll have to use this commit as Hibernate is used by plugin to load rules when creating their profiles.
+ sessionFactory.getSession().commit();
+
SqlSession session = myBatis.openSession();
try {
ListMultimap<String, RulesProfile> profilesByLanguage = profilesByLanguage();
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
+import org.sonar.api.database.DatabaseSession;
import org.sonar.api.profiles.ProfileDefinition;
import org.sonar.api.profiles.RulesProfile;
import org.sonar.api.utils.SonarException;
import org.sonar.core.qualityprofile.db.QualityProfileDao;
import org.sonar.core.template.LoadedTemplateDao;
import org.sonar.core.template.LoadedTemplateDto;
+import org.sonar.jpa.session.DatabaseSessionFactory;
import org.sonar.server.platform.PersistentSettings;
import org.sonar.server.qualityprofile.*;
import org.sonar.server.user.UserSession;
@Mock
SqlSession session;
+ @Mock
+ DatabaseSessionFactory sessionFactory;
+
@Mock
PersistentSettings settings;
@Before
public void setUp() throws Exception {
when(myBatis.openSession()).thenReturn(session);
+ when(sessionFactory.getSession()).thenReturn(mock(DatabaseSession.class));
definitions = newArrayList();
- registerQualityProfiles = new RegisterQualityProfiles(myBatis, settings, esActiveRule, loadedTemplateDao, qProfileBackup, qProfileOperations, qProfileLookup, null, definitions);
+ registerQualityProfiles = new RegisterQualityProfiles(sessionFactory, myBatis, settings, esActiveRule, loadedTemplateDao, qProfileBackup, qProfileOperations, qProfileLookup, null, definitions);
}
@Test