From b3c46f707702b37331838274f2814ae25f9b8ada Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Fri, 17 Jan 2014 11:20:22 +0100 Subject: [PATCH] SONAR-4923 Use opened session when loading profile --- .../server/qualityprofile/QProfileBackup.java | 2 +- .../server/qualityprofile/QProfileLookup.java | 17 ++++++++++++++--- .../qualityprofile/QProfileBackupTest.java | 10 +++++----- .../qualityprofile/QProfileLookupTest.java | 2 +- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileBackup.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileBackup.java index 73707215ecd..cead97a0dfd 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileBackup.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileBackup.java @@ -81,7 +81,7 @@ public class QProfileBackup implements ServerComponent { hibernateSession.saveWithoutFlush(importedProfile); hibernateSession.commit(); - QProfile profile = qProfileLookup.profile(importedProfile.getId()); + QProfile profile = qProfileLookup.profile(importedProfile.getId(), session); ruleRegistry.bulkIndexProfile(profile.id(), session); dryRunCache.reportGlobalModification(session); session.commit(); diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileLookup.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileLookup.java index acf7d110793..798d74e6ed7 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileLookup.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileLookup.java @@ -54,7 +54,18 @@ public class QProfileLookup implements ServerComponent { @CheckForNull public QProfile profile(int id) { - QualityProfileDto dto = findQualityProfile(id); + SqlSession session = myBatis.openSession(); + try { + return profile(id, session); + } finally { + MyBatis.closeQuietly(session); + } + } + + + @CheckForNull + public QProfile profile(int id, SqlSession session) { + QualityProfileDto dto = findQualityProfile(id, session); if (dto != null) { return QProfile.from(dto); } @@ -168,8 +179,8 @@ public class QProfileLookup implements ServerComponent { } @CheckForNull - private QualityProfileDto findQualityProfile(int id) { - return dao.selectById(id); + private QualityProfileDto findQualityProfile(int id, SqlSession session) { + return dao.selectById(id, session); } @CheckForNull diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileBackupTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileBackupTest.java index 1acbf94dfca..df5f41ff8e7 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileBackupTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileBackupTest.java @@ -101,7 +101,7 @@ public class QProfileBackupTest { when(profile.getId()).thenReturn(1); when(xmlProfileParser.parse(any(Reader.class), any(ValidationMessages.class))).thenReturn(profile); when(hibernateSession.getSingleResult(any(Class.class), eq("name"), eq("Default"), eq("language"), eq("java"))).thenReturn(null); - when(qProfileLookup.profile(anyInt())).thenReturn(new QProfile().setId(1)); + when(qProfileLookup.profile(anyInt(), eq(session))).thenReturn(new QProfile().setId(1)); QProfileResult result = backup.restore("", false, userSession); @@ -156,7 +156,7 @@ public class QProfileBackupTest { RulesProfile existingProfile = RulesProfile.create("Default", "java").setId(1); when(hibernateSession.getSingleResult(any(Class.class), eq("name"), eq("Default"), eq("language"), eq("java"))).thenReturn(existingProfile); - when(qProfileLookup.profile(anyInt())).thenReturn(new QProfile().setId(1)); + when(qProfileLookup.profile(anyInt(), eq(session))).thenReturn(new QProfile().setId(1)); QProfileResult result = backup.restore("", true, userSession); @@ -185,7 +185,7 @@ public class QProfileBackupTest { }).when(xmlProfileParser).parse(any(Reader.class), any(ValidationMessages.class)); when(hibernateSession.getSingleResult(any(Class.class), eq("name"), eq("Default"), eq("language"), eq("java"))).thenReturn(null); - when(qProfileLookup.profile(anyInt())).thenReturn(new QProfile().setId(1)); + when(qProfileLookup.profile(anyInt(), eq(session))).thenReturn(new QProfile().setId(1)); QProfileResult result = backup.restore("", true, userSession); @@ -210,7 +210,7 @@ public class QProfileBackupTest { }).when(xmlProfileParser).parse(any(Reader.class), any(ValidationMessages.class)); when(hibernateSession.getSingleResult(any(Class.class), eq("name"), eq("Default"), eq("language"), eq("java"))).thenReturn(null); - when(qProfileLookup.profile(anyInt())).thenReturn(new QProfile().setId(1)); + when(qProfileLookup.profile(anyInt(), eq(session))).thenReturn(new QProfile().setId(1)); try { backup.restore("", false, userSession); @@ -231,7 +231,7 @@ public class QProfileBackupTest { public void do_not_restore_if_xml_is_empty() throws Exception { when(xmlProfileParser.parse(any(Reader.class), any(ValidationMessages.class))).thenReturn(null); when(hibernateSession.getSingleResult(any(Class.class), eq("name"), eq("Default"), eq("language"), eq("java"))).thenReturn(null); - when(qProfileLookup.profile(anyInt())).thenReturn(new QProfile().setId(1)); + when(qProfileLookup.profile(anyInt(), eq(session))).thenReturn(new QProfile().setId(1)); QProfileResult result = backup.restore("", false, userSession); diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileLookupTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileLookupTest.java index aa5e30da1e3..906ddea4156 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileLookupTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileLookupTest.java @@ -61,7 +61,7 @@ public class QProfileLookupTest { @Test public void find_by_id() throws Exception { - when(dao.selectById(1)).thenReturn( + when(dao.selectById(1, session)).thenReturn( new QualityProfileDto().setId(1).setName("Sonar Way with Findbugs").setLanguage("java").setParent("Sonar Way").setVersion(1).setUsed(false) ); -- 2.39.5