]> source.dussan.org Git - sonarqube.git/commitdiff
Drop deprecated method MyBatis#closeQuietly(DbSession)
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Fri, 3 Mar 2017 10:06:10 +0000 (11:06 +0100)
committerGitHub <noreply@github.com>
Fri, 3 Mar 2017 10:06:10 +0000 (11:06 +0100)
21 files changed:
server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java
server/sonar-db-dao/src/test/java/org/sonar/db/DbTester.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/BaseIssuesLoader.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerBaseInputFactory.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/CustomMeasuresCopyStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/EnableAnalysisStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistEventsStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistFileSourcesStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistIssuesStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistProjectLinksStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistTestsStep.java
server/sonar-server/src/main/java/org/sonar/server/issue/IssueStorage.java
server/sonar-server/src/main/java/org/sonar/server/issue/notification/NewIssuesNotification.java
server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/MetricsAction.java
server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/SearchAction.java
server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/UpdateAction.java
server/sonar-server/src/main/java/org/sonar/server/metric/DefaultMetricFinder.java
server/sonar-server/src/main/java/org/sonar/server/metric/ws/DomainsAction.java
server/sonar-server/src/main/java/org/sonar/server/metric/ws/SearchAction.java
server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/DatabaseMonitor.java
server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java

index 250da1dd1e6193bdeb63febb556b255fdec66b52..6f88bffc749ea378291adddcb6aa46ea08be9294 100644 (file)
@@ -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();
index 0742b39543ec4fe7ff4bc03b38ed79f4aa2ee74f..1f1d72a37370f0dee3c1b1b7360b2cd2521ad588 100644 (file)
@@ -218,7 +218,7 @@ public class DbTester extends AbstractDbTester<TestDb> {
   @Override
   protected void after() {
     if (session != null) {
-      MyBatis.closeQuietly(session);
+      session.close();
     }
     db.stop();
     started = false;
index b20df19733f6e94f7e6317e386ed95cbc87866ac..e7803b4f9b8ca9a1e0810f19e6337f2962a3a774 100644 (file)
@@ -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<DefaultIssue> loadForComponentUuid(String componentUuid) {
-    DbSession session = dbClient.openSession(false);
-    final List<DefaultIssue> 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<DefaultIssue> 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<String> 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());
     }
   }
 }
index 945a594205abedf4512df962d984bc304c8c895d..01001bcdca87a3c8608b338d7f31aaa21e43cb12 100644 (file)
@@ -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<String> hashes = dbClient.fileSourceDao().selectLineHashes(session, effectiveUuid);
         if (hashes == null || hashes.isEmpty()) {
           return EMPTY_LINE_HASH_SEQUENCE;
         }
         return new LineHashSequence(hashes);
-      } finally {
-        MyBatis.closeQuietly(session);
       }
     }
 
index 773fec4378317bab141d67b0f61bb74bc8fdf0b8..b4700d501573817f088a54214c779834967fc56e 100644 (file)
@@ -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<CustomMeasureDto> 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);
     }
   }
 
index 471cbb27656e86e8d92d1f1fa272c6c3c435f0f9..a5f8dc934a596d6f0e1dfdc4b0688483922f4779 100644 (file)
@@ -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);
     }
   }
 
index f97ebab5ae667a80ba92d55ac0ec505dfce8595e..2af4ba6de3f739fc4e74c0482e47afdb79010858 100644 (file)
@@ -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();
     }
   }
 
index f7d0ef7780ae62a98309e241b5d7ceca12a74009..0d61acee1e246d0e74a57e82356b3167ee7f80d3 100644 (file)
@@ -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);
     }
   }
 
index 5a780ba76d8c99e09c5460819f53513457283273..25ee9915bf505f172747cd95885867907d0935f8 100644 (file)
@@ -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<DefaultIssue> issues = issueCache.traverse()) {
 
-    CloseableIterator<DefaultIssue> 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();
     }
   }
 
index 56da433976c742c42fa7b18060da9873005d90ac..0734c07c9fbec97d512dfe9a2b922b093a84b81c 100644 (file)
@@ -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);
     }
   }
 
index 92bd08ea9f3d4316bcd3917e0444b843bc9afc4a..460f7597ee6d0b6dd56202ea49408fb7962d982d 100644 (file)
@@ -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);
     }
   }
 
