diff --git a/briar-api/src/org/briarproject/api/data/BdfDictionary.java b/briar-api/src/org/briarproject/api/data/BdfDictionary.java index 54a20f6f51b71fffb9f63e5d6b4c1c8e5430d7b3..113d0334c2c4fcc5797349213c99f4f9d450d3a6 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 2caa597ec65103c4da429867c878bfa82ca0ac16..a9c7a4344118ef7a3b3af4602c0d4c476aa71cfb 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 e70070391bdbcad505ac24eaf7b640e55890fca9..1de4c8ef62e41cb0c538e0ffcb0c58b08cd0eefb 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();