diff --git a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java index 829413717c..97deb7339f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java @@ -615,31 +615,42 @@ public class MetaInfo if (_log.shouldLog(Log.WARN)) _log.warn("Creating new infomap", new Exception()); // otherwise we must create it - Map info = new HashMap(); - info.put("name", name); + Map info = new HashMap(); + info.put("name", new BEValue(DataHelper.getUTF8(name))); if (name_utf8 != null) - info.put("name.utf-8", name_utf8); + info.put("name.utf-8", new BEValue(DataHelper.getUTF8(name_utf8))); // BEP 27 if (privateTorrent) - info.put("private", "1"); + info.put("private", new BEValue(DataHelper.getUTF8("1"))); - info.put("piece length", Integer.valueOf(piece_length)); - info.put("pieces", piece_hashes); + info.put("piece length", new BEValue(Integer.valueOf(piece_length))); + info.put("pieces", new BEValue(piece_hashes)); if (files == null) - info.put("length", Long.valueOf(length)); + info.put("length", new BEValue(Long.valueOf(length))); else { - List l = new ArrayList(); + List l = new ArrayList(); for (int i = 0; i < files.size(); i++) { - Map file = new HashMap(); - file.put("path", files.get(i)); - if ( (files_utf8 != null) && (files_utf8.size() > i) ) - file.put("path.utf-8", files_utf8.get(i)); - file.put("length", lengths.get(i)); - l.add(file); + Map file = new HashMap(); + List fi = files.get(i); + List befiles = new ArrayList(fi.size()); + for (int j = 0; j < fi.size(); j++) { + befiles.add(new BEValue(DataHelper.getUTF8(fi.get(j)))); + } + file.put("path", new BEValue(befiles)); + if ( (files_utf8 != null) && (files_utf8.size() > i) ) { + List fiu = files_utf8.get(i); + List beufiles = new ArrayList(fiu.size()); + for (int j = 0; j < fiu.size(); j++) { + beufiles.add(new BEValue(DataHelper.getUTF8(fiu.get(j)))); + } + file.put("path.utf-8", new BEValue(beufiles)); + } + file.put("length", new BEValue(lengths.get(i))); + l.add(new BEValue(file)); } - info.put("files", l); + info.put("files", new BEValue(l)); } // TODO if we add the ability for other keys in the first constructor diff --git a/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java b/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java index db00813641..5384154d1b 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java +++ b/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java @@ -308,7 +308,7 @@ public class BDecoder + (char)c + "'"); indicator = 0; - Map result = new HashMap(); + Map result = new HashMap(); c = getNextIndicator(); while (c != 'e') { diff --git a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java index 4cae2881ae..eeee145d78 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java +++ b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java @@ -49,12 +49,12 @@ public class BEValue this.value = value; } - public BEValue(List value) + public BEValue(List value) { this.value = value; } - public BEValue(Map value) + public BEValue(Map value) { this.value = value; } @@ -146,7 +146,7 @@ public class BEValue { try { - return (List)value; + return (List)value; } catch (ClassCastException cce) { @@ -163,7 +163,7 @@ public class BEValue { try { - return (Map)value; + return (Map)value; } catch (ClassCastException cce) {