index 90b515d981bcb53e82c2196cbf666e2e707dfd95..f6e9a5c37e5c729916b0e0e60d83671f35cbcc6f 100644 (file)
@@ -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<DefaultIssue> 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<Boolean, List<DefaultIssue>> issuesNewOrUpdated = StreamSupport.stream(issues.spliterator(), true).collect(Collectors.groupingBy(DefaultIssue::isNew));
     List<DefaultIssue> issuesToInsert = firstNonNull(issuesNewOrUpdated.get(true), emptyList());
     List<DefaultIssue> issuesToUpdate = firstNonNull(issuesNewOrUpdated.get(false), emptyList());
-    
+
     Collection<String> inserted = insert(session, issuesToInsert, now);
     Collection<String> updated = update(issuesToUpdate, now);
-    
+
     Collection<String> issuesInsertedOrUpdated = new ArrayList<>(issuesToInsert.size() + issuesToUpdate.size());
     issuesInsertedOrUpdated.addAll(inserted);
     issuesInsertedOrUpdated.addAll(updated);
@@ -136,17 +132,14 @@ public abstract class IssueStorage {
   private Collection<String> update(List<DefaultIssue> issuesToUpdate, long now) {
     Collection<String> 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;
index c324c1776b2b4e0cbcdb9d8cb61cf9e452efca54..e2735535eac66ba825a0ab896c5dd5ea7c65aaea 100644 (file)
@@ -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;
index 4424e74a88155562f649b49b6c676e53616246c5..ff9d65d137c681f272b224cf5fa2b1bc8cd6bfd1 100644 (file)
@@ -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<MetricDto> metrics = searchMetrics(dbSession, project);
 
       writeResponse(response.newJsonWriter(), metrics);
-    } finally {
-      MyBatis.closeQuietly(dbSession);
     }
   }
 
index 0e19898196baff950066e3dae5243bf931fbb9ef..ba940ea8d8e233e1420f1f4f176070cbc54f1707 100644 (file)
@@ -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<Integer, MetricDto> metricsById = metricsById(dbSession, customMeasures);
 
       writeResponse(response, customMeasures, nbCustomMeasures, component, metricsById, usersByLogin, lastAnalysisDateMs, searchOptions, fieldsToReturn);
-    } finally {
-      MyBatis.closeQuietly(dbSession);
     }
   }
 
index 9f2b43d99834f21b1415cbbd263ec7f2a6e4f86d..fea52efaac96212820ae47f3bb2ecac41a2c7772 100644 (file)
@@ -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);
     }
   }
 
index 47985d9c634715a1e637a03c490b1f8f2774cf61..c83f72b1df745e2bad6031ce9e43f43a8839cdcd 100644 (file)
@@ -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<Metric> findAll(List<String> metricKeys) {
-    DbSession session = dbClient.openSession(false);
-    try {
+    try (DbSession session = dbClient.openSession(false)) {
       List<MetricDto> dtos = dbClient.metricDao().selectByKeys(session, metricKeys);
       return from(dtos).filter(IsEnabled.INSTANCE).transform(ToMetric.INSTANCE).toList();
-    } finally {
-      MyBatis.closeQuietly(session);
     }
   }
 
   @Override
   public Collection<Metric> findAll() {
-    DbSession session = dbClient.openSession(false);
-    try {
+    try (DbSession session = dbClient.openSession(false)) {
       List<MetricDto> dtos = dbClient.metricDao().selectEnabled(session);
       return from(dtos).transform(ToMetric.INSTANCE).toList();
-    } finally {
-      MyBatis.closeQuietly(session);
     }
   }
 
index 5a73c034e0f9d2e3aa2b6b67f938fb64194df892..c7ff63609ab38f5d8e3f37405ea3b23c4f6e544c 100644 (file)
@@ -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<String> domains = dbClient.metricDao().selectEnabledDomains(dbSession);
       JsonWriter json = response.newJsonWriter();
       json.beginObject();
       writeDomains(json, domains);
       json.endObject();
       json.close();
-    } finally {
-      MyBatis.closeQuietly(dbSession);
     }
   }
 
index 74f8901e10dbcfb0a8d7a99252d7a78c40315fb2..0a8da9280e7dd14fc95e18b296f38b5186807481 100644 (file)
@@ -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<MetricDto> 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);
     }
   }
 
index e4098ee8d0941950daf9256a506a3f32b6f953f9..2ec74c63f2d6f97bbcfeca1d7213ab68e6689d8b 100644 (file)
@@ -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<String, Object> 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);
     }
   }
 }
index 5220db7e0f34b1ef30f272c4734e2e44a3e30929..ca744aa238c89ac78b1023df15b5cadf851498f3 100644 (file)
@@ -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<Metric> 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();
   }