Changed repositories to work with SQLDroid, which seems to have very limited support for blobs, at least it didn't work when I used stream.

This commit is contained in:
2015-08-05 19:55:53 +02:00
parent b8546e28af
commit 4911c268c2
5 changed files with 37 additions and 17 deletions

View File

@ -24,6 +24,7 @@ import ch.dissem.bitmessage.ports.Inventory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.sql.*;
import java.util.LinkedList;
import java.util.List;
@ -78,8 +79,8 @@ public class JdbcInventory extends JdbcHelper implements Inventory {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT data, version FROM Inventory WHERE hash = X'" + vector + "'");
if (rs.next()) {
Blob data = rs.getBlob("data");
return Factory.getObjectMessage(rs.getInt("version"), data.getBinaryStream(), (int) data.length());
byte[] data = rs.getBytes("data");
return Factory.getObjectMessage(rs.getInt("version"), new ByteArrayInputStream(data), data.length);
} else {
LOG.info("Object requested that we don't have. IV: " + vector);
return null;
@ -107,8 +108,8 @@ public class JdbcInventory extends JdbcHelper implements Inventory {
ResultSet rs = stmt.executeQuery(query.toString());
List<ObjectMessage> result = new LinkedList<>();
while (rs.next()) {
Blob data = rs.getBlob("data");
result.add(Factory.getObjectMessage(rs.getInt("version"), data.getBinaryStream(), (int) data.length()));
byte[] data = rs.getBytes("data");
result.add(Factory.getObjectMessage(rs.getInt("version"), new ByteArrayInputStream(data), data.length));
}
return result;
} catch (Exception e) {