From 76e6b7cfa9054b56205ef7c1c97447b0d5b80bd5 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Fri, 26 Feb 2016 10:28:40 +0000
Subject: [PATCH] Convert BDF types in lists and dictionaries.

---
 .../src/org/briarproject/api/data/BdfDictionary.java  | 11 +++++++++++
 briar-api/src/org/briarproject/api/data/BdfList.java  | 11 +++++++++++
 .../org/briarproject/data/MetadataEncoderImpl.java    |  2 ++
 3 files changed, 24 insertions(+)

diff --git a/briar-api/src/org/briarproject/api/data/BdfDictionary.java b/briar-api/src/org/briarproject/api/data/BdfDictionary.java
index 54a20f6f51..113d0334c2 100644
--- a/briar-api/src/org/briarproject/api/data/BdfDictionary.java
+++ b/briar-api/src/org/briarproject/api/data/BdfDictionary.java
@@ -1,5 +1,6 @@
 package org.briarproject.api.data;
 
+import org.briarproject.api.Bytes;
 import org.briarproject.api.FormatException;
 
 import java.util.Hashtable;
@@ -23,24 +24,32 @@ public class BdfDictionary extends Hashtable<String, Object> {
 	public Long getInteger(String key) throws FormatException {
 		Object o = get(key);
 		if (o instanceof Long) return (Long) o;
+		if (o instanceof Integer) return ((Integer) o).longValue();
+		if (o instanceof Short) return ((Short) o).longValue();
+		if (o instanceof Byte) return ((Byte) o).longValue();
 		throw new FormatException();
 	}
 
 	public Long getInteger(String key, Long defaultValue) {
 		Object o = get(key);
 		if (o instanceof Long) return (Long) o;
+		if (o instanceof Integer) return ((Integer) o).longValue();
+		if (o instanceof Short) return ((Short) o).longValue();
+		if (o instanceof Byte) return ((Byte) o).longValue();
 		return defaultValue;
 	}
 
 	public Double getFloat(String key) throws FormatException {
 		Object o = get(key);
 		if (o instanceof Double) return (Double) o;
+		if (o instanceof Float) return ((Float) o).doubleValue();
 		throw new FormatException();
 	}
 
 	public Double getFloat(String key, Double defaultValue) {
 		Object o = get(key);
 		if (o instanceof Double) return (Double) o;
+		if (o instanceof Float) return ((Float) o).doubleValue();
 		return defaultValue;
 	}
 
@@ -59,12 +68,14 @@ public class BdfDictionary extends Hashtable<String, Object> {
 	public byte[] getRaw(String key) throws FormatException {
 		Object o = get(key);
 		if (o instanceof byte[]) return (byte[]) o;
+		if (o instanceof Bytes) return ((Bytes) o).getBytes();
 		throw new FormatException();
 	}
 
 	public byte[] getRaw(String key, byte[] defaultValue) {
 		Object o = get(key);
 		if (o instanceof byte[]) return (byte[]) o;
+		if (o instanceof Bytes) return ((Bytes) o).getBytes();
 		return defaultValue;
 	}
 
diff --git a/briar-api/src/org/briarproject/api/data/BdfList.java b/briar-api/src/org/briarproject/api/data/BdfList.java
index 2caa597ec6..a9c7a43441 100644
--- a/briar-api/src/org/briarproject/api/data/BdfList.java
+++ b/briar-api/src/org/briarproject/api/data/BdfList.java
@@ -1,5 +1,6 @@
 package org.briarproject.api.data;
 
+import org.briarproject.api.Bytes;
 import org.briarproject.api.FormatException;
 
 import java.util.Vector;
@@ -21,24 +22,32 @@ public class BdfList extends Vector<Object> {
 	public Long getInteger(int index) throws FormatException {
 		Object o = get(index);
 		if (o instanceof Long) return (Long) o;
+		if (o instanceof Integer) return ((Integer) o).longValue();
+		if (o instanceof Short) return ((Short) o).longValue();
+		if (o instanceof Byte) return ((Byte) o).longValue();
 		throw new FormatException();
 	}
 
 	public Long getInteger(int index, Long defaultValue) {
 		Object o = get(index);
 		if (o instanceof Long) return (Long) o;
+		if (o instanceof Integer) return ((Integer) o).longValue();
+		if (o instanceof Short) return ((Short) o).longValue();
+		if (o instanceof Byte) return ((Byte) o).longValue();
 		return defaultValue;
 	}
 
 	public Double getFloat(int index) throws FormatException {
 		Object o = get(index);
 		if (o instanceof Double) return (Double) o;
+		if (o instanceof Float) return ((Float) o).doubleValue();
 		throw new FormatException();
 	}
 
 	public Double getFloat(int index, Double defaultValue) {
 		Object o = get(index);
 		if (o instanceof Double) return (Double) o;
+		if (o instanceof Float) return ((Float) o).doubleValue();
 		return defaultValue;
 	}
 
@@ -57,12 +66,14 @@ public class BdfList extends Vector<Object> {
 	public byte[] getRaw(int index) throws FormatException {
 		Object o = get(index);
 		if (o instanceof byte[]) return (byte[]) o;
+		if (o instanceof Bytes) return ((Bytes) o).getBytes();
 		throw new FormatException();
 	}
 
 	public byte[] getRaw(int index, byte[] defaultValue) {
 		Object o = get(index);
 		if (o instanceof byte[]) return (byte[]) o;
+		if (o instanceof Bytes) return ((Bytes) o).getBytes();
 		return defaultValue;
 	}
 
diff --git a/briar-core/src/org/briarproject/data/MetadataEncoderImpl.java b/briar-core/src/org/briarproject/data/MetadataEncoderImpl.java
index e70070391b..1de4c8ef62 100644
--- a/briar-core/src/org/briarproject/data/MetadataEncoderImpl.java
+++ b/briar-core/src/org/briarproject/data/MetadataEncoderImpl.java
@@ -1,5 +1,6 @@
 package org.briarproject.data;
 
+import org.briarproject.api.Bytes;
 import org.briarproject.api.FormatException;
 import org.briarproject.api.data.BdfDictionary;
 import org.briarproject.api.data.MetadataEncoder;
@@ -62,6 +63,7 @@ class MetadataEncoderImpl implements MetadataEncoder {
 		else if (o instanceof Double) encodeFloat(out, (Double) o);
 		else if (o instanceof String) encodeString(out, (String) o);
 		else if (o instanceof byte[]) encodeRaw(out, (byte[]) o);
+		else if (o instanceof Bytes) encodeRaw(out, ((Bytes) o).getBytes());
 		else if (o instanceof List) encodeList(out, (List) o);
 		else if (o instanceof Map) encodeDictionary(out, (Map) o);
 		else throw new FormatException();
-- 
GitLab