Skip to content

Commit 1b3741c

Browse files
committed
Update MerkleNode to support 0.4.11 changes.
1 parent 96335a7 commit 1b3741c

File tree

3 files changed

+39
-18
lines changed

3 files changed

+39
-18
lines changed

src/main/java/io/ipfs/api/IPFS.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
public class IPFS {
1616

17-
public static final Version MIN_VERSION = Version.parse("0.4.10");
17+
public static final Version MIN_VERSION = Version.parse("0.4.11");
1818
public enum PinType {all, direct, indirect, recursive}
1919
public List<String> ObjectTemplates = Arrays.asList("unixfs-dir");
2020
public List<String> ObjectPatchTypes = Arrays.asList("add-link", "rm-link", "set-data", "append-data");

src/main/java/io/ipfs/api/MerkleNode.java

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,39 @@
77
import java.util.stream.*;
88

99
public class MerkleNode {
10+
1011
public final Multihash hash;
1112
public final Optional<String> name;
1213
public final Optional<Integer> size;
14+
public final Optional<String> largeSize;
1315
public final Optional<Integer> type;
1416
public final List<MerkleNode> links;
1517
public final Optional<byte[]> data;
1618

17-
public MerkleNode(String hash) {
18-
this(hash, Optional.empty());
19-
}
20-
21-
public MerkleNode(String hash, Optional<String> name) {
22-
this(hash, name, Optional.empty(), Optional.empty(), Arrays.asList(), Optional.empty());
23-
}
24-
25-
public MerkleNode(String hash, Optional<String> name, Optional<Integer> size, Optional<Integer> type, List<MerkleNode> links, Optional<byte[]> data) {
19+
public MerkleNode(String hash,
20+
Optional<String> name,
21+
Optional<Integer> size,
22+
Optional<String> largeSize,
23+
Optional<Integer> type,
24+
List<MerkleNode> links,
25+
Optional<byte[]> data) {
2626
this.name = name;
2727
this.hash = Cid.decode(hash);
2828
this.size = size;
29+
this.largeSize = largeSize;
2930
this.type = type;
3031
this.links = links;
3132
this.data = data;
3233
}
3334

35+
public MerkleNode(String hash) {
36+
this(hash, Optional.empty());
37+
}
38+
39+
public MerkleNode(String hash, Optional<String> name) {
40+
this(hash, name, Optional.empty(), Optional.empty(), Optional.empty(), Arrays.asList(), Optional.empty());
41+
}
42+
3443
@Override
3544
public boolean equals(Object b) {
3645
if (!(b instanceof MerkleNode))
@@ -51,13 +60,25 @@ public static MerkleNode fromJSON(Object rawjson) {
5160
String hash = (String)json.get("Hash");
5261
if (hash == null)
5362
hash = (String)json.get("Key");
54-
Optional<String> name = json.containsKey("Name") ? Optional.of((String) json.get("Name")): Optional.empty();
55-
Optional<Integer> size = json.containsKey("Size") ? Optional.<Integer>empty().of((Integer) json.get("Size")): Optional.<Integer>empty().empty();
56-
Optional<Integer> type = json.containsKey("Type") ? Optional.<Integer>empty().of((Integer) json.get("Type")): Optional.<Integer>empty().empty();
63+
Optional<String> name = json.containsKey("Name") ?
64+
Optional.of((String) json.get("Name")) :
65+
Optional.empty();
66+
Object rawSize = json.get("Size");
67+
Optional<Integer> size = rawSize instanceof Integer ?
68+
Optional.of((Integer) rawSize) :
69+
Optional.empty();
70+
Optional<String> largeSize = rawSize instanceof String ?
71+
Optional.of((String) json.get("Size")) :
72+
Optional.empty();
73+
Optional<Integer> type = json.containsKey("Type") ?
74+
Optional.of((Integer) json.get("Type")) :
75+
Optional.empty();
5776
List<Object> linksRaw = (List<Object>) json.get("Links");
58-
List<MerkleNode> links = linksRaw == null ? Collections.EMPTY_LIST : linksRaw.stream().map(x -> MerkleNode.fromJSON(x)).collect(Collectors.toList());
77+
List<MerkleNode> links = linksRaw == null ?
78+
Collections.emptyList() :
79+
linksRaw.stream().map(x -> MerkleNode.fromJSON(x)).collect(Collectors.toList());
5980
Optional<byte[]> data = json.containsKey("Data") ? Optional.of(((String)json.get("Data")).getBytes()): Optional.empty();
60-
return new MerkleNode(hash, name, size, type, links, data);
81+
return new MerkleNode(hash, name, size, largeSize, type, links, data);
6182
}
6283

6384
public Object toJSON() {
@@ -69,7 +90,7 @@ public Object toJSON() {
6990
if (name.isPresent())
7091
res.put("Name", name.get());
7192
if (size.isPresent())
72-
res.put("Size", size.get());
93+
res.put("Size", size.isPresent() ? size.get() : largeSize.get());
7394
if (type.isPresent())
7495
res.put("Type", type.get());
7596
return res;

src/test/java/io/ipfs/api/APITest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -712,8 +712,8 @@ public void bootstrapTest() {
712712
public void diagTest() {
713713
try {
714714
Map config = ipfs.config.show();
715-
String val = ipfs.config.get("Datastore.Path");
716-
Map setResult = ipfs.config.set("Datastore.Path", val);
715+
String val = ipfs.config.get("Datastore.GCPeriod");
716+
Map setResult = ipfs.config.set("Datastore.GCPeriod", val);
717717
ipfs.config.replace(new NamedStreamable.ByteArrayWrapper(JSONParser.toString(config).getBytes()));
718718
// Object log = ipfs.log();
719719
String sys = ipfs.diag.sys();

0 commit comments

Comments
 (0)