]> source.dussan.org Git - sonarqube.git/commitdiff
use byte[] instead of a stream when inserting a report in database
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Mon, 22 Dec 2014 13:41:13 +0000 (14:41 +0100)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Mon, 22 Dec 2014 13:41:24 +0000 (14:41 +0100)
server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java
server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java

index 7954090cefe06794ea3e3c18c0ae548f50260dad..fd2ac2de5a3c762defcf7827d0bd5edcdeb3b340 100644 (file)
@@ -21,6 +21,7 @@
 package org.sonar.server.computation.db;
 
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.io.ByteStreams;
 import org.apache.commons.io.IOUtils;
 import org.sonar.api.utils.System2;
 import org.sonar.api.utils.TempFolder;
@@ -137,7 +138,7 @@ public class AnalysisReportDao extends BaseDao<AnalysisReportMapper, AnalysisRep
       ps.setString(1, report.getProjectKey());
       ps.setLong(2, report.getSnapshotId());
       ps.setString(3, report.getStatus().toString());
-      setDataStream(ps, 4, report.getData());
+      setData(ps, 4, report.getData());
       ps.setTimestamp(5, dateToTimestamp(report.getCreatedAt()));
       ps.setTimestamp(6, dateToTimestamp(report.getUpdatedAt()));
       ps.setTimestamp(7, dateToTimestamp(report.getStartedAt()));
@@ -156,12 +157,12 @@ public class AnalysisReportDao extends BaseDao<AnalysisReportMapper, AnalysisRep
     return report;
   }
 
-  private void setDataStream(PreparedStatement ps, int parameterIndex, @Nullable InputStream reportDataStream) throws IOException, SQLException {
-    int streamSizeEstimate = 1;
-    if (reportDataStream != null) {
-      streamSizeEstimate = reportDataStream.available();
+  private void setData(PreparedStatement ps, int parameterIndex, @Nullable InputStream reportDataStream) throws IOException, SQLException {
+    if (reportDataStream == null) {
+      ps.setBytes(parameterIndex, null);
+    } else {
+      ps.setBytes(parameterIndex, ByteStreams.toByteArray(reportDataStream));
     }
-    ps.setBinaryStream(parameterIndex, reportDataStream, streamSizeEstimate);
   }
 
   @CheckForNull
index 8f82068a82e095ec212155a6ce41cce20432e1a5..9dd4561e0b1f40dc46d75af446df850caad5c7fc 100644 (file)
@@ -36,11 +36,7 @@ import org.sonar.core.persistence.MyBatis;
 import org.sonar.test.DbTests;
 
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -93,22 +89,12 @@ public class AnalysisReportDaoTest {
   }
 
   @Test
-  public void insert_report_data() throws Exception {
+  public void insert_report_data_do_not_throw_exception() throws Exception {
     db.prepareDbUnit(getClass(), "empty.xml");
     AnalysisReportDto report = newDefaultAnalysisReport()
-      .setData(IOUtils.toInputStream("default-project"));
+      .setData(getClass().getResource("/org/sonar/server/computation/db/AnalysisReportDaoTest/zip.zip").openStream());
 
     sut.insert(session, report);
-
-    assertThatReportDataIsEqualTo("default-project");
-  }
-
-  private void assertThatReportDataIsEqualTo(String reportData) throws SQLException, IOException {
-    PreparedStatement ps = session.getConnection().prepareStatement("select report_data from analysis_reports");
-    ResultSet rs = ps.executeQuery();
-    rs.next();
-    InputStream reportDataStream = rs.getBinaryStream(1);
-    assertThat(IOUtils.toString(reportDataStream)).isEqualTo(reportData);
   }
 
   @Test