diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2014-12-22 14:41:13 +0100 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2014-12-22 14:41:24 +0100 |
commit | c41a8bb85c96cea931a592bbc7e9155a738fdfb7 (patch) | |
tree | 4500d1c45ecaa2ae17ceb3dd3502457457cf85e8 | |
parent | 4b69d42d7f83aa22853dffbf2b49acda85c7ef99 (diff) | |
download | sonarqube-c41a8bb85c96cea931a592bbc7e9155a738fdfb7.tar.gz sonarqube-c41a8bb85c96cea931a592bbc7e9155a738fdfb7.zip |
use byte[] instead of a stream when inserting a report in database
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 |