Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## Pending
- feat: sort `ScMap` entries by key in `Scv.toMap` following Soroban runtime ordering rules, as the network requires ScMap keys to be in ascending order. `Scv.toMap` now accepts `Map<SCVal, SCVal>`; the previous `toMap(LinkedHashMap<SCVal, SCVal>)` overload is deprecated.
- feat: add `closeTime`, `headerXdr`, and `metadataXdr` to `GetLatestLedgerResponse`.

## 2.2.3

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package org.stellar.sdk.responses.sorobanrpc;

import lombok.Value;
import org.stellar.sdk.Util;
import org.stellar.sdk.xdr.LedgerCloseMeta;
import org.stellar.sdk.xdr.LedgerHeader;

/**
* Response for JSON-RPC method getLatestLedger.
Expand All @@ -16,4 +19,30 @@ public class GetLatestLedgerResponse {
Integer protocolVersion;

Integer sequence;

Long closeTime;

/** The field can be parsed as {@link LedgerHeader} object. */
String headerXdr;

/** The field can be parsed as {@link LedgerCloseMeta} object. */
String metadataXdr;

/**
* Parses the {@code headerXdr} field from a string to an {@link LedgerHeader} object.
*
* @return the parsed {@link LedgerHeader} object
*/
public LedgerHeader parseHeaderXdr() {
return Util.parseXdr(headerXdr, LedgerHeader::fromXdrBase64);
}

