From 4d4b540387a4980742c88071ea4aa9d7689a7c70 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Thu, 14 Jul 2011 19:12:44 +0100
Subject: [PATCH] Java 1.5 compatibility changes (for OSX 10.4). We depend on
 commons-io for a single method... might be worth copying the source into
 FileUtils if the license permits.

---
 .classpath                                    |  1 +
 components/net/sf/briar/db/H2Database.java    | 21 ++++++++++++-------
 components/net/sf/briar/db/JdbcDatabase.java  |  3 ++-
 .../sf/briar/invitation/InvitationWorker.java |  2 +-
 .../protocol/SigningDigestingInputStream.java |  4 ++--
 .../SigningDigestingOutputStream.java         |  4 ++--
 6 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/.classpath b/.classpath
index 2ed9bb6ee0..88eeadcf43 100644
--- a/.classpath
+++ b/.classpath
@@ -15,5 +15,6 @@
 	<classpathentry kind="lib" path="lib/test/hamcrest-core-1.1.jar"/>
 	<classpathentry kind="lib" path="lib/test/hamcrest-library-1.1.jar"/>
 	<classpathentry kind="lib" path="lib/test/jmock-2.5.1.jar"/>
+	<classpathentry kind="lib" path="lib/commons-io-2.0.1.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/components/net/sf/briar/db/H2Database.java b/components/net/sf/briar/db/H2Database.java
index 34e6647a20..82df78d049 100644
--- a/components/net/sf/briar/db/H2Database.java
+++ b/components/net/sf/briar/db/H2Database.java
@@ -1,6 +1,7 @@
 package net.sf.briar.db;
 
 import java.io.File;
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
@@ -13,6 +14,8 @@ import net.sf.briar.api.crypto.Password;
 import net.sf.briar.api.db.DatabasePassword;
 import net.sf.briar.api.db.DbException;
 
+import org.apache.commons.io.FileSystemUtils;
+
 import com.google.inject.Inject;
 
 /** Contains all the H2-specific code for the database. */
@@ -50,13 +53,17 @@ class H2Database extends JdbcDatabase {
 	}
 
 	public long getFreeSpace() throws DbException {
-		File dir = home.getParentFile();
-		long free = dir.getFreeSpace();
-		long used = getDiskSpace(dir);
-		long quota = maxSize - used;
-		long min =  Math.min(free, quota);
-		if(LOG.isLoggable(Level.FINE)) LOG.fine("Free space: " + min);
-		return min;
+		try {
+			File dir = home.getParentFile();
+			long free = FileSystemUtils.freeSpaceKb(dir.getAbsolutePath());
+			long used = getDiskSpace(dir);
+			long quota = maxSize - used;
+			long min =  Math.min(free, quota);
+			if(LOG.isLoggable(Level.FINE)) LOG.fine("Free space: " + min);
+			return min;
+		} catch(IOException e) {
+			throw new DbException(e);
+		}
 	}
 
 	@Override
diff --git a/components/net/sf/briar/db/JdbcDatabase.java b/components/net/sf/briar/db/JdbcDatabase.java
index 4e648b3518..44ba21db34 100644
--- a/components/net/sf/briar/db/JdbcDatabase.java
+++ b/components/net/sf/briar/db/JdbcDatabase.java
@@ -442,7 +442,8 @@ abstract class JdbcDatabase implements Database<Connection> {
 			ps.setBytes(4, m.getAuthor().getBytes());
 			ps.setLong(5, m.getTimestamp());
 			ps.setInt(6, m.getSize());
-			ps.setBlob(7, new ByteArrayInputStream(m.getBytes()));
+			byte[] raw = m.getBytes();
+			ps.setBinaryStream(7, new ByteArrayInputStream(raw), raw.length);
 			ps.setInt(8, 0);
 			int rowsAffected = ps.executeUpdate();
 			assert rowsAffected == 1;
diff --git a/components/net/sf/briar/invitation/InvitationWorker.java b/components/net/sf/briar/invitation/InvitationWorker.java
index cfa03930aa..9b05d6329e 100644
--- a/components/net/sf/briar/invitation/InvitationWorker.java
+++ b/components/net/sf/briar/invitation/InvitationWorker.java
@@ -75,7 +75,7 @@ class InvitationWorker implements Runnable {
 		try {
 			transports = databaseComponent.getTransports();
 		} catch(DbException e) {
-			throw new IOException(e);
+			throw new IOException(e.getMessage());
 		}
 		FileOutputStream out = new FileOutputStream(invitationDat);
 		Writer w = writerFactory.createWriter(out);
diff --git a/components/net/sf/briar/protocol/SigningDigestingInputStream.java b/components/net/sf/briar/protocol/SigningDigestingInputStream.java
index d95768eff1..a4871725f5 100644
--- a/components/net/sf/briar/protocol/SigningDigestingInputStream.java
+++ b/components/net/sf/briar/protocol/SigningDigestingInputStream.java
@@ -41,7 +41,7 @@ class SigningDigestingInputStream extends FilterInputStream {
 			try {
 				signature.update(b);
 			} catch(SignatureException e) {
-				throw new IOException(e);
+				throw new IOException(e.getMessage());
 			}
 		}
 		if(digesting) messageDigest.update(b);
@@ -52,7 +52,7 @@ class SigningDigestingInputStream extends FilterInputStream {
 			try {
 				signature.update(b, off, len);
 			} catch(SignatureException e) {
-				throw new IOException(e);
+				throw new IOException(e.getMessage());
 			}
 		}
 		if(digesting) messageDigest.update(b, off, len);
diff --git a/components/net/sf/briar/protocol/SigningDigestingOutputStream.java b/components/net/sf/briar/protocol/SigningDigestingOutputStream.java
index 5b411c63b9..6d72dc905b 100644
--- a/components/net/sf/briar/protocol/SigningDigestingOutputStream.java
+++ b/components/net/sf/briar/protocol/SigningDigestingOutputStream.java
@@ -44,7 +44,7 @@ class SigningDigestingOutputStream extends FilterOutputStream {
 			try {
 				signature.update(b, off, len);
 			} catch(SignatureException e) {
-				throw new IOException(e);
+				throw new IOException(e.getMessage());
 			}
 		}
 		if(digesting) messageDigest.update(b, off, len);
@@ -57,7 +57,7 @@ class SigningDigestingOutputStream extends FilterOutputStream {
 			try {
 				signature.update((byte) b);
 			} catch(SignatureException e) {
-				throw new IOException(e);
+				throw new IOException(e.getMessage());
 			}
 		}
 		if(digesting) messageDigest.update((byte) b);
-- 
GitLab