From cd877d022c1ccf8f1a98f0fb0862d3170d2e4079 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Fri, 3 Mar 2017 11:06:10 +0100 Subject: [PATCH] Drop deprecated method MyBatis#closeQuietly(DbSession) --- .../src/main/java/org/sonar/db/MyBatis.java | 17 -------- .../src/test/java/org/sonar/db/DbTester.java | 2 +- .../issue/BaseIssuesLoader.java | 40 +++++++------------ .../issue/TrackerBaseInputFactory.java | 8 +--- .../step/CustomMeasuresCopyStep.java | 18 ++++----- .../step/EnableAnalysisStep.java | 7 +--- .../step/PersistEventsStep.java | 10 ++--- .../step/PersistFileSourcesStep.java | 8 +--- .../step/PersistIssuesStep.java | 17 +++----- .../step/PersistProjectLinksStep.java | 6 +-- .../step/PersistTestsStep.java | 10 ++--- .../org/sonar/server/issue/IssueStorage.java | 23 ++++------- .../notification/NewIssuesNotification.java | 6 +-- .../measure/custom/ws/MetricsAction.java | 7 +--- .../measure/custom/ws/SearchAction.java | 6 +-- .../measure/custom/ws/UpdateAction.java | 6 +-- .../server/metric/DefaultMetricFinder.java | 21 ++-------- .../sonar/server/metric/ws/DomainsAction.java | 6 +-- .../sonar/server/metric/ws/SearchAction.java | 6 +-- .../platform/monitoring/DatabaseMonitor.java | 11 +---- .../sonar/server/startup/RegisterMetrics.java | 6 +-- 21 files changed, 61 insertions(+), 180 deletions(-) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java b/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java index 250da1dd1e6..6f88bffc749 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java @@ -23,14 +23,12 @@ import com.google.common.annotations.VisibleForTesting; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import javax.annotation.Nullable; import org.apache.ibatis.logging.LogFactory; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.sonar.api.Startable; -import org.sonar.api.utils.log.Loggers; import org.sonar.db.ce.CeActivityMapper; import org.sonar.db.ce.CeQueueMapper; import org.sonar.db.ce.CeScannerContextMapper; @@ -130,21 +128,6 @@ public class MyBatis implements Startable { this.database = database; } - /** - * @deprecated please use try-with-resources - */ - @Deprecated - public static void closeQuietly(@Nullable DbSession session) { - if (session != null) { - try { - session.close(); - } catch (Exception e) { - Loggers.get(MyBatis.class).warn("Fail to close db session", e); - // do not re-throw the exception - } - } - } - @Override public void start() { LogFactory.useSlf4jLogging(); diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/DbTester.java b/server/sonar-db-dao/src/test/java/org/sonar/db/DbTester.java index 0742b39543e..1f1d72a3737 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/DbTester.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/DbTester.java @@ -218,7 +218,7 @@ public class DbTester extends AbstractDbTester { @Override protected void after() { if (session != null) { - MyBatis.closeQuietly(session); + session.close(); } db.stop(); started = false; diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/BaseIssuesLoader.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/BaseIssuesLoader.java index b20df19733f..e7803b4f9b8 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/BaseIssuesLoader.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/BaseIssuesLoader.java @@ -22,14 +22,11 @@ package org.sonar.server.computation.task.projectanalysis.issue; import java.util.ArrayList; import java.util.List; import java.util.Set; -import org.apache.ibatis.session.ResultContext; -import org.apache.ibatis.session.ResultHandler; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.RuleStatus; import org.sonar.core.issue.DefaultIssue; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.issue.IssueDto; import org.sonar.db.issue.IssueMapper; import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolder; @@ -55,28 +52,22 @@ public class BaseIssuesLoader { } public List loadForComponentUuid(String componentUuid) { - DbSession session = dbClient.openSession(false); - final List result = new ArrayList<>(); - try { - session.getMapper(IssueMapper.class).selectNonClosedByComponentUuid(componentUuid, new ResultHandler() { - @Override - public void handleResult(ResultContext resultContext) { - DefaultIssue issue = ((IssueDto) resultContext.getResultObject()).toDefaultIssue(); + try (DbSession dbSession = dbClient.openSession(false)) { + List result = new ArrayList<>(); + dbSession.getMapper(IssueMapper.class).selectNonClosedByComponentUuid(componentUuid, resultContext -> { + DefaultIssue issue = ((IssueDto) resultContext.getResultObject()).toDefaultIssue(); - // TODO this field should be set outside this class - if (!isActive(issue.ruleKey()) || ruleRepository.getByKey(issue.ruleKey()).getStatus() == RuleStatus.REMOVED) { - issue.setOnDisabledRule(true); - // TODO to be improved, why setOnDisabledRule(true) is not enough ? - issue.setBeingClosed(true); - } - // FIXME - issue.setSelectedAt(System.currentTimeMillis()); - result.add(issue); + // TODO this field should be set outside this class + if (!isActive(issue.ruleKey()) || ruleRepository.getByKey(issue.ruleKey()).getStatus() == RuleStatus.REMOVED) { + issue.setOnDisabledRule(true); + // TODO to be improved, why setOnDisabledRule(true) is not enough ? + issue.setBeingClosed(true); } + // FIXME + issue.setSelectedAt(System.currentTimeMillis()); + result.add(issue); }); return result; - } finally { - MyBatis.closeQuietly(session); } } @@ -88,11 +79,8 @@ public class BaseIssuesLoader { * Uuids of all the components that have open issues on this project. */ public Set loadUuidsOfComponentsWithOpenIssues() { - DbSession session = dbClient.openSession(false); - try { - return dbClient.issueDao().selectComponentUuidsOfOpenIssuesForProjectUuid(session, treeRootHolder.getRoot().getUuid()); - } finally { - MyBatis.closeQuietly(session); + try (DbSession dbSession = dbClient.openSession(false)) { + return dbClient.issueDao().selectComponentUuidsOfOpenIssuesForProjectUuid(dbSession, treeRootHolder.getRoot().getUuid()); } } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerBaseInputFactory.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerBaseInputFactory.java index 945a594205a..01001bcdca8 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerBaseInputFactory.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerBaseInputFactory.java @@ -29,7 +29,6 @@ import org.sonar.core.issue.tracking.LazyInput; import org.sonar.core.issue.tracking.LineHashSequence; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.server.computation.task.projectanalysis.component.Component; import org.sonar.server.computation.task.projectanalysis.filemove.MovedFilesRepository; import org.sonar.server.computation.task.projectanalysis.filemove.MovedFilesRepository.OriginalFile; @@ -69,16 +68,13 @@ public class TrackerBaseInputFactory { if (component.getType() != Component.Type.FILE) { return EMPTY_LINE_HASH_SEQUENCE; } - - DbSession session = dbClient.openSession(false); - try { + + try (DbSession session = dbClient.openSession(false)) { List hashes = dbClient.fileSourceDao().selectLineHashes(session, effectiveUuid); if (hashes == null || hashes.isEmpty()) { return EMPTY_LINE_HASH_SEQUENCE; } return new LineHashSequence(hashes); - } finally { - MyBatis.closeQuietly(session); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/CustomMeasuresCopyStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/CustomMeasuresCopyStep.java index 773fec43783..b4700d50157 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/CustomMeasuresCopyStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/CustomMeasuresCopyStep.java @@ -24,7 +24,6 @@ import java.util.List; import org.apache.commons.lang.math.NumberUtils; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.server.computation.task.projectanalysis.component.Component; import org.sonar.server.computation.task.projectanalysis.component.ComponentVisitor; @@ -56,12 +55,12 @@ public class CustomMeasuresCopyStep implements ComputationStep { @Override public void execute() { new DepthTraversalTypeAwareCrawler( - new TypeAwareVisitorAdapter(CrawlerDepthLimit.LEAVES, ComponentVisitor.Order.PRE_ORDER) { - @Override - public void visitAny(Component component) { - copy(component); - } - }).visit(treeRootHolder.getRoot()); + new TypeAwareVisitorAdapter(CrawlerDepthLimit.LEAVES, ComponentVisitor.Order.PRE_ORDER) { + @Override + public void visitAny(Component component) { + copy(component); + } + }).visit(treeRootHolder.getRoot()); } private void copy(Component component) { @@ -74,11 +73,8 @@ public class CustomMeasuresCopyStep implements ComputationStep { } private List loadCustomMeasures(Component component) { - DbSession session = dbClient.openSession(false); - try { + try (DbSession session = dbClient.openSession(false)) { return dbClient.customMeasureDao().selectByComponentUuid(session, component.getUuid()); - } finally { - MyBatis.closeQuietly(session); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/EnableAnalysisStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/EnableAnalysisStep.java index 471cbb27656..a5f8dc934a5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/EnableAnalysisStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/EnableAnalysisStep.java @@ -21,7 +21,6 @@ package org.sonar.server.computation.task.projectanalysis.step; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder; import org.sonar.server.computation.task.projectanalysis.component.Component; import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolder; @@ -41,15 +40,11 @@ public class EnableAnalysisStep implements ComputationStep { @Override public void execute() { - DbSession dbSession = dbClient.openSession(false); - try { + try (DbSession dbSession = dbClient.openSession(false)) { Component project = treeRootHolder.getRoot(); dbClient.snapshotDao().switchIsLastFlagAndSetProcessedStatus(dbSession, project.getUuid(), analysisMetadataHolder.getUuid()); dbClient.componentDao().applyBChangesForRootComponentUuid(dbSession, project.getUuid()); dbSession.commit(); - - } finally { - MyBatis.closeQuietly(dbSession); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistEventsStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistEventsStep.java index f97ebab5ae6..2af4ba6de3f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistEventsStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistEventsStep.java @@ -27,7 +27,6 @@ import org.sonar.api.utils.System2; import org.sonar.core.util.UuidFactory; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.event.EventDto; import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder; import org.sonar.server.computation.task.projectanalysis.component.Component; @@ -60,14 +59,11 @@ public class PersistEventsStep implements ComputationStep { @Override public void execute() { - final DbSession session = dbClient.openSession(false); - try { + try (DbSession dbSession = dbClient.openSession(false)) { long analysisDate = analysisMetadataHolder.getAnalysisDate(); - new DepthTraversalTypeAwareCrawler(new PersistEventComponentVisitor(session, analysisDate)) + new DepthTraversalTypeAwareCrawler(new PersistEventComponentVisitor(dbSession, analysisDate)) .visit(treeRootHolder.getRoot()); - session.commit(); - } finally { - MyBatis.closeQuietly(session); + dbSession.commit(); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistFileSourcesStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistFileSourcesStep.java index f7d0ef7780a..0d61acee1e2 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistFileSourcesStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistFileSourcesStep.java @@ -33,7 +33,6 @@ import org.sonar.api.utils.System2; import org.sonar.core.util.CloseableIterator; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.protobuf.DbFileSources; import org.sonar.db.source.FileSourceDto; import org.sonar.db.source.FileSourceDto.Type; @@ -85,12 +84,9 @@ public class PersistFileSourcesStep implements ComputationStep { @Override public void execute() { // Don't use batch insert for file_sources since keeping all data in memory can produce OOM for big files - DbSession session = dbClient.openSession(false); - try { - new DepthTraversalTypeAwareCrawler(new FileSourceVisitor(session)) + try (DbSession dbSession = dbClient.openSession(false)) { + new DepthTraversalTypeAwareCrawler(new FileSourceVisitor(dbSession)) .visit(treeRootHolder.getRoot()); - } finally { - MyBatis.closeQuietly(session); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistIssuesStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistIssuesStep.java index 5a780ba76d8..25ee9915bf5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistIssuesStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistIssuesStep.java @@ -27,7 +27,6 @@ import org.sonar.core.issue.FieldDiffs; import org.sonar.core.util.CloseableIterator; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.issue.IssueChangeDto; import org.sonar.db.issue.IssueChangeMapper; import org.sonar.db.issue.IssueDto; @@ -56,12 +55,11 @@ public class PersistIssuesStep implements ComputationStep { @Override public void execute() { - DbSession session = dbClient.openSession(true); - IssueMapper mapper = session.getMapper(IssueMapper.class); - IssueChangeMapper changeMapper = session.getMapper(IssueChangeMapper.class); + try (DbSession dbSession = dbClient.openSession(true); + CloseableIterator issues = issueCache.traverse()) { - CloseableIterator issues = issueCache.traverse(); - try { + IssueMapper mapper = dbSession.getMapper(IssueMapper.class); + IssueChangeMapper changeMapper = dbSession.getMapper(IssueChangeMapper.class); while (issues.hasNext()) { DefaultIssue issue = issues.next(); boolean saved = persistIssueIfRequired(mapper, issue); @@ -69,11 +67,8 @@ public class PersistIssuesStep implements ComputationStep { insertChanges(changeMapper, issue); } } - session.flushStatements(); - session.commit(); - } finally { - MyBatis.closeQuietly(session); - issues.close(); + dbSession.flushStatements(); + dbSession.commit(); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistProjectLinksStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistProjectLinksStep.java index 56da433976c..0734c07c9fb 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistProjectLinksStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistProjectLinksStep.java @@ -28,7 +28,6 @@ import java.util.Set; import org.sonar.api.i18n.I18n; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.component.ComponentLinkDto; import org.sonar.scanner.protocol.output.ScannerReport; import org.sonar.scanner.protocol.output.ScannerReport.ComponentLink.ComponentLinkType; @@ -69,13 +68,10 @@ public class PersistProjectLinksStep implements ComputationStep { @Override public void execute() { - DbSession session = dbClient.openSession(false); - try { + try (DbSession session = dbClient.openSession(false)) { new DepthTraversalTypeAwareCrawler(new ProjectLinkVisitor(session)) .visit(treeRootHolder.getRoot()); session.commit(); - } finally { - MyBatis.closeQuietly(session); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistTestsStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistTestsStep.java index 92bd08ea9f3..460f7597ee6 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistTestsStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistTestsStep.java @@ -39,7 +39,6 @@ import org.sonar.core.util.CloseableIterator; import org.sonar.core.util.Uuids; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.protobuf.DbFileSources; import org.sonar.db.source.FileSourceDto; import org.sonar.db.source.FileSourceDto.Type; @@ -72,16 +71,13 @@ public class PersistTestsStep implements ComputationStep { @Override public void execute() { - DbSession session = dbClient.openSession(true); - try { - TestDepthTraversalTypeAwareVisitor visitor = new TestDepthTraversalTypeAwareVisitor(session); + try (DbSession dbSession = dbClient.openSession(true)) { + TestDepthTraversalTypeAwareVisitor visitor = new TestDepthTraversalTypeAwareVisitor(dbSession); new DepthTraversalTypeAwareCrawler(visitor).visit(treeRootHolder.getRoot()); - session.commit(); + dbSession.commit(); if (visitor.hasUnprocessedCoverageDetails) { LOG.warn("Some coverage tests are not taken into account during analysis of project '{}'", visitor.getProjectKey()); } - } finally { - MyBatis.closeQuietly(session); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/IssueStorage.java b/server/sonar-server/src/main/java/org/sonar/server/issue/IssueStorage.java index 90b515d981b..f6e9a5c37e5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/IssueStorage.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/IssueStorage.java @@ -36,7 +36,6 @@ import org.sonar.core.issue.FieldDiffs; import org.sonar.db.BatchSession; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.issue.IssueChangeDto; import org.sonar.db.issue.IssueChangeMapper; @@ -78,11 +77,8 @@ public abstract class IssueStorage { } public void save(Iterable issues) { - DbSession session = dbClient.openSession(true); - try { + try (DbSession session = dbClient.openSession(true)) { doSave(session, issues); - } finally { - MyBatis.closeQuietly(session); } } @@ -90,14 +86,14 @@ public abstract class IssueStorage { // Batch session can not be used for updates. It does not return the number of updated rows, // required for detecting conflicts. long now = system2.now(); - + Map> issuesNewOrUpdated = StreamSupport.stream(issues.spliterator(), true).collect(Collectors.groupingBy(DefaultIssue::isNew)); List issuesToInsert = firstNonNull(issuesNewOrUpdated.get(true), emptyList()); List issuesToUpdate = firstNonNull(issuesNewOrUpdated.get(false), emptyList()); - + Collection inserted = insert(session, issuesToInsert, now); Collection updated = update(issuesToUpdate, now); - + Collection issuesInsertedOrUpdated = new ArrayList<>(issuesToInsert.size() + issuesToUpdate.size()); issuesInsertedOrUpdated.addAll(inserted); issuesInsertedOrUpdated.addAll(updated); @@ -136,17 +132,14 @@ public abstract class IssueStorage { private Collection update(List issuesToUpdate, long now) { Collection updated = new ArrayList<>(); if (!issuesToUpdate.isEmpty()) { - DbSession session = dbClient.openSession(false); - try { - IssueChangeMapper issueChangeMapper = session.getMapper(IssueChangeMapper.class); + try (DbSession dbSession = dbClient.openSession(false)) { + IssueChangeMapper issueChangeMapper = dbSession.getMapper(IssueChangeMapper.class); for (DefaultIssue issue : issuesToUpdate) { - String key = doUpdate(session, now, issue); + String key = doUpdate(dbSession, now, issue); updated.add(key); insertChanges(issueChangeMapper, issue); } - session.commit(); - } finally { - MyBatis.closeQuietly(session); + dbSession.commit(); } } return updated; diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/notification/NewIssuesNotification.java b/server/sonar-server/src/main/java/org/sonar/server/issue/notification/NewIssuesNotification.java index c324c1776b2..e2735535eac 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/notification/NewIssuesNotification.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/notification/NewIssuesNotification.java @@ -30,7 +30,6 @@ import org.sonar.api.utils.Duration; import org.sonar.api.utils.Durations; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.rule.RuleDto; import org.sonar.server.issue.notification.NewIssuesStatistics.Metric; import org.sonar.server.user.index.UserDoc; @@ -80,15 +79,12 @@ public class NewIssuesNotification extends Notification { public NewIssuesNotification setStatistics(String projectName, NewIssuesStatistics.Stats stats) { setDefaultMessage(stats.countForMetric(SEVERITY) + " new issues on " + projectName + ".\n"); - DbSession dbSession = dbClient.openSession(false); - try { + try (DbSession dbSession = dbClient.openSession(false)) { setSeverityStatistics(stats); setAssigneesStatistics(stats); setTagsStatistics(stats); setComponentsStatistics(dbSession, stats); setRuleStatistics(dbSession, stats); - } finally { - MyBatis.closeQuietly(dbSession); } return this; diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/MetricsAction.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/MetricsAction.java index 4424e74a881..ff9d65d137c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/MetricsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/MetricsAction.java @@ -27,7 +27,6 @@ import org.sonar.api.server.ws.WebService; import org.sonar.api.utils.text.JsonWriter; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.component.ComponentDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.component.ComponentFinder; @@ -75,17 +74,13 @@ public class MetricsAction implements CustomMeasuresWsAction { @Override public void handle(Request request, Response response) throws Exception { - DbSession dbSession = dbClient.openSession(false); - - try { + try (DbSession dbSession = dbClient.openSession(false)) { ComponentDto project = componentFinder.getByUuidOrKey(dbSession, request.param(CreateAction.PARAM_PROJECT_ID), request.param(CreateAction.PARAM_PROJECT_KEY), PROJECT_ID_AND_KEY); checkPermissions(userSession, project); List metrics = searchMetrics(dbSession, project); writeResponse(response.newJsonWriter(), metrics); - } finally { - MyBatis.closeQuietly(dbSession); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/SearchAction.java index 0e19898196b..ba940ea8d8e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/SearchAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/SearchAction.java @@ -35,7 +35,6 @@ import org.sonar.api.server.ws.WebService; import org.sonar.api.utils.text.JsonWriter; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.component.ComponentDto; import org.sonar.db.component.SnapshotDto; import org.sonar.db.measure.custom.CustomMeasureDto; @@ -98,8 +97,7 @@ public class SearchAction implements CustomMeasuresWsAction { .setPage(request.mandatoryParamAsInt(WebService.Param.PAGE), request.mandatoryParamAsInt(WebService.Param.PAGE_SIZE)); - DbSession dbSession = dbClient.openSession(false); - try { + try (DbSession dbSession = dbClient.openSession(false)) { ComponentDto component = componentFinder.getByUuidOrKey(dbSession, projectUuid, projectKey, PROJECT_ID_AND_KEY); checkPermissions(userSession, component); Long lastAnalysisDateMs = searchLastSnapshotDate(dbSession, component); @@ -109,8 +107,6 @@ public class SearchAction implements CustomMeasuresWsAction { Map metricsById = metricsById(dbSession, customMeasures); writeResponse(response, customMeasures, nbCustomMeasures, component, metricsById, usersByLogin, lastAnalysisDateMs, searchOptions, fieldsToReturn); - } finally { - MyBatis.closeQuietly(dbSession); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/UpdateAction.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/UpdateAction.java index 9f2b43d9983..fea52efaac9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/UpdateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/UpdateAction.java @@ -27,7 +27,6 @@ import org.sonar.api.utils.System2; import org.sonar.api.utils.text.JsonWriter; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.component.ComponentDto; import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; @@ -86,8 +85,7 @@ public class UpdateAction implements CustomMeasuresWsAction { String description = request.param(PARAM_DESCRIPTION); checkParameters(value, description); - DbSession dbSession = dbClient.openSession(true); - try { + try (DbSession dbSession = dbClient.openSession(true)) { CustomMeasureDto customMeasure = dbClient.customMeasureDao().selectOrFail(dbSession, id); MetricDto metric = dbClient.metricDao().selectOrFailById(dbSession, customMeasure.getMetricId()); ComponentDto component = dbClient.componentDao().selectOrFailByUuid(dbSession, customMeasure.getComponentUuid()); @@ -104,8 +102,6 @@ public class UpdateAction implements CustomMeasuresWsAction { JsonWriter json = response.newJsonWriter(); customMeasureJsonWriter.write(json, customMeasure, metric, component, user, true, CustomMeasureJsonWriter.OPTIONAL_FIELDS); json.close(); - } finally { - MyBatis.closeQuietly(dbSession); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/metric/DefaultMetricFinder.java b/server/sonar-server/src/main/java/org/sonar/server/metric/DefaultMetricFinder.java index 47985d9c634..c83f72b1df7 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/metric/DefaultMetricFinder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/metric/DefaultMetricFinder.java @@ -29,7 +29,6 @@ import org.sonar.api.measures.Metric; import org.sonar.api.measures.MetricFinder; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.metric.MetricDto; import static com.google.common.collect.FluentIterable.from; @@ -44,51 +43,39 @@ public class DefaultMetricFinder implements MetricFinder { @Override public Metric findById(int id) { - DbSession session = dbClient.openSession(false); - try { + try (DbSession session = dbClient.openSession(false)) { MetricDto dto = dbClient.metricDao().selectById(session, id); if (dto != null && dto.isEnabled()) { return ToMetric.INSTANCE.apply(dto); } return null; - } finally { - MyBatis.closeQuietly(session); } } @Override public Metric findByKey(String key) { - DbSession session = dbClient.openSession(false); - try { + try (DbSession session = dbClient.openSession(false)) { MetricDto dto = dbClient.metricDao().selectByKey(session, key); if (dto != null && dto.isEnabled()) { return ToMetric.INSTANCE.apply(dto); } return null; - } finally { - MyBatis.closeQuietly(session); } } @Override public Collection findAll(List metricKeys) { - DbSession session = dbClient.openSession(false); - try { + try (DbSession session = dbClient.openSession(false)) { List dtos = dbClient.metricDao().selectByKeys(session, metricKeys); return from(dtos).filter(IsEnabled.INSTANCE).transform(ToMetric.INSTANCE).toList(); - } finally { - MyBatis.closeQuietly(session); } } @Override public Collection findAll() { - DbSession session = dbClient.openSession(false); - try { + try (DbSession session = dbClient.openSession(false)) { List dtos = dbClient.metricDao().selectEnabled(session); return from(dtos).transform(ToMetric.INSTANCE).toList(); - } finally { - MyBatis.closeQuietly(session); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/DomainsAction.java b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/DomainsAction.java index 5a73c034e0f..c7ff63609ab 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/DomainsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/DomainsAction.java @@ -26,7 +26,6 @@ import org.sonar.api.server.ws.WebService; import org.sonar.api.utils.text.JsonWriter; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; public class DomainsAction implements MetricsWsAction { @@ -47,16 +46,13 @@ public class DomainsAction implements MetricsWsAction { @Override public void handle(Request request, Response response) throws Exception { - DbSession dbSession = dbClient.openSession(false); - try { + try (DbSession dbSession = dbClient.openSession(false)) { List domains = dbClient.metricDao().selectEnabledDomains(dbSession); JsonWriter json = response.newJsonWriter(); json.beginObject(); writeDomains(json, domains); json.endObject(); json.close(); - } finally { - MyBatis.closeQuietly(dbSession); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/SearchAction.java index 74f8901e10d..0a8da9280e7 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/SearchAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/SearchAction.java @@ -29,7 +29,6 @@ import org.sonar.api.server.ws.WebService.Param; import org.sonar.api.utils.text.JsonWriter; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.metric.MetricDto; import org.sonar.server.es.SearchOptions; @@ -81,8 +80,7 @@ public class SearchAction implements MetricsWsAction { .setPage(request.mandatoryParamAsInt(Param.PAGE), request.mandatoryParamAsInt(Param.PAGE_SIZE)); Boolean isCustom = request.paramAsBoolean(PARAM_IS_CUSTOM); - DbSession dbSession = dbClient.openSession(false); - try { + try (DbSession dbSession = dbClient.openSession(false)) { List metrics = dbClient.metricDao().selectEnabled(dbSession, isCustom, searchOptions.getOffset(), searchOptions.getLimit()); int nbMetrics = dbClient.metricDao().countEnabled(dbSession, isCustom); JsonWriter json = response.newJsonWriter(); @@ -92,8 +90,6 @@ public class SearchAction implements MetricsWsAction { searchOptions.writeJson(json, nbMetrics); json.endObject(); json.close(); - } finally { - MyBatis.closeQuietly(dbSession); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/DatabaseMonitor.java b/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/DatabaseMonitor.java index e4098ee8d09..2ec74c63f2d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/DatabaseMonitor.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/DatabaseMonitor.java @@ -25,10 +25,8 @@ import java.sql.SQLException; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.dbcp.BasicDataSource; -import org.apache.commons.dbutils.DbUtils; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.server.platform.db.migration.version.DatabaseVersion; /** @@ -124,9 +122,8 @@ public class DatabaseMonitor extends BaseMonitorMBean implements DatabaseMonitor } private void completeDbAttributes(Map attributes) { - DbSession dbSession = dbClient.openSession(false); - Connection connection = dbSession.getConnection(); - try { + try (DbSession dbSession = dbClient.openSession(false); + Connection connection = dbSession.getConnection()) { DatabaseMetaData metadata = connection.getMetaData(); attributes.put("Database", metadata.getDatabaseProductName()); attributes.put("Database Version", metadata.getDatabaseProductVersion()); @@ -137,10 +134,6 @@ public class DatabaseMonitor extends BaseMonitorMBean implements DatabaseMonitor attributes.put("Version Status", getMigrationStatus()); } catch (SQLException e) { throw new IllegalStateException("Fail to get DB metadata", e); - - } finally { - DbUtils.closeQuietly(connection); - MyBatis.closeQuietly(dbSession); } } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java index 5220db7e0f3..ca744aa238c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java +++ b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java @@ -34,7 +34,6 @@ import org.sonar.api.utils.log.Loggers; import org.sonar.api.utils.log.Profiler; import org.sonar.db.DbClient; import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; import org.sonar.db.metric.MetricDto; import static com.google.common.collect.FluentIterable.from; @@ -66,13 +65,10 @@ public class RegisterMetrics { void register(Iterable metrics) { Profiler profiler = Profiler.create(LOG).startInfo("Register metrics"); - DbSession session = dbClient.openSession(false); - try { + try (DbSession session = dbClient.openSession(false)) { save(session, metrics); sanitizeQualityGates(session); session.commit(); - } finally { - MyBatis.closeQuietly(session); } profiler.stopDebug(); } -- 2.39.5