summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2014-12-22 14:41:13 +0100
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2014-12-22 14:41:24 +0100
commitc41a8bb85c96cea931a592bbc7e9155a738fdfb7 (patch)
tree4500d1c45ecaa2ae17ceb3dd3502457457cf85e8
parent4b69d42d7f83aa22853dffbf2b49acda85c7ef99 (diff)
downloadsonarqube-c41a8bb85c96cea931a592bbc7e9155a738fdfb7.tar.gz
sonarqube-c41a8bb85c96cea931a592bbc7e9155a738fdfb7.zip
use byte[] instead of a stream when inserting a report in database
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java13
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java18
2 files changed, 9 insertions, 22 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java b/server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java
index 7954090cefe..fd2ac2de5a3 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java
@@ -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
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java
index 8f82068a82e..9dd4561e0b1 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java
@@ -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