/**
* Parses the {@code metadataXdr} field from a string to an {@link LedgerCloseMeta} object.
*
* @return the parsed {@link LedgerCloseMeta} object
*/
public LedgerCloseMeta parseMetadataXdr() {
return Util.parseXdr(metadataXdr, LedgerCloseMeta::fromXdrBase64);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public static class LedgerInfo {
String metadataXdr;

/**
* Parses the {@code envelopeXdr} field from a string to an {@link LedgerHeaderHistoryEntry}
* Parses the {@code headerXdr} field from a string to an {@link LedgerHeaderHistoryEntry}
* object.
*
* @return the parsed {@link LedgerHeaderHistoryEntry} object
Expand Down
10 changes: 6 additions & 4 deletions src/test/java/org/stellar/sdk/SorobanServerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -883,10 +883,12 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest)
HttpUrl baseUrl = mockWebServer.url("");
SorobanServer server = new SorobanServer(baseUrl.toString());
GetLatestLedgerResponse resp = server.getLatestLedger();
assertEquals(resp.getId(), "e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a");
assertEquals(resp.getProtocolVersion().intValue(), 20);
assertEquals(resp.getSequence().intValue(), 24170);

assertEquals(resp.getId(), "98908807544d6658094c94e00c1cff99e341b96ee1c59abbda39d5f4a3b20cdc");
assertEquals(resp.getProtocolVersion().intValue(), 25);
assertEquals(resp.getSequence().intValue(), 1283415);
assertEquals(resp.getCloseTime().longValue(), 1772416629L);
assertEquals(resp.parseHeaderXdr().toXdrBase64(), resp.getHeaderXdr());
assertEquals(resp.parseMetadataXdr().toXdrBase64(), resp.getMetadataXdr());
server.close();
mockWebServer.close();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,15 @@ public void testDeserialize() throws IOException {
json, new TypeToken<SorobanRpcResponse<GetLatestLedgerResponse>>() {}.getType());
assertEquals(
getLatestLedgerResponse.getResult().getId(),
"e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a");
assertEquals(getLatestLedgerResponse.getResult().getProtocolVersion().intValue(), 20);
assertEquals(getLatestLedgerResponse.getResult().getSequence().intValue(), 24170);
"98908807544d6658094c94e00c1cff99e341b96ee1c59abbda39d5f4a3b20cdc");
assertEquals(getLatestLedgerResponse.getResult().getProtocolVersion().intValue(), 25);
assertEquals(getLatestLedgerResponse.getResult().getSequence().intValue(), 1283415);
assertEquals(getLatestLedgerResponse.getResult().getCloseTime().longValue(), 1772416629L);
assertEquals(
getLatestLedgerResponse.getResult().parseHeaderXdr().toXdrBase64(),
getLatestLedgerResponse.getResult().getHeaderXdr());
assertEquals(
getLatestLedgerResponse.getResult().parseMetadataXdr().toXdrBase64(),
getLatestLedgerResponse.getResult().getMetadataXdr());
}
}
11 changes: 7 additions & 4 deletions src/test/resources/responses/sorobanrpc/get_latest_ledger.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
"jsonrpc": "2.0",
"id": "198cb1a8-9104-4446-a269-88bf000c2721",
"result": {
"id": "e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a",
"protocolVersion": "20",
"sequence": 24170
"id": "98908807544d6658094c94e00c1cff99e341b96ee1c59abbda39d5f4a3b20cdc",
"protocolVersion": 25,
"sequence": 1283415,
"closeTime": "1772416629",
"headerXdr": "AAAAGTYWd+lOrCsVq+GXQy5TjE97DP9QDwD1T/r+ImC+1XbIZDnn8RGXlzp9MhECy6c1btIVJZ/vov4a9P9sRVVdxN8AAAAAaaTudQAAAAAAAAABAAAAALVdELK7fShO1cA6R6XhtZDJD1eDVUccxFB7voIE0jyLAAAAQNsZy74r8hJxSXw7Z/qQ+68lJXXPbQBR6OdhhqivbXCBI+XiUiqCjQoe9+DvcC6RRO0Ww1kzfWY1xXZd9PabPAW7Hy0+slf43SvgJTpBFa9A48kJHTitL09m2e0L6H5PKMQeR5igl7T4MXIqv/CDip6XT8Ik2a4IkVH7m38vCeOiABOVVw3gtrOnZAAAAAAAd5o4/0oAAAAAAAAAAAAAji4AAABkAExLQAAAAMizXTnFjxaF/8p9DrSQGwJAXpoSmbtVQ+s2/KENuc4WZiERheyhetuu8IJGyZZGr2uO2vPUd9E1QdMyFqhW2N5lWAl22ayL+G5n2OVBAIaRbMe+ox2f7v/gad3RsvnqB6mHyauNviJjTNINDfGUBvxUaSJhI7oAGLFf/lEZIrT7RAAAAAA=",
"metadataXdr": "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"
}
}
}
11 changes: 7 additions & 4 deletions src/test/resources/soroban_server/get_latest_ledger.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
"jsonrpc": "2.0",
"id": "198cb1a8-9104-4446-a269-88bf000c2721",
"result": {
"id": "e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a",
"protocolVersion": "20",
"sequence": 24170
"id": "98908807544d6658094c94e00c1cff99e341b96ee1c59abbda39d5f4a3b20cdc",
"protocolVersion": 25,
"sequence": 1283415,
"closeTime": "1772416629",
"headerXdr": "AAAAGTYWd+lOrCsVq+GXQy5TjE97DP9QDwD1T/r+ImC+1XbIZDnn8RGXlzp9MhECy6c1btIVJZ/vov4a9P9sRVVdxN8AAAAAaaTudQAAAAAAAAABAAAAALVdELK7fShO1cA6R6XhtZDJD1eDVUccxFB7voIE0jyLAAAAQNsZy74r8hJxSXw7Z/qQ+68lJXXPbQBR6OdhhqivbXCBI+XiUiqCjQoe9+DvcC6RRO0Ww1kzfWY1xXZd9PabPAW7Hy0+slf43SvgJTpBFa9A48kJHTitL09m2e0L6H5PKMQeR5igl7T4MXIqv/CDip6XT8Ik2a4IkVH7m38vCeOiABOVVw3gtrOnZAAAAAAAd5o4/0oAAAAAAAAAAAAAji4AAABkAExLQAAAAMizXTnFjxaF/8p9DrSQGwJAXpoSmbtVQ+s2/KENuc4WZiERheyhetuu8IJGyZZGr2uO2vPUd9E1QdMyFqhW2N5lWAl22ayL+G5n2OVBAIaRbMe+ox2f7v/gad3RsvnqB6mHyauNviJjTNINDfGUBvxUaSJhI7oAGLFf/lEZIrT7RAAAAAA=",
"metadataXdr": "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"
}
}
}
Loading